ETH Price: $2,660.96 (+1.33%)

Token

Insidual PLT Token (DUAL)
 

Overview

Max Total Supply

88,681.253503643823191692 DUAL

Holders

159

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.8 DUAL

Value
$0.00
0x7817350535498fe89ed4023c023e707ea823dd6f
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:
InsidualPLTToken

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-06-28
*/

// Insidual Token $DUAL - A DEFLATIONARY TOKEN WITH A PURPOSE V3
// Inspired by the open source project SHUFFLE
//--------------------------------------------

pragma solidity ^0.5.17;


contract Ownable {
    address public owner;

    event TransferOwnership(address _from, address _to);

    constructor() public {
        owner = msg.sender;
        emit TransferOwnership(address(0), msg.sender);
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "only owner");
        _;
    }

    function setOwner(address _owner) external onlyOwner {
        emit TransferOwnership(owner, _owner);
        owner = _owner;
    }
}

pragma solidity ^0.5.17;


contract StorageUnit {
    address private owner;
    mapping(bytes32 => bytes32) private store;

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

    function write(bytes32 _key, bytes32 _value) external {
        /* solium-disable-next-line */
        require(msg.sender == owner);
        store[_key] = _value;
    }

    function read(bytes32 _key) external view returns (bytes32) {
        return store[_key];
    }
}

pragma solidity ^0.5.17;


library IsContract {
    function isContract(address _addr) internal view returns (bool) {
        bytes32 codehash;
        /* solium-disable-next-line */
        assembly { codehash := extcodehash(_addr) }
        return codehash != bytes32(0) && codehash != bytes32(0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470);
    }
}

pragma solidity ^0.5.17;


library DistributedStorage {
    function contractSlot(bytes32 _struct) private view returns (address) {
        return address(
            uint256(
                keccak256(
                    abi.encodePacked(
                        byte(0xff),
                        address(this),
                        _struct,
                        keccak256(type(StorageUnit).creationCode)
                    )
                )
            )
        );
    }

    function deploy(bytes32 _struct) private {
        bytes memory slotcode = type(StorageUnit).creationCode;
        /* solium-disable-next-line */
        assembly{ pop(create2(0, add(slotcode, 0x20), mload(slotcode), _struct)) }
    }

    function write(
        bytes32 _struct,
        bytes32 _key,
        bytes32 _value
    ) internal {
        StorageUnit store = StorageUnit(contractSlot(_struct));
        if (!IsContract.isContract(address(store))) {
            deploy(_struct);
        }

        /* solium-disable-next-line */
        (bool success, ) = address(store).call(
            abi.encodeWithSelector(
                store.write.selector,
                _key,
                _value
            )
        );

        require(success, "error writing storage");
    }

    function read(
        bytes32 _struct,
        bytes32 _key
    ) internal view returns (bytes32) {
        StorageUnit store = StorageUnit(contractSlot(_struct));
        if (!IsContract.isContract(address(store))) {
            return bytes32(0);
        }

        /* solium-disable-next-line */
        (bool success, bytes memory data) = address(store).staticcall(
            abi.encodeWithSelector(
                store.read.selector,
                _key
            )
        );

        require(success, "error reading storage");
        return abi.decode(data, (bytes32));
    }
}

pragma solidity ^0.5.17;


contract Inject {
    bytes32 private stub;

    modifier requestGas(uint256 _factor) {
        if (tx.gasprice == 0 || gasleft() > block.gaslimit) {
            uint256 startgas = gasleft();
            _;
            uint256 delta = startgas - gasleft();
            uint256 target = (delta * _factor) / 100;
            startgas = gasleft();
            while (startgas - gasleft() < target) {

                stub = keccak256(abi.encodePacked(stub));
            }
        } else {
            _;
        }
    }
}

pragma solidity ^0.5.17;


interface IERC20 {
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
    function transfer(address _to, uint _value) external returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool success);
    function allowance(address _owner, address _spender) external view returns (uint256 remaining);
    function approve(address _spender, uint256 _value) external returns (bool success);
    function balanceOf(address _owner) external view returns (uint256 balance);
}

pragma solidity ^0.5.17;


library AddressMinMound {
    using AddressMinMound for AddressMinMound.Mound;

    struct Mound {
        uint256[] entries;
        mapping(address => uint256) index;
    }

    function initialize(Mound storage _mound) internal {
        require(_mound.entries.length == 0, "already initialized");
        _mound.entries.push(0);
    }

    function encode(address _addr, uint256 _value) internal pure returns (uint256 _entry) {
        /* solium-disable-next-line */
        assembly {
            _entry := not(or(and(0xffffffffffffffffffffffffffffffffffffffff, _addr), shl(160, _value)))
        }
    }

    function decode(uint256 _entry) internal pure returns (address _addr, uint256 _value) {
        /* solium-disable-next-line */
        assembly {
            let entry := not(_entry)
            _addr := and(entry, 0xffffffffffffffffffffffffffffffffffffffff)
            _value := shr(160, entry)
        }
    }

    function decodeAddress(uint256 _entry) internal pure returns (address _addr) {
        /* solium-disable-next-line */
        assembly {
            _addr := and(not(_entry), 0xffffffffffffffffffffffffffffffffffffffff)
        }
    }

    function top(Mound storage _mound) internal view returns(address, uint256) {
        if (_mound.entries.length < 2) {
            return (address(0), 0);
        }

        return decode(_mound.entries[1]);
    }

    function has(Mound storage _mound, address _addr) internal view returns (bool) {
        return _mound.index[_addr] != 0;
    }

    function size(Mound storage _mound) internal view returns (uint256) {
        return _mound.entries.length - 1;
    }

    function entry(Mound storage _mound, uint256 _i) internal view returns (address, uint256) {
        return decode(_mound.entries[_i + 1]);
    }

    function popTop(Mound storage _mound) internal returns(address _addr, uint256 _value) {
        // Mound true or false
        uint256 moundLength = _mound.entries.length;
        require(moundLength > 1, "The mound does not exist");

        // Origin Mound Value
        (_addr, _value) = decode(_mound.entries[1]);
        _mound.index[_addr] = 0;

        if (moundLength == 2) {
            _mound.entries.length = 1;
        } else {
            uint256 val = _mound.entries[moundLength - 1];
            _mound.entries[1] = val;
            _mound.entries.length = moundLength - 1;

            uint256 ind = 1;

            ind = _mound.deflatIt(ind, val);

            _mound.index[decodeAddress(val)] = ind;
        }
    }

    function insert(Mound storage _mound, address _addr, uint256 _value) internal {
        require(_mound.index[_addr] == 0, "The entry already exists");

        uint256 encoded = encode(_addr, _value);
        _mound.entries.push(encoded);

        uint256 currentIndex = _mound.entries.length - 1;

        currentIndex = _mound.inflatIt(currentIndex, encoded);

        _mound.index[_addr] = currentIndex;
    }

    function update(Mound storage _mound, address _addr, uint256 _value) internal {
        uint256 ind = _mound.index[_addr];
        require(ind != 0, "The entry does not exist");

        uint256 can = encode(_addr, _value);
        uint256 val = _mound.entries[ind];
        uint256 newInd;

        if (can < val) {
            // deflate It
            newInd = _mound.deflatIt(ind, can);
        } else if (can > val) {
            // inflate It
            newInd = _mound.inflatIt(ind, can);
        } else {

            return;
        }

        _mound.entries[newInd] = can;

        if (newInd != ind) {
            _mound.index[_addr] = newInd;
        }
    }

    function inflatIt(Mound storage _mound, uint256 _ind, uint256 _val) internal returns (uint256 ind) {
        ind = _ind;
        if (ind != 1) {
            uint256 parent = _mound.entries[ind / 2];
            while (parent < _val) {
                (_mound.entries[ind / 2], _mound.entries[ind]) = (_val, parent);

                _mound.index[decodeAddress(parent)] = ind;

                ind = ind / 2;
                if (ind == 1) {
                    break;
                }
                parent = _mound.entries[ind / 2];
            }
        }
    }

    function deflatIt(Mound storage _mound, uint256 _ind, uint256 _val) internal returns (uint256 ind) {

        ind = _ind;

        uint256 lenght = _mound.entries.length;
        uint256 target = lenght - 1;

        while (ind * 2 < lenght) {

            uint256 j = ind * 2;

            uint256 leftChild = _mound.entries[j];

            uint256 childValue;

            if (target > j) {

                uint256 rightChild = _mound.entries[j + 1];

                if (leftChild < rightChild) {
                    childValue = rightChild;
                    j = j + 1;
                } else {

                    childValue = leftChild;
                }
            } else {

                childValue = leftChild;
            }

            if (_val > childValue) {
                break;
            }

            (_mound.entries[ind], _mound.entries[j]) = (childValue, _val);

            _mound.index[decodeAddress(childValue)] = ind;

            ind = j;
        }
    }
}

pragma solidity ^0.5.17;


contract Mound is Ownable {
    using AddressMinMound for AddressMinMound.Mound;

    // Mound
    AddressMinMound.Mound private mound;

    // Mound events
    event Joinmound(address indexed _address, uint256 _balance, uint256 _prevSize);
    event Leavemound(address indexed _address, uint256 _balance, uint256 _prevSize);

    uint256 public constant TOP_SIZE = 100;

    constructor() public {
        mound.initialize();
    }

    function topSize() external pure returns (uint256) {
        return TOP_SIZE;
    }

    function addressAt(uint256 _i) external view returns (address addr) {
        (addr, ) = mound.entry(_i);
    }

    function indexOf(address _addr) external view returns (uint256) {
        return mound.index[_addr];
    }

    function entry(uint256 _i) external view returns (address, uint256) {
        return mound.entry(_i);
    }

    function top() external view returns (address, uint256) {
        return mound.top();
    }

    function size() external view returns (uint256) {
        return mound.size();
    }

    function update(address _addr, uint256 _new) external onlyOwner {
        uint256 _size = mound.size();

        if (_size == 0) {
            emit Joinmound(_addr, _new, 0);
            mound.insert(_addr, _new);
            return;
        }

        (, uint256 lastBal) = mound.top();
        if (mound.has(_addr)) {
            mound.update(_addr, _new);
             if (_new == 0) {
                mound.popTop();
                emit Leavemound(_addr, 0, _size);
            }
        } else {

            if (_new != 0 && (_size < TOP_SIZE || lastBal < _new)) {
        
                if (_size >= TOP_SIZE) {
                    (address _poped, uint256 _balance) = mound.popTop();
                    emit Leavemound(_poped, _balance, _size);
                }

                // New
                mound.insert(_addr, _new);
                emit Joinmound(_addr, _new, _size);
            }
        }
    }
}

pragma solidity ^0.5.17;


contract InsidualPLTToken is Ownable, Inject, IERC20 {
    using DistributedStorage for bytes32;
    using SafeMath for uint256;

    // Distribution
    event Choosen(address indexed _addr, uint256 _value);

    // Org
    event SetName(string _prev, string _new);
    event SetExtraGas(uint256 _prev, uint256 _new);
    event Setmound(address _prev, address _new);
    event WhitelistFrom(address _addr, bool _whitelisted);
    event WhitelistTo(address _addr, bool _whitelisted);

    uint256 public totalSupply;

    bytes32 private constant BALANCE_KEY = keccak256("balance");

    // Mechanism
    uint256 public constant FEE = 50;

    // Token
    string public name = "Insidual PLT Token";
    string public constant symbol = "DUAL";
    uint8 public constant decimals = 18;

    // fee whitelist
    mapping(address => bool) public whitelistFrom;
    mapping(address => bool) public whitelistTo;

    // mound
    Mound public mound;

    // internal
    uint256 public extraGas;
    bool inited;

    function init(
        address _to,
        uint256 _amount
    ) external {
        // Init limited to one
        assert(!inited);
        inited = true;

        assert(totalSupply == 0);
        assert(address(mound) == address(0));

        // Create mound
        mound = new Mound();
        emit Setmound(address(0), address(mound));

        extraGas = 15;
        emit SetExtraGas(0, extraGas);
        emit Transfer(address(0), _to, _amount);
        _setBalance(_to, _amount);
        totalSupply = _amount;
    }

    // Get Functions

    function _toKey(address a) internal pure returns (bytes32) {
        return bytes32(uint256(a));
    }

    function _balanceOf(address _addr) internal view returns (uint256) {
        return uint256(_toKey(_addr).read(BALANCE_KEY));
    }

    function _allowance(address _addr, address _spender) internal view returns (uint256) {
        return uint256(_toKey(_addr).read(keccak256(abi.encodePacked("allowance", _spender))));
    }

    function _nonce(address _addr, uint256 _cat) internal view returns (uint256) {
        return uint256(_toKey(_addr).read(keccak256(abi.encodePacked("nonce", _cat))));
    }

    // Set Functions

    function _setAllowance(address _addr, address _spender, uint256 _value) internal {
        _toKey(_addr).write(keccak256(abi.encodePacked("allowance", _spender)), bytes32(_value));
    }

    function _setNonce(address _addr, uint256 _cat, uint256 _value) internal {
        _toKey(_addr).write(keccak256(abi.encodePacked("nonce", _cat)), bytes32(_value));
    }

    function _setBalance(address _addr, uint256 _balance) internal {
        _toKey(_addr).write(BALANCE_KEY, bytes32(_balance));
        mound.update(_addr, _balance);
    }

    // Distribution Functions

    function _isWhitelisted(address _from, address _to) internal view returns (bool) {
        return whitelistFrom[_from]||whitelistTo[_to];
    }

    function _random(address _s1, uint256 _s2, uint256 _s3, uint256 _max) internal pure returns (uint256) {
        uint256 rand = uint256(keccak256(abi.encodePacked(_s1, _s2, _s3)));
        return rand % (_max + 1);
    }

    function _pickChoosen(address _from, uint256 _value) internal returns (address choosen) {
        uint256 magnitude = Math.orderOfMagnitude(_value);
        uint256 nonce = _nonce(_from, magnitude);
        _setNonce(_from, magnitude, nonce + 1);
        // choose from mound
        choosen = mound.addressAt(_random(_from, nonce, magnitude, mound.size() - 1));
    }

    function _transferFrom(address _operator, address _from, address _to, uint256 _value, bool _payFee) internal {
        if (_value == 0) {
            emit Transfer(_from, _to, 0);
            return;
        }

        uint256 balanceFrom = _balanceOf(_from);
        require(balanceFrom >= _value, "balance not enough");

        if (_from != _operator) {
            uint256 allowanceFrom = _allowance(_from, _operator);
            if (allowanceFrom != uint(-1)) {
                require(allowanceFrom >= _value, "allowance not enough");
                _setAllowance(_from, _operator, allowanceFrom.sub(_value));
            }
        }

        uint256 receive = _value;
        uint256 burn = 0;
        uint256 distribute = 0;

        _setBalance(_from, balanceFrom.sub(_value));

        // Fees Calculation
        if (_payFee || !_isWhitelisted(_from, _to)) {
            // SAME for BURN and DISTRIBUTION
            burn = _value.divRound(FEE);
            distribute = _value == 1 ? 0 : burn;

            receive = receive.sub(burn.add(distribute));

            // Burn 
            totalSupply = totalSupply.sub(burn);
            emit Transfer(_from, address(0), burn);

            // Distribute to choosen add
            address choosen = _pickChoosen(_from, _value);
            // Tokens to choosen
            _setBalance(choosen, _balanceOf(choosen).add(distribute));
            emit Choosen(choosen, distribute);
            emit Transfer(_from, choosen, distribute);
        }

        assert(burn.add(distribute).add(receive) == _value);

        _setBalance(_to, _balanceOf(_to).add(receive));
        emit Transfer(_from, _to, receive);
    }

    // Org functions

    function setWhitelistedTo(address _addr, bool _whitelisted) external onlyOwner {
        emit WhitelistTo(_addr, _whitelisted);
        whitelistTo[_addr] = _whitelisted;
    }

    function setWhitelistedFrom(address _addr, bool _whitelisted) external onlyOwner {
        emit WhitelistFrom(_addr, _whitelisted);
        whitelistFrom[_addr] = _whitelisted;
    }

    function setName(string calldata _name) external onlyOwner {
        emit SetName(name, _name);
        name = _name;
    }

    function setExtraGas(uint256 _gas) external onlyOwner {
        emit SetExtraGas(extraGas, _gas);
        extraGas = _gas;
    }

    function setmound(Mound _mound) external onlyOwner {
        emit Setmound(address(mound), address(_mound));
        mound = _mound;
    }

    // Mound functions

    function topSize() external view returns (uint256) {
        return mound.topSize();
    }

    function moundSize() external view returns (uint256) {
        return mound.size();
    }

    function moundEntry(uint256 _i) external view returns (address, uint256) {
        return mound.entry(_i);
    }

    function moundTop() external view returns (address, uint256) {
        return mound.top();
    }

    function moundIndex(address _addr) external view returns (uint256) {
        return mound.indexOf(_addr);
    }

    function getNonce(address _addr, uint256 _cat) external view returns (uint256) {
        return _nonce(_addr, _cat);
    }

    // ERC20 functions

    function balanceOf(address _addr) external view returns (uint256) {
        return _balanceOf(_addr);
    }

    function allowance(address _addr, address _spender) external view returns (uint256) {
        return _allowance(_addr, _spender);
    }

    function approve(address _spender, uint256 _value) external returns (bool) {
        emit Approval(msg.sender, _spender, _value);
        _setAllowance(msg.sender, _spender, _value);
        return true;
    }

    function transfer(address _to, uint256 _value) external requestGas(extraGas) returns (bool) {
        _transferFrom(msg.sender, msg.sender, _to, _value, false);
        return true;
    }

    function transferWithFee(address _to, uint256 _value) external requestGas(extraGas) returns (bool) {
        _transferFrom(msg.sender, msg.sender, _to, _value, true);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) external requestGas(extraGas) returns (bool) {
        _transferFrom(msg.sender, _from, _to, _value, false);
        return true;
    }

    function transferFromWithFee(address _from, address _to, uint256 _value) external requestGas(extraGas) returns (bool) {
        _transferFrom(msg.sender, _from, _to, _value, true);
        return true;
    }
}

pragma solidity ^0.5.17;


library SafeMath {
    function add(uint256 x, uint256 y) internal pure returns (uint256) {
        uint256 z = x + y;
        require(z >= x, "Add overflow");
        return z;
    }

    function sub(uint256 x, uint256 y) internal pure returns (uint256) {
        require(x >= y, "Sub underflow");
        return x - y;
    }

    function mult(uint256 x, uint256 y) internal pure returns (uint256) {
        if (x == 0) {
            return 0;
        }

        uint256 z = x * y;
        require(z / x == y, "Mult overflow");
        return z;
    }

    function div(uint256 x, uint256 y) internal pure returns (uint256) {
        require(y != 0, "Div by zero");
        return x / y;
    }

    function divRound(uint256 x, uint256 y) internal pure returns (uint256) {
        require(y != 0, "Div by zero");
        uint256 r = x / y;
        if (x % y != 0) {
            r = r + 1;
        }

        return r;
    }
}

pragma solidity ^0.5.17;


library Math {
    function orderOfMagnitude(uint256 input) internal pure returns (uint256){
        uint256 counter = uint(-1);
        uint256 temp = input;

        do {
            temp /= 10;
            counter++;
        } while (temp != 0);

        return counter;
    }

    function min(uint256 _a, uint256 _b) internal pure returns (uint256) {
        if (_a < _b) {
            return _a;
        } else {
            return _b;
        }
    }

    function max(uint256 _a, uint256 _b) internal pure returns (uint256) {
        if (_a > _b) {
            return _a;
        } else {
            return _b;
        }
    }
}

Contract Security Audit

Contract ABI

[{"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":"_addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Choosen","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_prev","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_new","type":"uint256"}],"name":"SetExtraGas","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_prev","type":"string"},{"indexed":false,"internalType":"string","name":"_new","type":"string"}],"name":"SetName","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_prev","type":"address"},{"indexed":false,"internalType":"address","name":"_new","type":"address"}],"name":"Setmound","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":false,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"}],"name":"TransferOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"WhitelistFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"WhitelistTo","type":"event"},{"constant":true,"inputs":[],"name":"FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"extraGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_cat","type":"uint256"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mound","outputs":[{"internalType":"contract Mound","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_i","type":"uint256"}],"name":"moundEntry","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"moundIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"moundSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"moundTop","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"setExtraGas","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setWhitelistedFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setWhitelistedTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract Mound","name":"_mound","type":"address"}],"name":"setmound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"topSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFromWithFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferWithFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040526040518060400160405280601281526020017f496e73696475616c20504c5420546f6b656e0000000000000000000000000000815250600390805190602001906200005192919062000130565b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c600033604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1620001df565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017357805160ff1916838001178555620001a4565b82800160010185558215620001a4579182015b82811115620001a357825182559160200191906001019062000186565b5b509050620001b39190620001b7565b5090565b620001dc91905b80821115620001d8576000816000905550600101620001be565b5090565b90565b614bb880620001ef6000396000f3fe60806040523480156200001157600080fd5b5060043610620002085760003560e01c806389535803116200011d578063a9059cbb11620000b1578063d93413d7116200007b578063d93413d71462000aa0578063dd62ed3e1462000afb578063e86534271462000b76578063ff12bbf41462000bc95762000208565b8063a9059cbb1462000951578063bf88dffa14620009ba578063c47f00271462000a01578063c57981b51462000a805762000208565b80638da5cb5b11620000f35780638da5cb5b14620007b257806395d89b4114620007fe57806399131fa61462000886578063a486309d14620008fe5762000208565b806389535803146200069357806389f3546814620006f85780638cec999314620007815762000208565b806323b872dd11620001a157806343684b21116200016b57806343684b21146200059957806346c9611a14620005f857806370a0823114620006185780637c32cdd114620006735762000208565b806323b872dd1462000479578063313ce56714620005025780633767e3391462000528578063399ae72414620005485762000208565b806313af403511620001e357806313af4035146200036757806316b627d114620003ae57806318160ddd146200040d5780631dbe875c146200042d5762000208565b806306fdde03146200020d57806308acece21462000295578063095ea7b314620002fe575b600080fd5b6200021762000c1c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620002595780820151818401526020810190506200023c565b50505050905090810190601f168015620002875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620002e460048036036040811015620002ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062000cbe565b604051808215151515815260200191505060405180910390f35b6200034d600480360360408110156200031657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062000d73565b604051808215151515815260200191505060405180910390f35b620003ac600480360360208110156200037f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000df1565b005b620003f360048036036020811015620003c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000faf565b604051808215151515815260200191505060405180910390f35b6200041762000fcf565b6040518082815260200191505060405180910390f35b6200043762000fd5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620004e8600480360360608110156200049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062000ffb565b604051808215151515815260200191505060405180910390f35b6200050c620010b1565b604051808260ff1660ff16815260200191505060405180910390f35b62000532620010b6565b6040518082815260200191505060405180910390f35b62000597600480360360408110156200056057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050620010bc565b005b620005de60048036036020811015620005b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001342565b604051808215151515815260200191505060405180910390f35b6200060262001362565b6040518082815260200191505060405180910390f35b6200065d600480360360208110156200063057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506200140f565b6040518082815260200191505060405180910390f35b6200067d62001423565b6040518082815260200191505060405180910390f35b620006e260048036036040811015620006ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050620014d0565b6040518082815260200191505060405180910390f35b62000767600480360360608110156200071057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050620014e6565b604051808215151515815260200191505060405180910390f35b620007b0600480360360208110156200079957600080fd5b81019080803590602001909291905050506200159c565b005b620007bc620016aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000808620016cf565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156200084a5780820151818401526020810190506200082d565b50505050905090810190601f168015620008785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620008b5600480360360208110156200089e57600080fd5b810190808035906020019092919050505062001708565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b6200094f600480360360408110156200091657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050620017ce565b005b620009a0600480360360408110156200096957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506200195b565b604051808215151515815260200191505060405180910390f35b620009ff60048036036020811015620009d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001a10565b005b62000a7e6004803603602081101562000a1957600080fd5b810190808035906020019064010000000081111562000a3757600080fd5b82018360208201111562000a4a57600080fd5b8035906020019184600183028401116401000000008311171562000a6d57600080fd5b909192939192939050505062001bd0565b005b62000a8a62001d9d565b6040518082815260200191505060405180910390f35b62000ae56004803603602081101562000ab857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001da2565b6040518082815260200191505060405180910390f35b62000b606004803603604081101562000b1357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001e88565b6040518082815260200191505060405180910390f35b62000b8062001e9e565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b62000c1a6004803603604081101562000be157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505062001f58565b005b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562000cb65780601f1062000c8a5761010080835404028352916020019162000cb6565b820191906000526020600020905b81548152906001019060200180831162000c9857829003601f168201915b505050505081565b600060075460003a148062000cd25750455a115b1562000d575760005a905062000ced333387876001620020e5565b6001925060005a82039050600060648483028162000d0757fe5b0490505a92505b805a8403101562000d4e57600154604051602001808281526020019150506040516020818303038152906040528051906020012060018190555062000d0e565b50505062000d6c565b62000d67333386866001620020e5565b600191505b5092915050565b60008273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a362000de7338484620025ca565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462000eb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60056020528060005260406000206000915054906101000a900460ff1681565b60025481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060075460003a14806200100f5750455a115b15620010945760005a90506200102a338787876000620020e5565b6001925060005a8203905060006064848302816200104457fe5b0490505a92505b805a840310156200108b5760015460405160200180828152602001915050604051602081830303815290604052805190602001206001819055506200104b565b505050620010a9565b620010a4338686866000620020e5565b600191505b509392505050565b601281565b60075481565b600860009054906101000a900460ff1615620010d457fe5b6001600860006101000a81548160ff021916908315150217905550600060025414620010fc57fe5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200115557fe5b604051620011639062003413565b604051809103906000f08015801562001180573d6000803e3d6000fd5b50600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f34402c9b98b79875cf3533c296fd8b66441723da4648879b622bfc956905e1486000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600f6007819055507fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c96000600754604051808381526020018281526020019250505060405180910390a18173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a362001337828262002670565b806002819055505050565b60046020528060005260406000206000915054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620013cd57600080fd5b505afa158015620013e2573d6000803e3d6000fd5b505050506040513d6020811015620013f957600080fd5b8101908080519060200190929190505050905090565b60006200141c8262002790565b9050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c32cdd16040518163ffffffff1660e01b815260040160206040518083038186803b1580156200148e57600080fd5b505afa158015620014a3573d6000803e3d6000fd5b505050506040513d6020811015620014ba57600080fd5b8101908080519060200190929190505050905090565b6000620014de8383620027f0565b905092915050565b600060075460003a1480620014fa5750455a115b156200157f5760005a905062001515338787876001620020e5565b6001925060005a8203905060006064848302816200152f57fe5b0490505a92505b805a840310156200157657600154604051602001808281526020019150506040516020818303038152906040528051906020012060018190555062001536565b50505062001594565b6200158f338686866001620020e5565b600191505b509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146200165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c960075482604051808381526020018281526020019250505060405180910390a18060078190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600481526020017f4455414c0000000000000000000000000000000000000000000000000000000081525081565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2095c07846040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b1580156200177e57600080fd5b505afa15801562001793573d6000803e3d6000fd5b505050506040513d6040811015620017aa57600080fd5b81019080805190602001909291908051906020019092919050505091509150915091565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462001891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f113828282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600060075460003a14806200196f5750455a115b15620019f45760005a90506200198a333387876000620020e5565b6001925060005a820390506000606484830281620019a457fe5b0490505a92505b805a84031015620019eb576001546040516020018082815260200191505060405160208183030381529060405280519060200120600181905550620019ab565b50505062001a09565b62001a04333386866000620020e5565b600191505b5092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462001ad3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f34402c9b98b79875cf3533c296fd8b66441723da4648879b622bfc956905e148600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a180600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462001c93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fbcfc2e8e6857ca26084ba5543a45251aaf7690f73043fff1d18c7d5f80e5cbb16003838360405180806020018060200183810383528681815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801562001d495780601f1062001d1d5761010080835404028352916020019162001d49565b820191906000526020600020905b81548152906001019060200180831162001d2b57829003601f168201915b50508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a181816003919062001d9892919062003421565b505050565b603281565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd6aad25836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801562001e4457600080fd5b505afa15801562001e59573d6000803e3d6000fd5b505050506040513d602081101562001e7057600080fd5b81019080805190602001909291905050509050919050565b600062001e9683836200286a565b905092915050565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe6dcdba6040518163ffffffff1660e01b8152600401604080518083038186803b15801562001f0957600080fd5b505afa15801562001f1e573d6000803e3d6000fd5b505050506040513d604081101562001f3557600080fd5b810190808051906020019092919080519060200190929190505050915091509091565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146200201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008214156200215b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60006040518082815260200191505060405180910390a3620025c3565b6000620021688562002790565b905082811015620021e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f62616c616e6365206e6f7420656e6f756768000000000000000000000000000081525060200191505060405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614620022e85760006200222386886200286a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114620022e65783811015620022c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f616c6c6f77616e6365206e6f7420656e6f75676800000000000000000000000081525060200191505060405180910390fd5b620022e58688620022df87856200291390919063ffffffff16565b620025ca565b5b505b60008390506000809050600080905062002317886200231188876200291390919063ffffffff16565b62002670565b84806200232d57506200232b888862002997565b155b15620024fd576200234960328762002a4390919063ffffffff16565b9150600186146200235b57816200235e565b60005b90506200238962002379828462002aef90919063ffffffff16565b846200291390919063ffffffff16565b9250620023a2826002546200291390919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360006200241c898862002b78565b905062002448816200244284620024338562002790565b62002aef90919063ffffffff16565b62002670565b8073ffffffffffffffffffffffffffffffffffffffff167f8e6f52908fa87187bbf8f4dddb7ff7a7435791409c9d21fb648bbb14f5418b01836040518082815260200191505060405180910390a28073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505b85620025278462002518848662002aef90919063ffffffff16565b62002aef90919063ffffffff16565b146200252f57fe5b62002559876200255385620025448b62002790565b62002aef90919063ffffffff16565b62002670565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505b5050505050565b6200266b8260405160200180807f616c6c6f77616e636500000000000000000000000000000000000000000000008152506009018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401915050604051602081830303815290604052805190602001208260001b6200265b8662002d18565b62002d3b9092919063ffffffff16565b505050565b620026c960405180807f62616c616e636500000000000000000000000000000000000000000000000000815250600701905060405180910390208260001b620026b98562002d18565b62002d3b9092919063ffffffff16565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2d83b5e83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156200277357600080fd5b505af115801562002788573d6000803e3d6000fd5b505050505050565b6000620027e660405180807f62616c616e63650000000000000000000000000000000000000000000000000081525060070190506040518091039020620027d78462002d18565b62002f3390919063ffffffff16565b60001c9050919050565b60006200285f8260405160200180807f6e6f6e636500000000000000000000000000000000000000000000000000000081525060050182815260200191505060405160208183030381529060405280519060200120620028508562002d18565b62002f3390919063ffffffff16565b60001c905092915050565b6000620029088260405160200180807f616c6c6f77616e636500000000000000000000000000000000000000000000008152506009018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140191505060405160208183030381529060405280519060200120620028f98562002d18565b62002f3390919063ffffffff16565b60001c905092915050565b6000818310156200298c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f53756220756e646572666c6f770000000000000000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168062002a3b5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b60008082141562002abc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f446976206279207a65726f00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600082848162002ac857fe5b049050600083858162002ad757fe5b061462002ae5576001810190505b8091505092915050565b60008082840190508381101562002b6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f416464206f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b60008062002b868362003152565b9050600062002b968583620027f0565b905062002ba8858360018401620031a8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630af2b3e562002c9c8784866001600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562002c5857600080fd5b505afa15801562002c6d573d6000803e3d6000fd5b505050506040513d602081101562002c8457600080fd5b8101908080519060200190929190505050036200321f565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562002cd157600080fd5b505afa15801562002ce6573d6000803e3d6000fd5b505050506040513d602081101562002cfd57600080fd5b81019080805190602001909291905050509250505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b600062002d4884620032a6565b905062002d558162003394565b62002d665762002d6584620033da565b5b60008173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1663e2e52ec1905060e01b85856040516024018083815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831062002e4b578051825260208201915060208101905060208303925062002e26565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462002eaf576040519150601f19603f3d011682016040523d82523d6000602084013e62002eb4565b606091505b505090508062002f2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6572726f722077726974696e672073746f72616765000000000000000000000081525060200191505060405180910390fd5b5050505050565b60008062002f4184620032a6565b905062002f4e8162003394565b62002f60576000801b9150506200314c565b600060608273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166361da1439905060e01b8660405160240180828152602001915050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106200303f57805182526020820191506020810190506020830392506200301a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114620030a1576040519150601f19603f3d011682016040523d82523d6000602084013e620030a6565b606091505b5091509150816200311f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6572726f722072656164696e672073746f72616765000000000000000000000081525060200191505060405180910390fd5b8080602001905160208110156200313557600080fd5b810190808051906020019092919050505093505050505b92915050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905060008390505b600a81816200318957fe5b049050818060010192505060008114156200317e578192505050919050565b6200321a8260405160200180807f6e6f6e6365000000000000000000000000000000000000000000000000000000815250600501828152602001915050604051602081830303815290604052805190602001208260001b6200320a8662002d18565b62002d3b9092919063ffffffff16565b505050565b600080858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506001830181816200329a57fe5b06915050949350505050565b600060ff60f81b308360405180602001620032c190620034a8565b6020820181038252601f19601f820116604052508051906020012060405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060001c9050919050565b600080823f90506000801b8114158015620033d257507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b8114155b915050919050565b606060405180602001620033ee90620034a8565b6020820181038252601f19601f820116604052509050818151602083016000f5505050565b6114c980620034df83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200346457803560ff191683800117855562003495565b8280016001018555821562003495579182015b828111156200349457823582559160200191906001019062003477565b5b509050620034a49190620034b6565b5090565b6101dc80620049a883390190565b620034db91905b80821115620034d7576000816000905550600101620034bd565b5090565b9056fe608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c600033604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a16100fd600161010260201b6112251760201c565b6101b1565b600081600001805490501461017f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b806000016000908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b611309806101c06000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063949d225d11610066578063949d225d146101db578063a2d83b5e146101f9578063e2095c0714610247578063fd6aad25146102bc578063fe6dcdba146103145761009e565b80630af2b3e5146100a357806313af40351461011157806331fb7127146101555780637c32cdd1146101735780638da5cb5b14610191575b600080fd5b6100cf600480360360208110156100b957600080fd5b8101908080359060200190929190505050610365565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101536004803603602081101561012757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610385565b005b61015d610542565b6040518082815260200191505060405180910390f35b61017b610547565b6040518082815260200191505060405180910390f35b610199610550565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101e3610575565b6040518082815260200191505060405180910390f35b6102456004803603604081101561020f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b005b6102736004803603602081101561025d57600080fd5b8101908080359060200190929190505050610889565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108a9565b6040518082815260200191505060405180910390f35b61031c6108f4565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b600061037b82600161090990919063ffffffff16565b5080915050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606481565b60006064905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610581600161093c565b905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000610654600161093c565b905060008114156106d2578273ffffffffffffffffffffffffffffffffffffffff167f75ddb6c5075c4f5088c8bc7764c12b9a8c0dcb419d1200883dd1509f7dd1b068836000604051808381526020018281526020019250505060405180910390a26106cc838360016109509092919063ffffffff16565b50610885565b60006106de6001610ab6565b9150506106f5846001610b0890919063ffffffff16565b156107825761071084846001610b579092919063ffffffff16565b600083141561077d576107236001610d0a565b50508373ffffffffffffffffffffffffffffffffffffffff167f3ad7ffe3733c6769bd9a20a0ac79732629d5fb71e331855a543043edd23bef45600084604051808381526020018281526020019250505060405180910390a25b610882565b6000831415801561079d5750606482108061079c57508281105b5b156108815760648210610814576000806107b76001610d0a565b915091508173ffffffffffffffffffffffffffffffffffffffff167f3ad7ffe3733c6769bd9a20a0ac79732629d5fb71e331855a543043edd23bef458286604051808381526020018281526020019250505060405180910390a250505b61082a848460016109509092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f75ddb6c5075c4f5088c8bc7764c12b9a8c0dcb419d1200883dd1509f7dd1b0688484604051808381526020018281526020019250505060405180910390a25b5b50505b5050565b6000806108a083600161090990919063ffffffff16565b91509150915091565b60006001800160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806109016001610ab6565b915091509091565b60008061093184600001600185018154811061092157fe5b9060005260206000200154610ee9565b915091509250929050565b600060018260000180549050039050919050565b60008360010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54686520656e74727920616c726561647920657869737473000000000000000081525060200191505060405180910390fd5b6000610a138383610f13565b905083600001819080600181540180825580915050906001820390600052602060002001600090919290919091505550600060018560000180549050039050610a67818387610f3a9092919063ffffffff16565b9050808560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b600080600283600001805490501015610adb5760008081915080905091509150610b03565b610afe83600001600181548110610aee57fe5b9060005260206000200154610ee9565b915091505b915091565b6000808360010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415905092915050565b60008360010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415610c14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54686520656e74727920646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b6000610c208484610f13565b90506000856000018381548110610c3357fe5b90600052602060002001549050600081831015610c6657610c5f8484896110639092919063ffffffff16565b9050610c94565b81831115610c8a57610c83848489610f3a9092919063ffffffff16565b9050610c93565b50505050610d05565b5b82876000018281548110610ca457fe5b9060005260206000200181905550838114610d0057808760010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050505b505050565b60008060008360000180549050905060018111610d8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546865206d6f756e6420646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b610db284600001600181548110610da257fe5b9060005260206000200154610ee9565b809350819450505060008460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002811415610e215760018460000181610e1b91906111d4565b50610ee3565b6000846000016001830381548110610e3557fe5b906000526020600020015490508085600001600181548110610e5357fe5b9060005260206000200181905550600182038560000181610e7491906111d4565b50600060019050610e908183886110639092919063ffffffff16565b905080866001016000610ea2856111b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b50915091565b600080821973ffffffffffffffffffffffffffffffffffffffff811692508060a01c915050915091565b60008160a01b8373ffffffffffffffffffffffffffffffffffffffff161719905092915050565b60008290506001811461105c5760008460000160028381610f5757fe5b0481548110610f6257fe5b906000526020600020015490505b8281101561105a5782818660000160028581610f8857fe5b0481548110610f9357fe5b906000526020600020016000886000018681548110610fae57fe5b90600052602060002001600084919050558391905055505081856001016000610fd6846111b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002828161101e57fe5b049150600182141561102f5761105a565b846000016002838161103d57fe5b048154811061104857fe5b90600052602060002001549050610f70565b505b9392505050565b600082905060008460000180549050905060006001820390505b816002840210156111aa57600060028402905060008760000182815481106110a157fe5b906000526020600020015490506000828411156110f95760008960000160018501815481106110cc57fe5b90600052602060002001549050808310156110ef578091506001840193506110f3565b8291505b506110fd565b8190505b8087111561110d575050506111aa565b80878a600001888154811061111e57fe5b9060005260206000200160008c600001878154811061113957fe5b90600052602060002001600084919050558391905055505085896001016000611161846111b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082955050505061107d565b50509392505050565b600073ffffffffffffffffffffffffffffffffffffffff8219169050919050565b8154818355818111156111fb578183600052602060002091820191016111fa9190611200565b5b505050565b61122291905b8082111561121e576000816000905550600101611206565b5090565b90565b60008160000180549050146112a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b80600001600090806001815401808255809150509060018203906000526020600020016000909192909190915055505056fea265627a7a72315820a13f49eb0c1598cc6218d09f4ccba47aea1ce7a5246ca11347e3707d37f021b564736f6c63430005110032608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061017c806100606000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806361da14391461003b578063e2e52ec11461007d575b600080fd5b6100676004803603602081101561005157600080fd5b81019080803590602001909291905050506100b5565b6040518082815260200191505060405180910390f35b6100b36004803603604081101561009357600080fd5b8101908080359060200190929190803590602001909291905050506100d2565b005b600060016000838152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461012b57600080fd5b806001600084815260200190815260200160002081905550505056fea265627a7a723158202ea68098010e1630491145b5a981f9b6910e3a78e1d1c46a8302eb2578f2027d64736f6c63430005110032a265627a7a723158208d9a7d5bc6ba7a986a758c23414aee986536e34cd85e661d4372ec4de888601f64736f6c63430005110032

Deployed Bytecode

0x60806040523480156200001157600080fd5b5060043610620002085760003560e01c806389535803116200011d578063a9059cbb11620000b1578063d93413d7116200007b578063d93413d71462000aa0578063dd62ed3e1462000afb578063e86534271462000b76578063ff12bbf41462000bc95762000208565b8063a9059cbb1462000951578063bf88dffa14620009ba578063c47f00271462000a01578063c57981b51462000a805762000208565b80638da5cb5b11620000f35780638da5cb5b14620007b257806395d89b4114620007fe57806399131fa61462000886578063a486309d14620008fe5762000208565b806389535803146200069357806389f3546814620006f85780638cec999314620007815762000208565b806323b872dd11620001a157806343684b21116200016b57806343684b21146200059957806346c9611a14620005f857806370a0823114620006185780637c32cdd114620006735762000208565b806323b872dd1462000479578063313ce56714620005025780633767e3391462000528578063399ae72414620005485762000208565b806313af403511620001e357806313af4035146200036757806316b627d114620003ae57806318160ddd146200040d5780631dbe875c146200042d5762000208565b806306fdde03146200020d57806308acece21462000295578063095ea7b314620002fe575b600080fd5b6200021762000c1c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620002595780820151818401526020810190506200023c565b50505050905090810190601f168015620002875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620002e460048036036040811015620002ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062000cbe565b604051808215151515815260200191505060405180910390f35b6200034d600480360360408110156200031657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062000d73565b604051808215151515815260200191505060405180910390f35b620003ac600480360360208110156200037f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000df1565b005b620003f360048036036020811015620003c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000faf565b604051808215151515815260200191505060405180910390f35b6200041762000fcf565b6040518082815260200191505060405180910390f35b6200043762000fd5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620004e8600480360360608110156200049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062000ffb565b604051808215151515815260200191505060405180910390f35b6200050c620010b1565b604051808260ff1660ff16815260200191505060405180910390f35b62000532620010b6565b6040518082815260200191505060405180910390f35b62000597600480360360408110156200056057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050620010bc565b005b620005de60048036036020811015620005b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001342565b604051808215151515815260200191505060405180910390f35b6200060262001362565b6040518082815260200191505060405180910390f35b6200065d600480360360208110156200063057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506200140f565b6040518082815260200191505060405180910390f35b6200067d62001423565b6040518082815260200191505060405180910390f35b620006e260048036036040811015620006ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050620014d0565b6040518082815260200191505060405180910390f35b62000767600480360360608110156200071057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050620014e6565b604051808215151515815260200191505060405180910390f35b620007b0600480360360208110156200079957600080fd5b81019080803590602001909291905050506200159c565b005b620007bc620016aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000808620016cf565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156200084a5780820151818401526020810190506200082d565b50505050905090810190601f168015620008785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620008b5600480360360208110156200089e57600080fd5b810190808035906020019092919050505062001708565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b6200094f600480360360408110156200091657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050620017ce565b005b620009a0600480360360408110156200096957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506200195b565b604051808215151515815260200191505060405180910390f35b620009ff60048036036020811015620009d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001a10565b005b62000a7e6004803603602081101562000a1957600080fd5b810190808035906020019064010000000081111562000a3757600080fd5b82018360208201111562000a4a57600080fd5b8035906020019184600183028401116401000000008311171562000a6d57600080fd5b909192939192939050505062001bd0565b005b62000a8a62001d9d565b6040518082815260200191505060405180910390f35b62000ae56004803603602081101562000ab857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001da2565b6040518082815260200191505060405180910390f35b62000b606004803603604081101562000b1357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001e88565b6040518082815260200191505060405180910390f35b62000b8062001e9e565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b62000c1a6004803603604081101562000be157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505062001f58565b005b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562000cb65780601f1062000c8a5761010080835404028352916020019162000cb6565b820191906000526020600020905b81548152906001019060200180831162000c9857829003601f168201915b505050505081565b600060075460003a148062000cd25750455a115b1562000d575760005a905062000ced333387876001620020e5565b6001925060005a82039050600060648483028162000d0757fe5b0490505a92505b805a8403101562000d4e57600154604051602001808281526020019150506040516020818303038152906040528051906020012060018190555062000d0e565b50505062000d6c565b62000d67333386866001620020e5565b600191505b5092915050565b60008273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a362000de7338484620025ca565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462000eb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60056020528060005260406000206000915054906101000a900460ff1681565b60025481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060075460003a14806200100f5750455a115b15620010945760005a90506200102a338787876000620020e5565b6001925060005a8203905060006064848302816200104457fe5b0490505a92505b805a840310156200108b5760015460405160200180828152602001915050604051602081830303815290604052805190602001206001819055506200104b565b505050620010a9565b620010a4338686866000620020e5565b600191505b509392505050565b601281565b60075481565b600860009054906101000a900460ff1615620010d457fe5b6001600860006101000a81548160ff021916908315150217905550600060025414620010fc57fe5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200115557fe5b604051620011639062003413565b604051809103906000f08015801562001180573d6000803e3d6000fd5b50600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f34402c9b98b79875cf3533c296fd8b66441723da4648879b622bfc956905e1486000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600f6007819055507fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c96000600754604051808381526020018281526020019250505060405180910390a18173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a362001337828262002670565b806002819055505050565b60046020528060005260406000206000915054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620013cd57600080fd5b505afa158015620013e2573d6000803e3d6000fd5b505050506040513d6020811015620013f957600080fd5b8101908080519060200190929190505050905090565b60006200141c8262002790565b9050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c32cdd16040518163ffffffff1660e01b815260040160206040518083038186803b1580156200148e57600080fd5b505afa158015620014a3573d6000803e3d6000fd5b505050506040513d6020811015620014ba57600080fd5b8101908080519060200190929190505050905090565b6000620014de8383620027f0565b905092915050565b600060075460003a1480620014fa5750455a115b156200157f5760005a905062001515338787876001620020e5565b6001925060005a8203905060006064848302816200152f57fe5b0490505a92505b805a840310156200157657600154604051602001808281526020019150506040516020818303038152906040528051906020012060018190555062001536565b50505062001594565b6200158f338686866001620020e5565b600191505b509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146200165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c960075482604051808381526020018281526020019250505060405180910390a18060078190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600481526020017f4455414c0000000000000000000000000000000000000000000000000000000081525081565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2095c07846040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b1580156200177e57600080fd5b505afa15801562001793573d6000803e3d6000fd5b505050506040513d6040811015620017aa57600080fd5b81019080805190602001909291908051906020019092919050505091509150915091565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462001891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f113828282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600060075460003a14806200196f5750455a115b15620019f45760005a90506200198a333387876000620020e5565b6001925060005a820390506000606484830281620019a457fe5b0490505a92505b805a84031015620019eb576001546040516020018082815260200191505060405160208183030381529060405280519060200120600181905550620019ab565b50505062001a09565b62001a04333386866000620020e5565b600191505b5092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462001ad3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f34402c9b98b79875cf3533c296fd8b66441723da4648879b622bfc956905e148600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a180600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462001c93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fbcfc2e8e6857ca26084ba5543a45251aaf7690f73043fff1d18c7d5f80e5cbb16003838360405180806020018060200183810383528681815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801562001d495780601f1062001d1d5761010080835404028352916020019162001d49565b820191906000526020600020905b81548152906001019060200180831162001d2b57829003601f168201915b50508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a181816003919062001d9892919062003421565b505050565b603281565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd6aad25836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801562001e4457600080fd5b505afa15801562001e59573d6000803e3d6000fd5b505050506040513d602081101562001e7057600080fd5b81019080805190602001909291905050509050919050565b600062001e9683836200286a565b905092915050565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe6dcdba6040518163ffffffff1660e01b8152600401604080518083038186803b15801562001f0957600080fd5b505afa15801562001f1e573d6000803e3d6000fd5b505050506040513d604081101562001f3557600080fd5b810190808051906020019092919080519060200190929190505050915091509091565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146200201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008214156200215b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60006040518082815260200191505060405180910390a3620025c3565b6000620021688562002790565b905082811015620021e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f62616c616e6365206e6f7420656e6f756768000000000000000000000000000081525060200191505060405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614620022e85760006200222386886200286a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114620022e65783811015620022c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f616c6c6f77616e6365206e6f7420656e6f75676800000000000000000000000081525060200191505060405180910390fd5b620022e58688620022df87856200291390919063ffffffff16565b620025ca565b5b505b60008390506000809050600080905062002317886200231188876200291390919063ffffffff16565b62002670565b84806200232d57506200232b888862002997565b155b15620024fd576200234960328762002a4390919063ffffffff16565b9150600186146200235b57816200235e565b60005b90506200238962002379828462002aef90919063ffffffff16565b846200291390919063ffffffff16565b9250620023a2826002546200291390919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360006200241c898862002b78565b905062002448816200244284620024338562002790565b62002aef90919063ffffffff16565b62002670565b8073ffffffffffffffffffffffffffffffffffffffff167f8e6f52908fa87187bbf8f4dddb7ff7a7435791409c9d21fb648bbb14f5418b01836040518082815260200191505060405180910390a28073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505b85620025278462002518848662002aef90919063ffffffff16565b62002aef90919063ffffffff16565b146200252f57fe5b62002559876200255385620025448b62002790565b62002aef90919063ffffffff16565b62002670565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505b5050505050565b6200266b8260405160200180807f616c6c6f77616e636500000000000000000000000000000000000000000000008152506009018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401915050604051602081830303815290604052805190602001208260001b6200265b8662002d18565b62002d3b9092919063ffffffff16565b505050565b620026c960405180807f62616c616e636500000000000000000000000000000000000000000000000000815250600701905060405180910390208260001b620026b98562002d18565b62002d3b9092919063ffffffff16565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2d83b5e83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156200277357600080fd5b505af115801562002788573d6000803e3d6000fd5b505050505050565b6000620027e660405180807f62616c616e63650000000000000000000000000000000000000000000000000081525060070190506040518091039020620027d78462002d18565b62002f3390919063ffffffff16565b60001c9050919050565b60006200285f8260405160200180807f6e6f6e636500000000000000000000000000000000000000000000000000000081525060050182815260200191505060405160208183030381529060405280519060200120620028508562002d18565b62002f3390919063ffffffff16565b60001c905092915050565b6000620029088260405160200180807f616c6c6f77616e636500000000000000000000000000000000000000000000008152506009018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140191505060405160208183030381529060405280519060200120620028f98562002d18565b62002f3390919063ffffffff16565b60001c905092915050565b6000818310156200298c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f53756220756e646572666c6f770000000000000000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168062002a3b5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b60008082141562002abc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f446976206279207a65726f00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600082848162002ac857fe5b049050600083858162002ad757fe5b061462002ae5576001810190505b8091505092915050565b60008082840190508381101562002b6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f416464206f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b60008062002b868362003152565b9050600062002b968583620027f0565b905062002ba8858360018401620031a8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630af2b3e562002c9c8784866001600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562002c5857600080fd5b505afa15801562002c6d573d6000803e3d6000fd5b505050506040513d602081101562002c8457600080fd5b8101908080519060200190929190505050036200321f565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562002cd157600080fd5b505afa15801562002ce6573d6000803e3d6000fd5b505050506040513d602081101562002cfd57600080fd5b81019080805190602001909291905050509250505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b600062002d4884620032a6565b905062002d558162003394565b62002d665762002d6584620033da565b5b60008173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1663e2e52ec1905060e01b85856040516024018083815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831062002e4b578051825260208201915060208101905060208303925062002e26565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462002eaf576040519150601f19603f3d011682016040523d82523d6000602084013e62002eb4565b606091505b505090508062002f2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6572726f722077726974696e672073746f72616765000000000000000000000081525060200191505060405180910390fd5b5050505050565b60008062002f4184620032a6565b905062002f4e8162003394565b62002f60576000801b9150506200314c565b600060608273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166361da1439905060e01b8660405160240180828152602001915050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106200303f57805182526020820191506020810190506020830392506200301a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114620030a1576040519150601f19603f3d011682016040523d82523d6000602084013e620030a6565b606091505b5091509150816200311f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6572726f722072656164696e672073746f72616765000000000000000000000081525060200191505060405180910390fd5b8080602001905160208110156200313557600080fd5b810190808051906020019092919050505093505050505b92915050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905060008390505b600a81816200318957fe5b049050818060010192505060008114156200317e578192505050919050565b6200321a8260405160200180807f6e6f6e6365000000000000000000000000000000000000000000000000000000815250600501828152602001915050604051602081830303815290604052805190602001208260001b6200320a8662002d18565b62002d3b9092919063ffffffff16565b505050565b600080858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506001830181816200329a57fe5b06915050949350505050565b600060ff60f81b308360405180602001620032c190620034a8565b6020820181038252601f19601f820116604052508051906020012060405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060001c9050919050565b600080823f90506000801b8114158015620033d257507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b8114155b915050919050565b606060405180602001620033ee90620034a8565b6020820181038252601f19601f820116604052509050818151602083016000f5505050565b6114c980620034df83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200346457803560ff191683800117855562003495565b8280016001018555821562003495579182015b828111156200349457823582559160200191906001019062003477565b5b509050620034a49190620034b6565b5090565b6101dc80620049a883390190565b620034db91905b80821115620034d7576000816000905550600101620034bd565b5090565b9056fe608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c600033604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a16100fd600161010260201b6112251760201c565b6101b1565b600081600001805490501461017f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b806000016000908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b611309806101c06000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063949d225d11610066578063949d225d146101db578063a2d83b5e146101f9578063e2095c0714610247578063fd6aad25146102bc578063fe6dcdba146103145761009e565b80630af2b3e5146100a357806313af40351461011157806331fb7127146101555780637c32cdd1146101735780638da5cb5b14610191575b600080fd5b6100cf600480360360208110156100b957600080fd5b8101908080359060200190929190505050610365565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101536004803603602081101561012757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610385565b005b61015d610542565b6040518082815260200191505060405180910390f35b61017b610547565b6040518082815260200191505060405180910390f35b610199610550565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101e3610575565b6040518082815260200191505060405180910390f35b6102456004803603604081101561020f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b005b6102736004803603602081101561025d57600080fd5b8101908080359060200190929190505050610889565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108a9565b6040518082815260200191505060405180910390f35b61031c6108f4565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b600061037b82600161090990919063ffffffff16565b5080915050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606481565b60006064905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610581600161093c565b905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000610654600161093c565b905060008114156106d2578273ffffffffffffffffffffffffffffffffffffffff167f75ddb6c5075c4f5088c8bc7764c12b9a8c0dcb419d1200883dd1509f7dd1b068836000604051808381526020018281526020019250505060405180910390a26106cc838360016109509092919063ffffffff16565b50610885565b60006106de6001610ab6565b9150506106f5846001610b0890919063ffffffff16565b156107825761071084846001610b579092919063ffffffff16565b600083141561077d576107236001610d0a565b50508373ffffffffffffffffffffffffffffffffffffffff167f3ad7ffe3733c6769bd9a20a0ac79732629d5fb71e331855a543043edd23bef45600084604051808381526020018281526020019250505060405180910390a25b610882565b6000831415801561079d5750606482108061079c57508281105b5b156108815760648210610814576000806107b76001610d0a565b915091508173ffffffffffffffffffffffffffffffffffffffff167f3ad7ffe3733c6769bd9a20a0ac79732629d5fb71e331855a543043edd23bef458286604051808381526020018281526020019250505060405180910390a250505b61082a848460016109509092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f75ddb6c5075c4f5088c8bc7764c12b9a8c0dcb419d1200883dd1509f7dd1b0688484604051808381526020018281526020019250505060405180910390a25b5b50505b5050565b6000806108a083600161090990919063ffffffff16565b91509150915091565b60006001800160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806109016001610ab6565b915091509091565b60008061093184600001600185018154811061092157fe5b9060005260206000200154610ee9565b915091509250929050565b600060018260000180549050039050919050565b60008360010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54686520656e74727920616c726561647920657869737473000000000000000081525060200191505060405180910390fd5b6000610a138383610f13565b905083600001819080600181540180825580915050906001820390600052602060002001600090919290919091505550600060018560000180549050039050610a67818387610f3a9092919063ffffffff16565b9050808560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b600080600283600001805490501015610adb5760008081915080905091509150610b03565b610afe83600001600181548110610aee57fe5b9060005260206000200154610ee9565b915091505b915091565b6000808360010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415905092915050565b60008360010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415610c14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54686520656e74727920646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b6000610c208484610f13565b90506000856000018381548110610c3357fe5b90600052602060002001549050600081831015610c6657610c5f8484896110639092919063ffffffff16565b9050610c94565b81831115610c8a57610c83848489610f3a9092919063ffffffff16565b9050610c93565b50505050610d05565b5b82876000018281548110610ca457fe5b9060005260206000200181905550838114610d0057808760010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050505b505050565b60008060008360000180549050905060018111610d8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546865206d6f756e6420646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b610db284600001600181548110610da257fe5b9060005260206000200154610ee9565b809350819450505060008460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002811415610e215760018460000181610e1b91906111d4565b50610ee3565b6000846000016001830381548110610e3557fe5b906000526020600020015490508085600001600181548110610e5357fe5b9060005260206000200181905550600182038560000181610e7491906111d4565b50600060019050610e908183886110639092919063ffffffff16565b905080866001016000610ea2856111b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b50915091565b600080821973ffffffffffffffffffffffffffffffffffffffff811692508060a01c915050915091565b60008160a01b8373ffffffffffffffffffffffffffffffffffffffff161719905092915050565b60008290506001811461105c5760008460000160028381610f5757fe5b0481548110610f6257fe5b906000526020600020015490505b8281101561105a5782818660000160028581610f8857fe5b0481548110610f9357fe5b906000526020600020016000886000018681548110610fae57fe5b90600052602060002001600084919050558391905055505081856001016000610fd6846111b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002828161101e57fe5b049150600182141561102f5761105a565b846000016002838161103d57fe5b048154811061104857fe5b90600052602060002001549050610f70565b505b9392505050565b600082905060008460000180549050905060006001820390505b816002840210156111aa57600060028402905060008760000182815481106110a157fe5b906000526020600020015490506000828411156110f95760008960000160018501815481106110cc57fe5b90600052602060002001549050808310156110ef578091506001840193506110f3565b8291505b506110fd565b8190505b8087111561110d575050506111aa565b80878a600001888154811061111e57fe5b9060005260206000200160008c600001878154811061113957fe5b90600052602060002001600084919050558391905055505085896001016000611161846111b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082955050505061107d565b50509392505050565b600073ffffffffffffffffffffffffffffffffffffffff8219169050919050565b8154818355818111156111fb578183600052602060002091820191016111fa9190611200565b5b505050565b61122291905b8082111561121e576000816000905550600101611206565b5090565b90565b60008160000180549050146112a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b80600001600090806001815401808255809150509060018203906000526020600020016000909192909190915055505056fea265627a7a72315820a13f49eb0c1598cc6218d09f4ccba47aea1ce7a5246ca11347e3707d37f021b564736f6c63430005110032608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061017c806100606000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806361da14391461003b578063e2e52ec11461007d575b600080fd5b6100676004803603602081101561005157600080fd5b81019080803590602001909291905050506100b5565b6040518082815260200191505060405180910390f35b6100b36004803603604081101561009357600080fd5b8101908080359060200190929190803590602001909291905050506100d2565b005b600060016000838152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461012b57600080fd5b806001600084815260200190815260200160002081905550505056fea265627a7a723158202ea68098010e1630491145b5a981f9b6910e3a78e1d1c46a8302eb2578f2027d64736f6c63430005110032a265627a7a723158208d9a7d5bc6ba7a986a758c23414aee986536e34cd85e661d4372ec4de888601f64736f6c63430005110032

Deployed Bytecode Sourcemap

12269:8235:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12269:8235:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12947:41;;;:::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;12947:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19875:196;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19875:196:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19456:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19456:213:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;532:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;532:134:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;13158:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13158:43:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12771:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13224:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20079:204;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20079:204:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13040:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13268:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13318:545;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13318:545:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13106:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13106:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18588:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19194:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19194:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18488:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19036:124;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19036:124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20291:210;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20291:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18174:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18174:131:0;;;;;;;;;;;;;;;;;:::i;:::-;;218:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12995:38;;;:::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;12995:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18687:114;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18687:114:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17660:179;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17660:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19677:190;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19677:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18313:141;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18313:141:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;18040:126;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18040:126:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;18040:126:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18040:126: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;18040:126:0;;;;;;;;;;;;:::i;:::-;;12892:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18915:113;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18915:113:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19311:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19311:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18809:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17847:185;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17847:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12947:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19875:196::-;19968:4;19949:8;;3645:1;3630:11;:16;:46;;;;3662:14;3650:9;:26;3630:46;3626:427;;;3693:16;3712:9;3693:28;;19985:56;19999:10;20011;20023:3;20028:6;20036:4;19985:13;:56::i;:::-;20059:4;20052:11;;3752:13;3779:9;3768:8;:20;3752:36;;3803:14;3840:3;3829:7;3821:5;:15;3820:23;;;;;;3803:40;;3869:9;3858:20;;3893:115;3923:6;3911:9;3900:8;:20;:29;3893:115;;;3986:4;;3969:22;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3969:22:0;;;3959:33;;;;;;3952:4;:40;;;;3893:115;;;3626:427;;;;;;19985:56;19999:10;20011;20023:3;20028:6;20036:4;19985:13;:56::i;:::-;20059:4;20052:11;;3626:427;19875:196;;;;;:::o;19456:213::-;19525:4;19568:8;19547:38;;19556:10;19547:38;;;19578:6;19547:38;;;;;;;;;;;;;;;;;;19596:43;19610:10;19622:8;19632:6;19596:13;:43::i;:::-;19657:4;19650:11;;19456:213;;;;:::o;532:134::-;484:5;;;;;;;;;;;470:19;;:10;:19;;;462:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:32;619:5;;;;;;;;;;;626:6;601:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:6;644:5;;:14;;;;;;;;;;;;;;;;;;532:134;:::o;13158:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;12771:26::-;;;;:::o;13224:18::-;;;;;;;;;;;;;:::o;20079:204::-;20184:4;20165:8;;3645:1;3630:11;:16;:46;;;;3662:14;3650:9;:26;3630:46;3626:427;;;3693:16;3712:9;3693:28;;20201:52;20215:10;20227:5;20234:3;20239:6;20247:5;20201:13;:52::i;:::-;20271:4;20264:11;;3752:13;3779:9;3768:8;:20;3752:36;;3803:14;3840:3;3829:7;3821:5;:15;3820:23;;;;;;3803:40;;3869:9;3858:20;;3893:115;3923:6;3911:9;3900:8;:20;:29;3893:115;;;3986:4;;3969:22;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3969:22:0;;;3959:33;;;;;;3952:4;:40;;;;3893:115;;;3626:427;;;;;;20201:52;20215:10;20227:5;20234:3;20239:6;20247:5;20201:13;:52::i;:::-;20271:4;20264:11;;3626:427;20079:204;;;;;;:::o;13040:35::-;13073:2;13040:35;:::o;13268:23::-;;;;:::o;13318:545::-;13447:6;;;;;;;;;;;13446:7;13439:15;;;;13474:4;13465:6;;:13;;;;;;;;;;;;;;;;;;13513:1;13498:11;;:16;13491:24;;;;13559:1;13533:28;;13541:5;;;;;;;;;;;13533:28;;;13526:36;;;;13608:11;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13608:11:0;13600:5;;:19;;;;;;;;;;;;;;;;;;13635:36;13652:1;13664:5;;;;;;;;;;;13635:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13695:2;13684:8;:13;;;;13713:24;13725:1;13728:8;;13713:24;;;;;;;;;;;;;;;;;;;;;;;;13774:3;13753:34;;13770:1;13753:34;;;13779:7;13753:34;;;;;;;;;;;;;;;;;;13798:25;13810:3;13815:7;13798:11;:25::i;:::-;13848:7;13834:11;:21;;;;13318:545;;:::o;13106:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;18588:91::-;18632:7;18659:5;;;;;;;;;;;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18659:12:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18659:12:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18659:12:0;;;;;;;;;;;;;;;;18652:19;;18588:91;:::o;19194:109::-;19251:7;19278:17;19289:5;19278:10;:17::i;:::-;19271:24;;19194:109;;;:::o;18488:92::-;18530:7;18557:5;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18557:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18557:15:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18557:15:0;;;;;;;;;;;;;;;;18550:22;;18488:92;:::o;19036:124::-;19106:7;19133:19;19140:5;19147:4;19133:6;:19::i;:::-;19126:26;;19036:124;;;;:::o;20291:210::-;20403:4;20384:8;;3645:1;3630:11;:16;:46;;;;3662:14;3650:9;:26;3630:46;3626:427;;;3693:16;3712:9;3693:28;;20420:51;20434:10;20446:5;20453:3;20458:6;20466:4;20420:13;:51::i;:::-;20489:4;20482:11;;3752:13;3779:9;3768:8;:20;3752:36;;3803:14;3840:3;3829:7;3821:5;:15;3820:23;;;;;;3803:40;;3869:9;3858:20;;3893:115;3923:6;3911:9;3900:8;:20;:29;3893:115;;;3986:4;;3969:22;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3969:22:0;;;3959:33;;;;;;3952:4;:40;;;;3893:115;;;3626:427;;;;;;20420:51;20434:10;20446:5;20453:3;20458:6;20466:4;20420:13;:51::i;:::-;20489:4;20482:11;;3626:427;20291:210;;;;;;:::o;18174:131::-;484:5;;;;;;;;;;;470:19;;:10;:19;;;462:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18244:27;18256:8;;18266:4;18244:27;;;;;;;;;;;;;;;;;;;;;;;;18293:4;18282:8;:15;;;;18174:131;:::o;218:20::-;;;;;;;;;;;;;:::o;12995:38::-;;;;;;;;;;;;;;;;;;;:::o;18687:114::-;18742:7;18751;18778:5;;;;;;;;;;;:11;;;18790:2;18778:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18778:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18778:15:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18778:15:0;;;;;;;;;;;;;;;;;;;;;;;;;18771:22;;;;18687:114;;;:::o;17660:179::-;484:5;;;;;;;;;;;470:19;;:10;:19;;;462:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17755:32;17767:5;17774:12;17755:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17819:12;17798:11;:18;17810:5;17798:18;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17660:179;;:::o;19677:190::-;19763:4;19744:8;;3645:1;3630:11;:16;:46;;;;3662:14;3650:9;:26;3630:46;3626:427;;;3693:16;3712:9;3693:28;;19780:57;19794:10;19806;19818:3;19823:6;19831:5;19780:13;:57::i;:::-;19855:4;19848:11;;3752:13;3779:9;3768:8;:20;3752:36;;3803:14;3840:3;3829:7;3821:5;:15;3820:23;;;;;;3803:40;;3869:9;3858:20;;3893:115;3923:6;3911:9;3900:8;:20;:29;3893:115;;;3986:4;;3969:22;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3969:22:0;;;3959:33;;;;;;3952:4;:40;;;;3893:115;;;3626:427;;;;;;19780:57;19794:10;19806;19818:3;19823:6;19831:5;19780:13;:57::i;:::-;19855:4;19848:11;;3626:427;19677:190;;;;;:::o;18313:141::-;484:5;;;;;;;;;;;470:19;;:10;:19;;;462:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18380:41;18397:5;;;;;;;;;;;18413:6;18380:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18440:6;18432:5;;:14;;;;;;;;;;;;;;;;;;18313:141;:::o;18040:126::-;484:5;;;;;;;;;;;470:19;;:10;:19;;;462:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18115:20;18123:4;18129:5;;18115:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;18115:20:0;;;;;;;;;;;;;;;;18153:5;;18146:4;:12;;;;;;;:::i;:::-;;18040:126;;:::o;12892:32::-;12922:2;12892:32;:::o;18915:113::-;18973:7;19000:5;;;;;;;;;;;:13;;;19014:5;19000:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19000:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19000:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19000:20:0;;;;;;;;;;;;;;;;18993:27;;18915:113;;;:::o;19311:137::-;19386:7;19413:27;19424:5;19431:8;19413:10;:27::i;:::-;19406:34;;19311:137;;;;:::o;18809:98::-;18852:7;18861;18888:5;;;;;;;;;;;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18888:11:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18888:11:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18888:11:0;;;;;;;;;;;;;;;;;;;;;;;;;18881:18;;;;18809:98;;:::o;17847:185::-;484:5;;;;;;;;;;;470:19;;:10;:19;;;462:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17944:34;17958:5;17965:12;17944:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18012:12;17989:13;:20;18003:5;17989:20;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;17847:185;;:::o;15907:1721::-;16041:1;16031:6;:11;16027:93;;;16080:3;16064:23;;16073:5;16064:23;;;16085:1;16064:23;;;;;;;;;;;;;;;;;;16102:7;;16027:93;16132:19;16154:17;16165:5;16154:10;:17::i;:::-;16132:39;;16205:6;16190:11;:21;;16182:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16260:9;16251:18;;:5;:18;;;16247:316;;16286:21;16310:28;16321:5;16328:9;16310:10;:28::i;:::-;16286:52;;16379:2;16357:13;:25;16353:199;;16428:6;16411:13;:23;;16403:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16478:58;16492:5;16499:9;16510:25;16528:6;16510:13;:17;;:25;;;;:::i;:::-;16478:13;:58::i;:::-;16353:199;16247:316;;16575:15;16593:6;16575:24;;16610:12;16625:1;16610:16;;16637:18;16658:1;16637:22;;16672:43;16684:5;16691:23;16707:6;16691:11;:15;;:23;;;;:::i;:::-;16672:11;:43::i;:::-;16761:7;:38;;;;16773:26;16788:5;16795:3;16773:14;:26::i;:::-;16772:27;16761:38;16757:696;;;16870:20;12922:2;16870:6;:15;;:20;;;;:::i;:::-;16863:27;;16928:1;16918:6;:11;:22;;16936:4;16918:22;;;16932:1;16918:22;16905:35;;16967:33;16979:20;16988:10;16979:4;:8;;:20;;;;:::i;:::-;16967:7;:11;;:33;;;;:::i;:::-;16957:43;;17053:21;17069:4;17053:11;;:15;;:21;;;;:::i;:::-;17039:11;:35;;;;17118:1;17094:33;;17103:5;17094:33;;;17122:4;17094:33;;;;;;;;;;;;;;;;;;17186:15;17204:27;17217:5;17224:6;17204:12;:27::i;:::-;17186:45;;17280:57;17292:7;17301:35;17325:10;17301:19;17312:7;17301:10;:19::i;:::-;:23;;:35;;;;:::i;:::-;17280:11;:57::i;:::-;17365:7;17357:28;;;17374:10;17357:28;;;;;;;;;;;;;;;;;;17421:7;17405:36;;17414:5;17405:36;;;17430:10;17405:36;;;;;;;;;;;;;;;;;;16757:696;;17509:6;17472:33;17497:7;17472:20;17481:10;17472:4;:8;;:20;;;;:::i;:::-;:24;;:33;;;;:::i;:::-;:43;17465:51;;;;17529:46;17541:3;17546:28;17566:7;17546:15;17557:3;17546:10;:15::i;:::-;:19;;:28;;;;:::i;:::-;17529:11;:46::i;:::-;17607:3;17591:29;;17600:5;17591:29;;;17612:7;17591:29;;;;;;;;;;;;;;;;;;15907:1721;;;;;;;;;;:::o;14552:188::-;14644:88;14704:8;14674:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14674:39:0;;;14664:50;;;;;;14724:6;14716:15;;14644:13;14651:5;14644:6;:13::i;:::-;:19;;:88;;;;;:::i;:::-;14552:188;;;:::o;14928:173::-;15002:51;12845:20;;;;;;;;;;;;;;;;;;;15043:8;15035:17;;15002:13;15009:5;15002:6;:13::i;:::-;:19;;:51;;;;;:::i;:::-;15064:5;;;;;;;;;;;:12;;;15077:5;15084:8;15064:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15064:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15064:29:0;;;;14928:173;;:::o;14007:133::-;14065:7;14100:31;12845:20;;;;;;;;;;;;;;;;;;;14100:13;14107:5;14100:6;:13::i;:::-;:18;;:31;;;;:::i;:::-;14092:40;;14085:47;;14007:133;;;:::o;14346:174::-;14414:7;14449:62;14504:4;14478:31;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14478:31:0;;;14468:42;;;;;;14449:13;14456:5;14449:6;:13::i;:::-;:18;;:62;;;;:::i;:::-;14441:71;;14434:78;;14346:174;;;;:::o;14148:190::-;14224:7;14259:70;14318:8;14288:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14288:39:0;;;14278:50;;;;;;14259:13;14266:5;14259:6;:13::i;:::-;:18;;:70;;;;:::i;:::-;14251:79;;14244:86;;14148:190;;;;:::o;20734:141::-;20792:7;20825:1;20820;:6;;20812:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20866:1;20862;:5;20855:12;;20734:141;;;;:::o;15142:145::-;15217:4;15241:13;:20;15255:5;15241:20;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;15263:11;:16;15275:3;15263:16;;;;;;;;;;;;;;;;;;;;;;;;;15241:38;15234:45;;15142:145;;;;:::o;21267:232::-;21330:7;21363:1;21358;:6;;21350:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21391:9;21407:1;21403;:5;;;;;;21391:17;;21432:1;21427;21423;:5;;;;;;:10;21419:52;;21458:1;21454;:5;21450:9;;21419:52;21490:1;21483:8;;;21267:232;;;;:::o;20562:164::-;20620:7;20640:9;20656:1;20652;:5;20640:17;;20681:1;20676;:6;;20668:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20717:1;20710:8;;;20562:164;;;;:::o;15525:374::-;15596:15;15624:17;15644:29;15666:6;15644:21;:29::i;:::-;15624:49;;15684:13;15700:24;15707:5;15714:9;15700:6;:24::i;:::-;15684:40;;15735:38;15745:5;15752:9;15771:1;15763:5;:9;15735;:38::i;:::-;15824:5;;;;;;;;;;;:15;;;15840:50;15848:5;15855;15862:9;15888:1;15873:5;;;;;;;;;;;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15873:12:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15873:12:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15873:12:0;;;;;;;;;;;;;;;;:16;15840:7;:50::i;:::-;15824:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15824:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15824:67:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15824:67:0;;;;;;;;;;;;;;;;15814:77;;15525:374;;;;;;:::o;13895:104::-;13945:7;13988:1;13980:10;;13972:19;;13965:26;;13895:104;;;:::o;2302:569::-;2418:17;2450:21;2463:7;2450:12;:21::i;:::-;2418:54;;2488:37;2518:5;2488:21;:37::i;:::-;2483:86;;2542:15;2549:7;2542:6;:15::i;:::-;2483:86;2622:12;2648:5;2640:19;;2715:5;:11;;;:20;;;;2754:4;2777:6;2674:124;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2674:124:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2674:124:0;2640:169;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2640:169:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2621:188:0;;;2830:7;2822:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2302:569;;;;;:::o;2879:610::-;2972:7;2992:17;3024:21;3037:7;3024:12;:21::i;:::-;2992:54;;3062:37;3092:5;3062:21;:37::i;:::-;3057:88;;3131:1;3123:10;;3116:17;;;;;3057:88;3198:12;3212:17;3241:5;3233:25;;3314:5;:10;;;:19;;;;3352:4;3273:98;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3273:98:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;3273:98:0;3233:149;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3233:149:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3197:185:0;;;;3403:7;3395:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3465:4;3454:27;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3454:27:0;;;;;;;;;;;;;;;;3447:34;;;;;2879:610;;;;;:::o;21556:270::-;21620:7;21639:15;21662:2;21639:26;;21676:12;21691:5;21676:20;;21709:83;21735:2;21727:10;;;;;;;;;21752:9;;;;;;;21789:1;21781:4;:9;;21709:83;;21811:7;21804:14;;;;21556:270;;;:::o;14748:172::-;14832:80;14888:4;14862:31;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14862:31:0;;;14852:42;;;;;;14904:6;14896:15;;14832:13;14839:5;14832:6;:13::i;:::-;:19;;:80;;;;;:::i;:::-;14748:172;;;:::o;15295:222::-;15388:7;15408:12;15458:3;15463;15468;15441:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15441:31:0;;;15431:42;;;;;;15423:51;;15408:66;;15507:1;15500:4;:8;15492:4;:17;;;;;;15485:24;;;15295:222;;;;;;:::o;1609:439::-;1670:7;1825:4;1820:10;;1865:4;1897:7;1941:30;;;;;;;;:::i;:::-;41:4:-1;34:5;30:16;25:3;21:26;14:5;7:41;87:2;83:7;78:2;73:3;69:12;65:26;61:2;54:38;1941:30:0;1931:41;;;;;;1777:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1777:218:0;;;1745:269;;;;;;1719:310;;1690:350;;1609:439;;;:::o;1215:323::-;1273:4;1290:16;1392:5;1380:18;1368:30;;1437:1;1429:10;;1417:8;:22;;:113;;;;;1463:66;1455:75;;1443:8;:87;;1417:113;1410:120;;;1215:323;;;:::o;2056:238::-;2108:21;2132:30;;;;;;;;:::i;:::-;41:4:-1;34:5;30:16;25:3;21:26;14:5;7:41;87:2;83:7;78:2;73:3;69:12;65:26;61:2;54:38;2132:30:0;2108:54;;2276:7;2265:8;2259:15;2252:4;2242:8;2238:19;2235:1;2227:57;2223:62;2221:66;;:::o;12269:8235::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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