ETH Price: $3,115.71 (+1.23%)
Gas: 17 Gwei

Token

BNS Token (BNS)
 

Overview

Max Total Supply

2,500,000,000 BNS

Holders

28 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Filtered by Token Holder
Kucoin Hacker
Balance
42,442,399.80049971 BNS

Value
$0.00
0xeB31973E0FeBF3e3D7058234a5eBbAe1aB4B8c23
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:
CoinBNS

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-07-13
*/

pragma solidity ^0.4.24;

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

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

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

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

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract TradeEngine {
    function balanceOf(address, address) public view returns (uint256) {}

    function orderBNS(
        address,
        uint256,
        address,
        uint256,
        uint256,
        uint256,
        address
    ) public returns (bool) {}

    function deductFee(
        address,
        address,
        uint256
    ) public returns (bool) {}
}

contract Token {
    function tokenBalanceOf(address, address) public view returns (uint256) {}

    function balanceOf(address) public view returns (uint256) {}

    function transfer(address, uint256) public returns (bool) {}

    function transferFrom(
        address,
        address,
        uint256
    ) public returns (bool) {}

    function frozenBalanceOf(address) public returns (uint256) {}

    function issueMulti(
        address[],
        uint256[],
        uint256,
        uint256
    ) public returns (bool) {}

    function lockTime(address) public view returns (uint256) {}

    function subscribe(
        address,
        address,
        address,
        uint256,
        uint256
    ) public returns (uint256) {}

    function charge(uint256) public returns (bool) {}

    function subscribeToSpp(
        address,
        uint256,
        uint256,
        address,
        address
    ) public returns (uint256) {}

    function closeSpp(uint256) public returns (bool) {}

    function getSppIdFromHash(bytes32) public returns (uint256) {}

    function setLastPaidAt(bytes32) public returns (bool) {}

    function setRemainingToBeFulfilled(bytes32, uint256)
        public
        returns (bool)
    {}

    function getRemainingToBeFulfilledByHash(bytes32)
        public
        returns (uint256)
    {}

    function getlistOfSubscriptions(address) public view returns (uint256[]) {}

    function getlistOfSppSubscriptions(address)
        public
        view
        returns (uint256[])
    {}

    function getcurrentTokenAmounts(uint256)
        public
        view
        returns (uint256[2] memory)
    {}

    function getTokenStats(uint256) public view returns (address[2] memory) {}

    function setcurrentTokenStats(
        bytes32,
        uint256,
        uint256
    ) public returns (bool) {}

    function getRemainingToBeFulfilledBySppID(uint256)
        public
        view
        returns (uint256)
    {}
}

contract BNSToken is Token {
    using SafeMath for uint256;

    event Subscribe(
        uint256 indexed orderId,
        address indexed merchantAddress,
        address indexed customerAddress,
        address token,
        uint256 value,
        uint256 period
    );
    event Charge(uint256 orderId);
    event SubscribeToSpp(
        uint256 indexed sppID,
        address indexed customerAddress,
        uint256 value,
        uint256 period,
        address indexed tokenGet,
        address tokenGive
    );
    event ChargeSpp(uint256 sppID, uint256 expires, uint256 nonce);
    event Deposit(
        address indexed token,
        address indexed user,
        uint256 amount,
        uint256 balance
    );
    event Withdraw(
        address indexed token,
        address indexed user,
        uint256 amount,
        uint256 balance
    );
    event CloseSpp(uint256 sppID);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Mint(string hash, address indexed account, uint256 value);
    event SetCurrentTokenStats(
        uint256 indexed sppID,
        uint256 amountGotten,
        uint256 amountGiven
    );

    modifier _ownerOnly() {
        require(msg.sender == owner);
        _;
    }

    modifier _tradeEngineOnly() {
        require(msg.sender == TradeEngineAddress);
        _;
    }

    bool public scLock = false;

    modifier _ifNotLocked() {
        require(scLock == false);
        _;
    }

    function setLock() public _ownerOnly {
        scLock = !scLock;
    }

    function changeOwner(address owner_) public _ownerOnly {
        potentialAdmin = owner_;
    }

    function becomeOwner() public {
        if (potentialAdmin == msg.sender) owner = msg.sender;
    }

    function mint(
        string hash,
        address account,
        uint256 value
    ) public _ownerOnly {
        require(account != address(0));
        require(
            SafeMath.add(totalSupply, value) <= totalPossibleSupply,
            "totalSupply can't be more than the totalPossibleSupply"
        );
        totalSupply = SafeMath.add(totalSupply, value);
        balances[account] = SafeMath.add(balances[account], value);
        emit Mint(hash, account, value);
    }

    function burn(uint256 value) public _ownerOnly {
        totalSupply = totalSupply.sub(value);
        balances[msg.sender] = balances[msg.sender].sub(value);
        emit Transfer(msg.sender, address(0), value);
    }

    function transfer(address _to, uint256 _value)
        public
        returns (bool success)
    {
        if (
            balances[msg.sender] >= _value &&
            _value >= 0 &&
            userdata[msg.sender].exists == false
        ) {
            balances[msg.sender] = balances[msg.sender].sub(_value);
            balances[_to] = balances[_to].add(_value);
            emit Transfer(msg.sender, _to, _value);
            return true;
        } else {
            return false;
        }
    }

    function issueMulti(
        address[] _to,
        uint256[] _value,
        uint256 ldays,
        uint256 period
    ) public _ownerOnly returns (bool success) {
        require(_value.length <= 20, "too long array");
        require(_value.length == _to.length, "array size misatch");
        uint256 sum = 0;
        userstats memory _oldData;
        uint256 _oldFrozen = 0;
        for (uint256 i = 0; i < _value.length; i++) {
            sum = sum.add(_value[i]);
        }
        if (balances[msg.sender] >= sum && sum > 0) {
            balances[msg.sender] = balances[msg.sender].sub(sum);
            for (uint256 j = 0; j < _to.length; j++) {
                balances[_to[j]] = balances[_to[j]].add(_value[j]);
                _oldData = userdata[_to[j]];
                _oldFrozen = _oldData.frozen_balance;

                userdata[_to[j]] = userstats({
                    exists: true,
                    frozen_balance: _oldFrozen.add(_value[j]),
                    lock_till: now.add((ldays.mul(86400))),
                    time_period: (period.mul(86400)),
                    per_tp_release_amt: SafeMath.div(
                        SafeMath.add(_value[j], _oldFrozen),
                        (ldays.div(period))
                    )
                });
                emit Transfer(msg.sender, _to[j], _value[j]);
            }
            return true;
        } else {
            return false;
        }
    }

    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    ) public returns (bool success) {
        if (
            balances[_from] >= _value &&
            _value >= 0 &&
            (allowed[_from][msg.sender] >= _value || _from == msg.sender)
        ) {
            userstats memory _userData = userdata[_from];

            if (_userData.exists == false) {
                _transfer(_from, _to, _value);
                return true;
            }

            uint256 lock = _userData.lock_till;

            if (now >= lock) {
                _userData.frozen_balance = 0;
                _userData.exists = false;
                userdata[_from] = _userData;
                _transfer(_from, _to, _value);
                return true;
            }

            uint256 a = (lock - now);
            uint256 b = _userData.time_period;
            uint256 should_be_frozen = SafeMath.mul(
                (SafeMath.div(a, b) + 1),
                _userData.per_tp_release_amt
            );

            if (_userData.frozen_balance > should_be_frozen) {
                _userData.frozen_balance = should_be_frozen;
                userdata[_from] = _userData;
            }

            if (balances[_from].sub(_value) >= _userData.frozen_balance) {
                _transfer(_from, _to, _value);
                return true;
            }

            return false;
        } else {
            return false;
        }
    }

    function _transfer(
        address _from,
        address _to,
        uint256 _value
    ) internal {
        balances[_to] = balances[_to].add(_value);
        if (_from != msg.sender)
            allowed[_from][msg.sender] = SafeMath.sub(
                allowed[_from][msg.sender],
                _value
            );
        balances[_from] = balances[_from].sub(_value);
        emit Transfer(_from, _to, _value);
    }

    function balanceOf(address _from) public view returns (uint256 balance) {
        return balances[_from];
    }

    function frozenBalanceOf(address _from) public returns (uint256 balance) {
        userstats memory _userData = userdata[_from];
        if (_userData.exists == false) return;

        uint256 lock = _userData.lock_till;

        if (now >= lock) {
            _userData.frozen_balance = 0;
            _userData.exists = false;
            userdata[_from] = _userData;
            return 0;
        }

        uint256 a = (lock - now);
        uint256 b = _userData.time_period;
        uint256 should_be_frozen = SafeMath.mul(
            (SafeMath.div(a, b) + 1),
            _userData.per_tp_release_amt
        );

        if (_userData.frozen_balance > should_be_frozen) {
            _userData.frozen_balance = should_be_frozen;
            userdata[_from] = _userData;
        }

        return _userData.frozen_balance;
    }

    function lockTime(address _from) public view returns (uint256 time) {
        if (userdata[_from].exists == false) revert();
        return userdata[_from].lock_till;
    }

    function deposit() public payable {
        tokens[0][msg.sender] = SafeMath.add(tokens[0][msg.sender], msg.value);
        emit Deposit(0, msg.sender, msg.value, tokens[0][msg.sender]);
    }

    function withdraw(uint256 amount) public {
        if (tokens[0][msg.sender] < amount) revert();
        tokens[0][msg.sender] = SafeMath.sub(tokens[0][msg.sender], amount);
        if (!msg.sender.call.value(amount)()) revert();
        emit Withdraw(0, msg.sender, amount, tokens[0][msg.sender]);
    }

    function depositToken(address token, uint256 amount) public {
        //remember to call Token(address).approve(this, amount) or this contract will not be able to do the transfer on your behalf.
        if (token == 0) revert();
        if (!Token(token).transferFrom(msg.sender, this, amount)) revert();
        tokens[token][msg.sender] = SafeMath.add(
            tokens[token][msg.sender],
            amount
        );
        emit Deposit(token, msg.sender, amount, tokens[token][msg.sender]);
    }

    function withdrawToken(address token, uint256 amount) public {
        if (token == 0) revert();
        if (tokens[token][msg.sender] < amount) revert();
        tokens[token][msg.sender] = SafeMath.sub(
            tokens[token][msg.sender],
            amount
        );
        if (!Token(token).transfer(msg.sender, amount)) revert();
        emit Withdraw(token, msg.sender, amount, tokens[token][msg.sender]);
    }

    function tokenBalanceOf(address token, address user)
        public
        view
        returns (uint256 balance)
    {
        return tokens[token][user];
    }

    function subscribe(
        address merchantAddress,
        address customerAddress,
        address token,
        uint256 value,
        uint256 period
    ) public _ifNotLocked returns (uint256 oID) {
        if (customerAddress != msg.sender || period < minPeriod) {
            return 0;
        }
        if (tokens[token][msg.sender] >= value && value > 0) {
            orderId += 1;
            subscriptiondata[orderId] = subscriptionstats({
                exists: true,
                value: value,
                period: period,
                lastPaidAt: now.sub(period),
                merchantAddress: merchantAddress,
                customerAddress: customerAddress,
                tokenType: token
            });
            subList[customerAddress].arr.push(orderId);
            emit Subscribe(
                orderId,
                merchantAddress,
                customerAddress,
                token,
                value,
                period
            );
            return orderId;
        }
    }

    function charge(uint256 orderId)
        public
        _ifNotLocked
        returns (bool success)
    {
        subscriptionstats memory _orderData = subscriptiondata[orderId];
        require(
            _orderData.exists == true,
            "This subscription does not exist, wrong orderId"
        );
        require(
            _orderData.merchantAddress == msg.sender,
            "You are not the real merchant"
        );
        require(
            (_orderData.lastPaidAt).add(_orderData.period) <= now,
            "charged too early"
        );
        address token = _orderData.tokenType;
        tokens[token][_orderData.customerAddress] = tokens[token][_orderData
            .customerAddress]
            .sub(_orderData.value);
        uint256 fee = ((_orderData.value).mul(25)).div(10000);
        tokens[token][feeAccount] = SafeMath.add(
            tokens[token][feeAccount],
            fee
        );
        tokens[token][_orderData.merchantAddress] = tokens[token][_orderData
            .merchantAddress]
            .add((_orderData.value.sub(fee)));
        _orderData.lastPaidAt = SafeMath.add(
            _orderData.lastPaidAt,
            _orderData.period
        );
        subscriptiondata[orderId] = _orderData;
        emit Charge(orderId);
        return true;
    }

    function closeSubscription(uint256 orderId) public returns (bool success) {
        subscriptionstats memory _orderData = subscriptiondata[orderId];
        require(
            _orderData.exists == true,
            "This subscription does not exist, wrong orderId OR already closed"
        );
        require(
            _orderData.customerAddress == msg.sender,
            "You are not the customer of this orderId"
        );
        subscriptiondata[orderId].exists = false;
        return true;
    }

    function subscribeToSpp(
        address customerAddress,
        uint256 value,
        uint256 period,
        address tokenGet,
        address tokenGive
    ) public _ifNotLocked returns (uint256 sID) {
        if (customerAddress != msg.sender || period < 86400) {
            return 0;
        }
        if (
            TradeEngine(TradeEngineAddress).balanceOf(
                tokenGive,
                customerAddress
            ) >= value
        ) {
            require(
                TradeEngine(TradeEngineAddress).deductFee(
                    customerAddress,
                    usdt,
                    uint256(2 * (10**usdtDecimal))
                ),
                "fee not able to charge"
            );
            sppID += 1;
            sppSubscriptionStats[sppID] = sppSubscribers({
                exists: true,
                customerAddress: customerAddress,
                tokenGet: tokenGet,
                tokenGive: tokenGive,
                value: value,
                remainingToBeFulfilled: value,
                period: period,
                lastPaidAt: now - period
            });
            tokenStats[sppID] = currentTokenStats({
                TokenToGet: tokenGet,
                TokenToGive: tokenGive,
                amountGotten: 0,
                amountGiven: 0
            });
            sppSubList[customerAddress].arr.push(sppID);
            emit SubscribeToSpp(
                sppID,
                customerAddress,
                value,
                period,
                tokenGet,
                tokenGive
            );
            return sppID;
        }
    }

    function chargeSpp(
        uint256 sppID,
        uint256 amountGet,
        uint256 amountGive,
        uint256 expires
    ) public _ownerOnly _ifNotLocked {
        sppSubscribers memory _subscriptionData = sppSubscriptionStats[sppID];
        require(
            amountGive == _subscriptionData.remainingToBeFulfilled,
            "check"
        );
        require(
            onGoing[sppID] < block.number,
            "chargeSpp is already onGoing for this sppId"
        );
        require(
            _subscriptionData.exists == true,
            "This SPP does not exist, wrong SPP ID"
        );
        require(
            (_subscriptionData.lastPaidAt).add(_subscriptionData.period) <= now,
            "Charged too early"
        );
        require(
            TradeEngine(TradeEngineAddress).deductFee(
                _subscriptionData.customerAddress,
                usdt,
                uint256(15 * rateEthUsdt/1000)
            ),
            "fee unable to charge"
        ); // need to multiply with 10^8??
        nonce += 1;
        bytes32 hash = sha256(
            abi.encodePacked(
                TradeEngineAddress,
                _subscriptionData.tokenGet,
                amountGet,
                _subscriptionData.tokenGive,
                amountGive,
                block.number + expires,
                nonce
            )
        );
        hash2sppId[hash] = sppID;
        onGoing[sppID] = block.number + expires;
        TradeEngine(TradeEngineAddress).orderBNS(
            _subscriptionData.tokenGet,
            amountGet,
            _subscriptionData.tokenGive,
            amountGive,
            block.number + expires,
            nonce,
            _subscriptionData.customerAddress
        );
        emit ChargeSpp(sppID, (block.number + expires), nonce);
    }

    function closeSpp(uint256 sppID) public returns (bool success) {
        if (msg.sender != sppSubscriptionStats[sppID].customerAddress)
            return false;
        sppSubscriptionStats[sppID].exists = false;
        emit CloseSpp(sppID);
        return true;
    }

    function setrateEthUsdt(uint256 _value) public _ownerOnly {
        rateEthUsdt = _value;
    }

    function setAddresses(address usdt1, address feeAccount1)
        public
        _ownerOnly
    {
        usdt = usdt1;
        feeAccount = feeAccount1;
    }

    function setUsdtDecimal(uint256 decimal) public _ownerOnly {
        usdtDecimal = decimal;
    }

    function setMinPeriod(uint256 p) public _ownerOnly {
        minPeriod = p;
    }

    function setTradeEngineAddress(address _add) public _ownerOnly {
        TradeEngineAddress = _add;
    }

    function setLastPaidAt(bytes32 hash) public returns (bool success) {
        if (msg.sender != TradeEngineAddress) return false;
        uint256 sppID = hash2sppId[hash];
        sppSubscribers memory _subscriptionData = sppSubscriptionStats[sppID];
        if (
            (now - (_subscriptionData.lastPaidAt + _subscriptionData.period)) <
            14400
        ) {
            sppSubscriptionStats[hash2sppId[hash]]
                .lastPaidAt = _subscriptionData.lastPaidAt.add(
                _subscriptionData.period
            );
        } else {
            sppSubscriptionStats[hash2sppId[hash]].lastPaidAt = now;
        }
        return true;
    }

    function setRemainingToBeFulfilled(bytes32 hash, uint256 amt)
        public
        returns (bool success)
    {
        if (msg.sender != TradeEngineAddress) return false;
        uint256 sppID = hash2sppId[hash];
        sppSubscribers memory _subscriptionData = sppSubscriptionStats[sppID];
        if ((_subscriptionData.remainingToBeFulfilled == amt))
            sppSubscriptionStats[hash2sppId[hash]]
                .remainingToBeFulfilled = _subscriptionData.value;
        else {
            sppSubscriptionStats[hash2sppId[hash]]
                .remainingToBeFulfilled = _subscriptionData
                .remainingToBeFulfilled
                .sub(amt);
        }
        return true;
    }

    function setcurrentTokenStats(
        bytes32 hash,
        uint256 amountGotten,
        uint256 amountGiven
    ) public returns (bool success) {
        if (msg.sender != TradeEngineAddress) return false;
        uint256 sppID = hash2sppId[hash];
        currentTokenStats memory _tokenStats = tokenStats[sppID];
        tokenStats[sppID].amountGotten = _tokenStats.amountGotten.add(
            amountGotten
        );
        tokenStats[sppID].amountGiven = _tokenStats.amountGiven.add(
            amountGiven
        );
        emit SetCurrentTokenStats(sppID, amountGotten, amountGiven);
        return true;
    }

    function isActiveSpp(uint256 sppID) public view returns (bool res) {
        return sppSubscriptionStats[sppID].exists;
    }

    function getSppIdFromHash(bytes32 hash) public returns (uint256 sppID) {
        return hash2sppId[hash];
    }

    function getLatestOrderId() public view returns (uint256 oId) {
        return orderId;
    }

    function getRemainingToBeFulfilledByHash(bytes32 hash)
        public
        _tradeEngineOnly
        returns (uint256 res)
    {
        return sppSubscriptionStats[hash2sppId[hash]].remainingToBeFulfilled;
    }

    function getRemainingToBeFulfilledBySppID(uint256 sppID)
        public
        view
        returns (uint256 res)
    {
        return sppSubscriptionStats[sppID].remainingToBeFulfilled;
    }

    function getlistOfSubscriptions(address _from)
        public
        view
        returns (uint256[] arr)
    {
        return subList[_from].arr;
    }

    function getlistOfSppSubscriptions(address _from)
        public
        view
        returns (uint256[] arr)
    {
        return sppSubList[_from].arr;
    }

    function getcurrentTokenAmounts(uint256 sppID)
        public
        view
        returns (uint256[2] memory arr)
    {
        arr[0] = tokenStats[sppID].amountGotten;
        arr[1] = tokenStats[sppID].amountGiven;
        return arr;
    }

    function getTokenStats(uint256 sppID)
        public
        view
        returns (address[2] memory arr)
    {
        arr[0] = tokenStats[sppID].TokenToGet;
        arr[1] = tokenStats[sppID].TokenToGive;
        return arr;
    }

    function getLatestSppId() public view returns (uint256 sppId) {
        return sppID;
    }

    function getTimeRemainingToCharge(uint256 sppID)
        public
        view
        returns (uint256 time)
    {
        return ((sppSubscriptionStats[sppID].lastPaidAt).add(sppSubscriptionStats[sppID].period) - now);
    }

    struct sppSubscribers {
        bool exists;
        address customerAddress;
        address tokenGive;
        address tokenGet;
        uint256 value;
        uint256 period;
        uint256 lastPaidAt;
        uint256 remainingToBeFulfilled;
    }

    struct currentTokenStats {
        address TokenToGet;
        uint256 amountGotten;
        address TokenToGive;
        uint256 amountGiven;
    }

    struct listOfSubscriptions {
        uint256[] arr;
    }

    struct listOfSppByAddress {
        uint256[] arr;
    }

    mapping(uint256 => currentTokenStats) tokenStats;
    mapping(address => listOfSppByAddress) sppSubList;
    mapping(address => listOfSubscriptions) subList;
    mapping(bytes32 => uint256) public hash2sppId;
    mapping(uint256 => uint256) public onGoing;
    mapping(uint256 => sppSubscribers) public sppSubscriptionStats;
    mapping(address => mapping(address => uint256)) internal allowed;
    mapping(address => mapping(address => uint256)) public tokens;
    mapping(address => userstats) public userdata;
    mapping(address => uint256) public balances;
    mapping(uint256 => subscriptionstats) public subscriptiondata;

    struct userstats {
        uint256 per_tp_release_amt;
        uint256 time_period;
        uint256 frozen_balance;
        uint256 lock_till;
        bool exists;
    }

    struct subscriptionstats {
        uint256 value;
        uint256 period;
        uint256 lastPaidAt;
        address merchantAddress;
        address customerAddress;
        address tokenType;
        bool exists;
    }

    uint256 public totalSupply;
    uint256 public totalPossibleSupply;
    uint256 public orderId;
    address public owner;
    address private potentialAdmin;
    address public TradeEngineAddress;
    uint256 sppID;
    address public usdt;
    uint256 public usdtDecimal;
    uint256 public rateEthUsdt;
    uint256 nonce;
    address public feeAccount;
    uint256 public minPeriod;
}

contract CoinBNS is BNSToken {
    function() public {
        revert();
    }

    string public name;
    uint8 public decimals;
    string public symbol;
    string public version = "H1.0";

    constructor() public {
        owner = msg.sender;
        balances[msg.sender] = 250000000000000000;
        totalSupply = 250000000000000000;
        totalPossibleSupply = 250000000000000000;
        name = "BNS Token";
        decimals = 8;
        symbol = "BNS";
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"getLatestSppId","outputs":[{"name":"sppId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TradeEngineAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"sppID","type":"uint256"}],"name":"getcurrentTokenAmounts","outputs":[{"name":"arr","type":"uint256[2]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"orderId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"},{"name":"user","type":"address"}],"name":"tokenBalanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"subscriptiondata","outputs":[{"name":"value","type":"uint256"},{"name":"period","type":"uint256"},{"name":"lastPaidAt","type":"uint256"},{"name":"merchantAddress","type":"address"},{"name":"customerAddress","type":"address"},{"name":"tokenType","type":"address"},{"name":"exists","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"}],"name":"setLastPaidAt","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"}],"name":"getRemainingToBeFulfilledByHash","outputs":[{"name":"res","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address[]"},{"name":"_value","type":"uint256[]"},{"name":"ldays","type":"uint256"},{"name":"period","type":"uint256"}],"name":"issueMulti","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"customerAddress","type":"address"},{"name":"value","type":"uint256"},{"name":"period","type":"uint256"},{"name":"tokenGet","type":"address"},{"name":"tokenGive","type":"address"}],"name":"subscribeToSpp","outputs":[{"name":"sID","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"sppID","type":"uint256"}],"name":"getTimeRemainingToCharge","outputs":[{"name":"time","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"usdt","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"sppID","type":"uint256"}],"name":"closeSpp","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"depositToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalPossibleSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"sppID","type":"uint256"}],"name":"isActiveSpp","outputs":[{"name":"res","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"usdtDecimal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getLatestOrderId","outputs":[{"name":"oId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"orderId","type":"uint256"}],"name":"closeSubscription","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"merchantAddress","type":"address"},{"name":"customerAddress","type":"address"},{"name":"token","type":"address"},{"name":"value","type":"uint256"},{"name":"period","type":"uint256"}],"name":"subscribe","outputs":[{"name":"oID","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeAccount","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"}],"name":"getlistOfSubscriptions","outputs":[{"name":"arr","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"sppSubscriptionStats","outputs":[{"name":"exists","type":"bool"},{"name":"customerAddress","type":"address"},{"name":"tokenGive","type":"address"},{"name":"tokenGet","type":"address"},{"name":"value","type":"uint256"},{"name":"period","type":"uint256"},{"name":"lastPaidAt","type":"uint256"},{"name":"remainingToBeFulfilled","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userdata","outputs":[{"name":"per_tp_release_amt","type":"uint256"},{"name":"time_period","type":"uint256"},{"name":"frozen_balance","type":"uint256"},{"name":"lock_till","type":"uint256"},{"name":"exists","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rateEthUsdt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"string"},{"name":"account","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"usdt1","type":"address"},{"name":"feeAccount1","type":"address"}],"name":"setAddresses","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"setrateEthUsdt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"onGoing","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"}],"name":"getSppIdFromHash","outputs":[{"name":"sppID","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"amt","type":"uint256"}],"name":"setRemainingToBeFulfilled","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"}],"name":"lockTime","outputs":[{"name":"time","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"sppID","type":"uint256"},{"name":"amountGet","type":"uint256"},{"name":"amountGive","type":"uint256"},{"name":"expires","type":"uint256"}],"name":"chargeSpp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"decimal","type":"uint256"}],"name":"setUsdtDecimal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"}],"name":"frozenBalanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"sppID","type":"uint256"}],"name":"getTokenStats","outputs":[{"name":"arr","type":"address[2]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"scLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"hash2sppId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"orderId","type":"uint256"}],"name":"charge","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"amountGotten","type":"uint256"},{"name":"amountGiven","type":"uint256"}],"name":"setcurrentTokenStats","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"sppID","type":"uint256"}],"name":"getRemainingToBeFulfilledBySppID","outputs":[{"name":"res","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"p","type":"uint256"}],"name":"setMinPeriod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"becomeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"}],"name":"getlistOfSppSubscriptions","outputs":[{"name":"arr","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_add","type":"address"}],"name":"setTradeEngineAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"orderId","type":"uint256"},{"indexed":true,"name":"merchantAddress","type":"address"},{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"period","type":"uint256"}],"name":"Subscribe","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"orderId","type":"uint256"}],"name":"Charge","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sppID","type":"uint256"},{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"period","type":"uint256"},{"indexed":true,"name":"tokenGet","type":"address"},{"indexed":false,"name":"tokenGive","type":"address"}],"name":"SubscribeToSpp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sppID","type":"uint256"},{"indexed":false,"name":"expires","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"ChargeSpp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sppID","type":"uint256"}],"name":"CloseSpp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"hash","type":"string"},{"indexed":true,"name":"account","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sppID","type":"uint256"},{"indexed":false,"name":"amountGotten","type":"uint256"},{"indexed":false,"name":"amountGiven","type":"uint256"}],"name":"SetCurrentTokenStats","type":"event"}]

6000805460ff1916905560c0604052600460808190527f48312e300000000000000000000000000000000000000000000000000000000060a09081526200004a91601c919062000133565b503480156200005857600080fd5b50600f8054600160a060020a031916339081179091556000908152600a60209081526040918290206703782dace9d9000090819055600c819055600d55815180830190925260098083527f424e5320546f6b656e000000000000000000000000000000000000000000000092909101918252620000d89160199162000133565b50601a805460ff191660081790556040805180820190915260038082527f424e53000000000000000000000000000000000000000000000000000000000060209092019182526200012c91601b9162000133565b50620001d8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017657805160ff1916838001178555620001a6565b82800160010185558215620001a6579182015b82811115620001a657825182559160200191906001019062000189565b50620001b4929150620001b8565b5090565b620001d591905b80821115620001b45760008155600101620001bf565b90565b613fde80620001e86000396000f3006080604052600436106102f55763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018d8f4d811461030757806301b14a761461032e57806301ba03fd1461035f57806306fdde03146103b2578063095ea7b31461043c578063163de5e51461047457806318160ddd146104895780631bea80061461049e5780631e762358146104c55780631fcc491614610523578063238449aa1461053b57806323b872dd1461055357806324a2a1b51461057d57806327e235e3146106145780632ca34171146106355780632e1a7d4d1461066a5780632e5d1ee1146106845780632f48ab7d1461069c57806330a9e79a146106b1578063313ce567146106c9578063338b5dea146106f45780633450cdaf1461071857806335c3ab331461072d578063362efc3d146107455780633d7fe9731461075a57806342966c681461076f578063479a4f3214610787578063508493bc1461079f57806354fd4d50146107c65780635ae0bd46146107db57806365e17c9d1461080e5780636a6c158f146108235780636f8b81ab1461089457806370a08231146108fe57806373c4c1961461091f57806376b6d5791461096d5780637aba6f37146109825780637e8816b9146109975780638da5cb5b14610a0157806390107afe14610a1657806395ac424814610a3d57806395d89b4114610a5557806395ff736c14610a6a57806398e38bc614610a825780639e281a9814610a9a578063a2eba67414610abe578063a4beda6314610ad9578063a6f9dae114610afa578063a9059cbb14610b1b578063ac3aaa2114610b3f578063bbd63bc214610b60578063be91de5314610b78578063c582951414610b99578063c5f5d82214610bb1578063d0e30db014610bc6578063e44f24c814610bce578063e457e1e514610be6578063f21b844314610bfe578063f54ad5df14610c1c578063f821076914610c34578063f9dca98914610c4c578063f9fa764714610c61578063fb8241d114610c82578063ffd49c8414610ca3575b34801561030157600080fd5b50600080fd5b34801561031357600080fd5b5061031c610cb8565b60408051918252519081900360200190f35b34801561033a57600080fd5b50610343610cbe565b60408051600160a060020a039092168252519081900360200190f35b34801561036b57600080fd5b50610377600435610ccd565b6040518082600260200280838360005b8381101561039f578181015183820152602001610387565b5050505090500191505060405180910390f35b3480156103be57600080fd5b506103c7610d02565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104015781810151838201526020016103e9565b50505050905090810190601f16801561042e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044857600080fd5b50610460600160a060020a0360043516602435610d90565b604080519115158252519081900360200190f35b34801561048057600080fd5b5061031c610df7565b34801561049557600080fd5b5061031c610dfd565b3480156104aa57600080fd5b5061031c600160a060020a0360043581169060243516610e03565b3480156104d157600080fd5b506104dd600435610e2e565b60408051978852602088019690965286860194909452600160a060020a03928316606087015290821660808601521660a0840152151560c0830152519081900360e00190f35b34801561052f57600080fd5b50610460600435610e7e565b34801561054757600080fd5b5061031c600435610fac565b34801561055f57600080fd5b50610460600160a060020a0360043581169060243516604435610fe9565b34801561058957600080fd5b506040805160206004803580820135838102808601850190965280855261046095369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975050843595505050602090920135915061122f9050565b34801561062057600080fd5b5061031c600160a060020a0360043516611671565b34801561064157600080fd5b5061031c600160a060020a03600435811690602435906044359060643581169060843516611683565b34801561067657600080fd5b50610682600435611b45565b005b34801561069057600080fd5b5061031c600435611c2b565b3480156106a857600080fd5b50610343611c5d565b3480156106bd57600080fd5b50610460600435611c6c565b3480156106d557600080fd5b506106de611cea565b6040805160ff9092168252519081900360200190f35b34801561070057600080fd5b50610682600160a060020a0360043516602435611cf3565b34801561072457600080fd5b5061031c611e41565b34801561073957600080fd5b50610460600435611e47565b34801561075157600080fd5b5061031c611e5c565b34801561076657600080fd5b5061031c611e62565b34801561077b57600080fd5b50610682600435611e68565b34801561079357600080fd5b50610460600435611ef0565b3480156107ab57600080fd5b5061031c600160a060020a03600435811690602435166120d3565b3480156107d257600080fd5b506103c76120f0565b3480156107e757600080fd5b5061031c600160a060020a036004358116906024358116906044351660643560843561214b565b34801561081a57600080fd5b50610343612336565b34801561082f57600080fd5b50610844600160a060020a0360043516612345565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610880578181015183820152602001610868565b505050509050019250505060405180910390f35b3480156108a057600080fd5b506108ac6004356123b1565b604080519815158952600160a060020a0397881660208a015295871688870152939095166060870152608086019190915260a085015260c084019290925260e083019190915251908190036101000190f35b34801561090a57600080fd5b5061031c600160a060020a0360043516612407565b34801561092b57600080fd5b50610940600160a060020a0360043516612422565b60408051958652602086019490945284840192909252606084015215156080830152519081900360a00190f35b34801561097957600080fd5b5061031c612454565b34801561098e57600080fd5b5061068261245a565b3480156109a357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261068294369492936024939284019190819084018382808284375094975050508335600160a060020a0316945050506020909101359050612485565b348015610a0d57600080fd5b50610343612647565b348015610a2257600080fd5b50610682600160a060020a0360043581169060243516612656565b348015610a4957600080fd5b506106826004356126a8565b348015610a6157600080fd5b506103c76126c4565b348015610a7657600080fd5b5061031c60043561271f565b348015610a8e57600080fd5b5061031c600435612731565b348015610aa657600080fd5b50610682600160a060020a0360043516602435612743565b348015610aca57600080fd5b506104606004356024356128d4565b348015610ae557600080fd5b5061031c600160a060020a03600435166129f8565b348015610b0657600080fd5b50610682600160a060020a0360043516612a41565b348015610b2757600080fd5b50610460600160a060020a0360043516602435612a87565b348015610b4b57600080fd5b50610682600435602435604435606435612b70565b348015610b6c57600080fd5b506106826004356131bc565b348015610b8457600080fd5b5061031c600160a060020a03600435166131d8565b348015610ba557600080fd5b5061037760043561334e565b348015610bbd57600080fd5b5061046061338f565b610682613398565b348015610bda57600080fd5b5061031c600435613420565b348015610bf257600080fd5b50610460600435613432565b348015610c0a57600080fd5b50610460600435602435604435613896565b348015610c2857600080fd5b5061031c6004356139b0565b348015610c4057600080fd5b506106826004356139c6565b348015610c5857600080fd5b506106826139e2565b348015610c6d57600080fd5b50610844600160a060020a0360043516613a17565b348015610c8e57600080fd5b50610682600160a060020a0360043516613a81565b348015610caf57600080fd5b5061031c613ac7565b60125490565b601154600160a060020a031681565b610cd5613e7e565b6000828152600160208181526040832080830154855292859052908152600390910154908201525b919050565b6019805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d885780601f10610d5d57610100808354040283529160200191610d88565b820191906000526020600020905b815481529060010190602001808311610d6b57829003601f168201915b505050505081565b336000818152600760209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b600e5481565b600c5481565b600160a060020a03918216600090815260086020908152604080832093909416825291909152205490565b600b60205260009081526040902080546001820154600283015460038401546004850154600590950154939492939192600160a060020a03918216929082169181169060a060020a900460ff1687565b600080610e89613e99565b601154600160a060020a03163314610ea45760009250610fa5565b505060008281526004602081815260408084205480855260068084529482902082516101008082018552825460ff81161515835204600160a060020a0390811695820195909552600182015485169381019390935260028101549093166060830152600383015460808301529282015460a08201819052600583015460c08301819052929094015460e08201529192613840910142031015610f7d5760a081015160c0820151610f599163ffffffff613acd16565b60008581526004602090815260408083205483526006909152902060050155610fa0565b600084815260046020908152604080832054835260069091529020426005909101555b600192505b5050919050565b601154600090600160a060020a03163314610fc657600080fd5b506000908152600460209081526040808320548352600691829052909120015490565b6000610ff3613edd565b600160a060020a0385166000908152600a60205260408120548190819081908711801590611022575060008710155b80156110635750600160a060020a0389166000908152600760209081526040808320338452909152902054871115806110635750600160a060020a03891633145b1561121e57600160a060020a038916600090815260096020908152604091829020825160a081018452815481526001820154928101929092526002810154928201929092526003820154606082015260049091015460ff161515608082018190529095506110df576110d6898989613b35565b60019550611223565b60608501519350428411611153576000604086810182815260808801838152600160a060020a038d1684526009602090815292909320885181559188015160018301555160028201556060870151600382015590516004909101805460ff19169115159190911790556110d6898989613b35565b42840392508460200151915061117961116c8484613c4b565b6001018660000151613c94565b905080856040015111156111df576040858101828152600160a060020a038b16600090815260096020908152929020875181559187015160018301555160028201556060860151600382015560808601516004909101805460ff19169115159190911790555b604080860151600160a060020a038b166000908152600a602052919091205461120e908963ffffffff613d3316565b1061121e576110d6898989613b35565b600095505b50505050509392505050565b60008061123a613edd565b600f5460009081908190600160a060020a0316331461125857600080fd5b8851601410156112b2576040805160e560020a62461bcd02815260206004820152600e60248201527f746f6f206c6f6e67206172726179000000000000000000000000000000000000604482015290519081900360640190fd5b895189511461130b576040805160e560020a62461bcd02815260206004820152601260248201527f61727261792073697a65206d6973617463680000000000000000000000000000604482015290519081900360640190fd5b6000945060009250600091505b885182101561135657611349898381518110151561133257fe5b60209081029091010151869063ffffffff613acd16565b9450600190910190611318565b336000908152600a602052604090205485118015906113755750600085115b1561165f57336000908152600a602052604090205461139a908663ffffffff613d3316565b336000908152600a602052604081209190915590505b89518110156116565761141589828151811015156113ca57fe5b90602001906020020151600a60008d858151811015156113e657fe5b6020908102909101810151600160a060020a03168252810191909152604001600020549063ffffffff613acd16565b600a60008c8481518110151561142757fe5b90602001906020020151600160a060020a0316600160a060020a0316815260200190815260200160002081905550600960008b8381518110151561146757fe5b6020908102909101810151600160a060020a03168252818101929092526040908101600020815160a081810184528254825260018301549482019490945260028201548184018190526003830154606083015260049092015460ff161515608082015282519384019092528b5191965094508190611514906114ff908d90869081106114ef57fe5b9060200190602002015187613acd565b61150f8c8c63ffffffff613c4b16565b613c4b565b815260200161152c896201518063ffffffff613c9416565b81526020016115428b8481518110151561133257fe5b815260200161156a61155d8b6201518063ffffffff613c9416565b429063ffffffff613acd16565b815260200160011515815250600960008c8481518110151561158857fe5b602090810291909101810151600160a060020a03168252818101929092526040908101600020835181559183015160018301558201516002820155606082015160038201556080909101516004909101805460ff191691151591909117905589518a90829081106115f557fe5b90602001906020020151600160a060020a031633600160a060020a0316600080516020613f938339815191528b8481518110151561162f57fe5b906020019060200201516040518082815260200191505060405180910390a36001016113b0565b60019550611664565b600095505b5050505050949350505050565b600a6020526000908152604090205481565b6000805460ff161561169457600080fd5b600160a060020a038616331415806116ae57506201518084105b156116bb57506000611b3c565b601154604080517ff7888aec000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152898116602483015291518893929092169163f7888aec916044808201926020929091908290030181600087803b15801561172e57600080fd5b505af1158015611742573d6000803e3d6000fd5b505050506040513d602081101561175857600080fd5b505110611b3c57601154601354601454604080517f8d27551c000000000000000000000000000000000000000000000000000000008152600160a060020a038b811660048301529384166024820152600a9290920a6002026044830152519190921691638d27551c9160648083019260209291908290030181600087803b1580156117e257600080fd5b505af11580156117f6573d6000803e3d6000fd5b505050506040513d602081101561180c57600080fd5b50511515611864576040805160e560020a62461bcd02815260206004820152601660248201527f666565206e6f742061626c6520746f2063686172676500000000000000000000604482015290519081900360640190fd5b60016012600082825401925050819055506101006040519081016040528060011515815260200187600160a060020a0316815260200183600160a060020a0316815260200184600160a060020a0316815260200186815260200185815260200185420381526020018681525060066000601254815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a815481600160a060020a030219169083600160a060020a0316021790555060408201518160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555060608201518160020160006101000a815481600160a060020a030219169083600160a060020a031602179055506080820151816003015560a0820151816004015560c0820151816005015560e0820151816006015590505060806040519081016040528084600160a060020a031681526020016000815260200183600160a060020a03168152602001600081525060016000601254815260200190815260200160002060008201518160000160006101000a815481600160a060020a030219169083600160a060020a031602179055506020820151816001015560408201518160020160006101000a815481600160a060020a030219169083600160a060020a03160217905550606082015181600301559050506002600087600160a060020a0316600160a060020a03168152602001908152602001600020600001601254908060018154018082558091505090600182039060005260206000200160009091929091909150555082600160a060020a031686600160a060020a03166012547f8ce78e5e59d7809eb7afac0af873cae7a1f71eb1920fd368dac0649e63adf8778888876040518084815260200183815260200182600160a060020a0316600160a060020a03168152602001935050505060405180910390a4506012545b95945050505050565b336000908152600080516020613f738339815191526020526040902054811115611b6e57600080fd5b336000908152600080516020613f738339815191526020526040902054611b959082613d33565b336000818152600080516020613f738339815191526020526040808220939093559151909183919081818185875af1925050501515611bd357600080fd5b336000818152600080516020613f73833981519152602090815260408083205481518681529283015280517ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679281900390910190a350565b600081815260066020526040812060048101546005909101544291611c56919063ffffffff613acd16565b0392915050565b601354600160a060020a031681565b6000818152600660205260408120546101009004600160a060020a03163314611c9757506000610cfd565b600082815260066020908152604091829020805460ff19169055815184815291517fab149a4a47ec4cf93213cf59505a91b36ad878b91f11aef9c3b307e9fe267ff59281900390910190a1506001919050565b601a5460ff1681565b600160a060020a0382161515611d0857600080fd5b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390529051600160a060020a038416916323b872dd9160648083019260209291908290030181600087803b158015611d7657600080fd5b505af1158015611d8a573d6000803e3d6000fd5b505050506040513d6020811015611da057600080fd5b50511515611dad57600080fd5b600160a060020a0382166000908152600860209081526040808320338452909152902054611ddb9082613acd565b600160a060020a03831660008181526008602090815260408083203380855290835292819020859055805186815291820194909452835191937fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d792918290030190a35050565b600d5481565b60009081526006602052604090205460ff1690565b60145481565b600e5490565b600f54600160a060020a03163314611e7f57600080fd5b600c54611e92908263ffffffff613d3316565b600c55336000908152600a6020526040902054611eb5908263ffffffff613d3316565b336000818152600a6020908152604080832094909455835185815293519193600080516020613f93833981519152929081900390910190a350565b6000611efa613f0f565b506000828152600b6020908152604091829020825160e08101845281548152600180830154938201939093526002820154938101939093526003810154600160a060020a03908116606085015260048201548116608085015260059091015490811660a084015260a060020a900460ff16151560c0830181905214612015576040805160e560020a62461bcd02815260206004820152604160248201527f5468697320737562736372697074696f6e20646f6573206e6f7420657869737460448201527f2c2077726f6e67206f726465724964204f5220616c726561647920636c6f736560648201527f6400000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b6080810151600160a060020a0316331461209f576040805160e560020a62461bcd02815260206004820152602860248201527f596f7520617265206e6f742074686520637573746f6d6572206f66207468697360448201527f206f726465724964000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50506000908152600b60205260409020600501805474ff000000000000000000000000000000000000000019169055600190565b600860209081526000928352604080842090915290825290205481565b601c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d885780601f10610d5d57610100808354040283529160200191610d88565b6000805460ff161561215c57600080fd5b600160a060020a03851633141580612175575060185482105b1561218257506000611b3c565b600160a060020a038416600090815260086020908152604080832033845290915290205483118015906121b55750600083115b15611b3c57600e805460010190556040805160e081018252848152602081018490529081016121ea428563ffffffff613d3316565b8152600160a060020a03808916602080840182905289831660408086018290528a8516606080880182905260016080988901819052600e80546000908152600b88528581208c5181558c890151818501558c87015160028201558c85015160038083018054928e1673ffffffffffffffffffffffffffffffffffffffff199384161790559c8e0151600483018054918e1691831691909117905560a08e01516005909201805460c0909f0151151560a060020a0274ff00000000000000000000000000000000000000001993909d169e9091169d909d171699909917909a5584885297855282872089548154998a0182559088529685902090970195909555955486519485529184018990528386018890529451919390927f0843f64730f47d7c06ca83851c8ae310dc56e6b4dcee02b2d6052c665f5c8396929081900390910190a450600e54611b3c565b601754600160a060020a031681565b600160a060020a0381166000908152600360209081526040918290208054835181840281018401909452808452606093928301828280156123a557602002820191906000526020600020905b815481526020019060010190808311612391575b50505050509050919050565b6006602081905260009182526040909120805460018201546002830154600384015460048501546005860154959096015460ff851696610100909504600160a060020a0390811696948116959316939192919088565b600160a060020a03166000908152600a602052604090205490565b600960205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b60155481565b600f54600160a060020a0316331461247157600080fd5b6000805460ff19811660ff90911615179055565b600f54600160a060020a0316331461249c57600080fd5b600160a060020a03821615156124b157600080fd5b600d546124c0600c5483613acd565b111561253c576040805160e560020a62461bcd02815260206004820152603660248201527f746f74616c537570706c792063616e2774206265206d6f7265207468616e207460448201527f686520746f74616c506f737369626c65537570706c7900000000000000000000606482015290519081900360840190fd5b612548600c5482613acd565b600c55600160a060020a0382166000908152600a602052604090205461256e9082613acd565b600a600084600160a060020a0316600160a060020a031681526020019081526020016000208190555081600160a060020a03167fe6bab8482938cc5ee73daf742a37c01b05d5240a45798f7244ded92a3318b0a584836040518080602001838152602001828103825284818151815260200191508051906020019080838360005b838110156126075781810151838201526020016125ef565b50505050905090810190601f1680156126345780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2505050565b600f54600160a060020a031681565b600f54600160a060020a0316331461266d57600080fd5b60138054600160a060020a0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560178054929093169116179055565b600f54600160a060020a031633146126bf57600080fd5b601555565b601b805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d885780601f10610d5d57610100808354040283529160200191610d88565b60056020526000908152604090205481565b60009081526004602052604090205490565b600160a060020a038216151561275857600080fd5b600160a060020a038216600090815260086020908152604080832033845290915290205481111561278857600080fd5b600160a060020a03821660009081526008602090815260408083203384529091529020546127b69082613d33565b600160a060020a0383166000818152600860209081526040808320338085529083528184209590955580517fa9059cbb00000000000000000000000000000000000000000000000000000000815260048101959095526024850186905251929363a9059cbb9360448083019491928390030190829087803b15801561283a57600080fd5b505af115801561284e573d6000803e3d6000fd5b505050506040513d602081101561286457600080fd5b5051151561287157600080fd5b600160a060020a038216600081815260086020908152604080832033808552908352928190205481518681529283015280519293927ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679281900390910190a35050565b6000806128df613e99565b601154600160a060020a031633146128fa57600092506129f0565b505060008381526004602081815260408084205480855260068084529482902082516101008082018552825460ff81161515835204600160a060020a0390811695820195909552600182015485169381019390935260028101549093166060830152600383015460808301529282015460a0820152600582015460c082015292015460e083018190529091908414156129b6576080810151600086815260046020908152604080832054835260069182905290912001556129eb565b60e08101516129cb908563ffffffff613d3316565b600086815260046020908152604080832054835260069182905290912001555b600192505b505092915050565b600160a060020a03811660009081526009602052604081206004015460ff161515612a2257600080fd5b50600160a060020a031660009081526009602052604090206003015490565b600f54600160a060020a03163314612a5857600080fd5b6010805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b336000908152600a60205260408120548211801590612aa7575060008210155b8015612ac657503360009081526009602052604090206004015460ff16155b15612b6857336000908152600a6020526040902054612aeb908363ffffffff613d3316565b336000908152600a602052604080822092909255600160a060020a03851681522054612b1d908363ffffffff613acd16565b600160a060020a0384166000818152600a6020908152604091829020939093558051858152905191923392600080516020613f938339815191529281900390910190a3506001610df1565b506000610df1565b612b78613e99565b600f54600090600160a060020a03163314612b9257600080fd5b60005460ff1615612ba257600080fd5b60008681526006602081815260409283902083516101008082018652825460ff81161515835204600160a060020a039081169382019390935260018201548316948101949094526002810154909116606084015260038101546080840152600481015460a0840152600581015460c0840152015460e082018190529092508414612c76576040805160e560020a62461bcd02815260206004820152600560248201527f636865636b000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000868152600560205260409020544311612d01576040805160e560020a62461bcd02815260206004820152602b60248201527f63686172676553707020697320616c7265616479206f6e476f696e6720666f7260448201527f2074686973207370704964000000000000000000000000000000000000000000606482015290519081900360840190fd5b81511515600114612d82576040805160e560020a62461bcd02815260206004820152602560248201527f546869732053505020646f6573206e6f742065786973742c2077726f6e67205360448201527f5050204944000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b42612d9e8360a001518460c00151613acd90919063ffffffff16565b1115612df4576040805160e560020a62461bcd02815260206004820152601160248201527f4368617267656420746f6f206561726c79000000000000000000000000000000604482015290519081900360640190fd5b601154602083810151601354601554604080517f8d27551c000000000000000000000000000000000000000000000000000000008152600160a060020a03948516600482015292841660248401526103e8600f909202919091046044830152519190931692638d27551c9260648083019391928290030181600087803b158015612e7d57600080fd5b505af1158015612e91573d6000803e3d6000fd5b505050506040513d6020811015612ea757600080fd5b50511515612eff576040805160e560020a62461bcd02815260206004820152601460248201527f66656520756e61626c6520746f20636861726765000000000000000000000000604482015290519081900360640190fd5b6016805460010190819055601154606084015160408086015181516c01000000000000000000000000600160a060020a03958616810260208084019190915294861681026034830152604882018c905291909416026068840152607c8301889052438701609c84015260bc808401949094528051808403909401845260dc90920191829052825160029392918291908401908083835b60208310612fb45780518252601f199092019160209182019101612f95565b51815160209384036101000a600019018019909216911617905260405191909301945091925050808303816000865af1158015612ff5573d6000803e3d6000fd5b5050506040513d602081101561300a57600080fd5b8101908080519060200190929190505050905085600460008360001916600019168152602001908152602001600020819055508243016005600088815260200190815260200160002081905550601160009054906101000a9004600160a060020a0316600160a060020a031663e71fc25883606001518785604001518888430160165489602001516040518863ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018088600160a060020a0316600160a060020a0316815260200187815260200186600160a060020a0316600160a060020a0316815260200185815260200184815260200183815260200182600160a060020a0316600160a060020a03168152602001975050505050505050602060405180830381600087803b15801561314457600080fd5b505af1158015613158573d6000803e3d6000fd5b505050506040513d602081101561316e57600080fd5b505060165460408051888152438601602082015280820192909252517fdc59cb800441b609d52736f840eadb9d500f119feb9c7d529c2b297448a8f9b69181900360600190a1505050505050565b600f54600160a060020a031633146131d357600080fd5b601455565b60006131e2613edd565b50600160a060020a0382166000908152600960209081526040808320815160a08101835281548152600182015493810193909352600281015491830191909152600381015460608301526004015460ff1615156080820181905290919081908190819061324e57613344565b606085015193504284116132bd576000604086810182815260808801838152600160a060020a038b16845260096020908152928420895181559289015160018401559051600283015560608801516003830155516004909101805460ff19169115159190911790559550613344565b4284039250846020015191506132d661116c8484613c4b565b9050808560400151111561333c576040858101828152600160a060020a038916600090815260096020908152929020875181559187015160018301555160028201556060860151600382015560808601516004909101805460ff19169115159190911790555b846040015195505b5050505050919050565b613356613e7e565b600082815260016020818152604083208054600160a060020a039081168652959093529081526002909101549092169181019190915290565b60005460ff1681565b336000908152600080516020613f7383398151915260205260409020546133bf9034613acd565b336000818152600080516020613f73833981519152602090815260408083208590558051348152918201949094528351929391927fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7929181900390910190a3565b60046020526000908152604090205481565b600061343c613f0f565b60008054819060ff161561344f57600080fd5b6000858152600b6020908152604091829020825160e08101845281548152600180830154938201939093526002820154938101939093526003810154600160a060020a03908116606085015260048201548116608085015260059091015490811660a084015260a060020a900460ff16151560c0830181905291945014613546576040805160e560020a62461bcd02815260206004820152602f60248201527f5468697320737562736372697074696f6e20646f6573206e6f7420657869737460448201527f2c2077726f6e67206f7264657249640000000000000000000000000000000000606482015290519081900360840190fd5b6060830151600160a060020a031633146135aa576040805160e560020a62461bcd02815260206004820152601d60248201527f596f7520617265206e6f7420746865207265616c206d65726368616e74000000604482015290519081900360640190fd5b426135c684602001518560400151613acd90919063ffffffff16565b111561361c576040805160e560020a62461bcd02815260206004820152601160248201527f6368617267656420746f6f206561726c79000000000000000000000000000000604482015290519081900360640190fd5b60a08301518351600160a060020a03808316600090815260086020908152604080832060808a015190941683529290522054919350613661919063ffffffff613d3316565b600160a060020a03808416600090815260086020908152604080832060808901519094168352929052205582516136b390612710906136a790601963ffffffff613c9416565b9063ffffffff613c4b16565b600160a060020a038084166000908152600860209081526040808320601754909416835292905220549091506136e99082613acd565b600160a060020a03808416600090815260086020908152604080832060175490941683529290522055825161375f90613728908363ffffffff613d3316565b600160a060020a03808516600090815260086020908152604080832060608a0151909416835292905220549063ffffffff613acd16565b600160a060020a038084166000908152600860209081526040808320606089015190941683529281529082902092909255840151908401516137a19190613acd565b60408085019182526000878152600b60209081529082902086518155818701516001820155925160028401556060860151600384018054600160a060020a0392831673ffffffffffffffffffffffffffffffffffffffff1991821617909155608088015160048601805491841691831691909117905560a08801516005909501805460c08a0151151560a060020a0274ff000000000000000000000000000000000000000019979094169216919091179490941617909255805187815290517f431163547fced35c0aced0a8ac036d2b939dc0b4735e83fccc8f442a5558fb2e929181900390910190a1506001949350505050565b6000806138a1613f4b565b601154600160a060020a031633146138bc57600092506139a7565b505060008481526004602090815260408083205480845260018084529382902082516080810184528154600160a060020a0390811682529582015494810185905260028201549095169285019290925260039091015460608401529190613929908663ffffffff613acd16565b600083815260016020819052604090912001556060810151613951908563ffffffff613acd16565b600083815260016020908152604091829020600301929092558051878152918201869052805184927f64f082c554b329aaedbeef798fa215c941f194265b910414a734652fd323cfcc92908290030190a2600192505b50509392505050565b6000908152600660208190526040909120015490565b600f54600160a060020a031633146139dd57600080fd5b601855565b601054600160a060020a0316331415613a1557600f805473ffffffffffffffffffffffffffffffffffffffff1916331790555b565b600160a060020a0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156123a557602002820191906000526020600020908154815260200190600101908083116123915750505050509050919050565b600f54600160a060020a03163314613a9857600080fd5b6011805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60185481565b600082820183811015613b2a576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b8091505b5092915050565b600160a060020a0382166000908152600a6020526040902054613b5e908263ffffffff613acd16565b600160a060020a038084166000908152600a602052604090209190915583163314613bd657600160a060020a0383166000908152600760209081526040808320338452909152902054613bb19082613d33565b600160a060020a03841660009081526007602090815260408083203384529091529020555b600160a060020a0383166000908152600a6020526040902054613bff908263ffffffff613d3316565b600160a060020a038085166000818152600a60209081526040918290209490945580518581529051928616939192600080516020613f93833981519152929181900390910190a3505050565b6000613c8d83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d75565b9392505050565b600080831515613ca75760009150613b2e565b50828202828482811515613cb757fe5b0414613b2a576040805160e560020a62461bcd02815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000613c8d83836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613e1d565b60008082818511613e075760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613dcc578181015183820152602001613db4565b50505050905090810190601f168015613df95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508385811515613e1357fe5b0495945050505050565b6000808285851115613e745760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015613dcc578181015183820152602001613db4565b5050509103919050565b60408051808201825290600290829080388339509192915050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b60a060405190810160405280600081526020016000815260200160008152602001600081526020016000151581525090565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056005eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582073379843f1a6cc28081504c5515fd40655dfc56624ded97b1bd3f1dd5d5c6c990029

Deployed Bytecode

0x6080604052600436106102f55763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018d8f4d811461030757806301b14a761461032e57806301ba03fd1461035f57806306fdde03146103b2578063095ea7b31461043c578063163de5e51461047457806318160ddd146104895780631bea80061461049e5780631e762358146104c55780631fcc491614610523578063238449aa1461053b57806323b872dd1461055357806324a2a1b51461057d57806327e235e3146106145780632ca34171146106355780632e1a7d4d1461066a5780632e5d1ee1146106845780632f48ab7d1461069c57806330a9e79a146106b1578063313ce567146106c9578063338b5dea146106f45780633450cdaf1461071857806335c3ab331461072d578063362efc3d146107455780633d7fe9731461075a57806342966c681461076f578063479a4f3214610787578063508493bc1461079f57806354fd4d50146107c65780635ae0bd46146107db57806365e17c9d1461080e5780636a6c158f146108235780636f8b81ab1461089457806370a08231146108fe57806373c4c1961461091f57806376b6d5791461096d5780637aba6f37146109825780637e8816b9146109975780638da5cb5b14610a0157806390107afe14610a1657806395ac424814610a3d57806395d89b4114610a5557806395ff736c14610a6a57806398e38bc614610a825780639e281a9814610a9a578063a2eba67414610abe578063a4beda6314610ad9578063a6f9dae114610afa578063a9059cbb14610b1b578063ac3aaa2114610b3f578063bbd63bc214610b60578063be91de5314610b78578063c582951414610b99578063c5f5d82214610bb1578063d0e30db014610bc6578063e44f24c814610bce578063e457e1e514610be6578063f21b844314610bfe578063f54ad5df14610c1c578063f821076914610c34578063f9dca98914610c4c578063f9fa764714610c61578063fb8241d114610c82578063ffd49c8414610ca3575b34801561030157600080fd5b50600080fd5b34801561031357600080fd5b5061031c610cb8565b60408051918252519081900360200190f35b34801561033a57600080fd5b50610343610cbe565b60408051600160a060020a039092168252519081900360200190f35b34801561036b57600080fd5b50610377600435610ccd565b6040518082600260200280838360005b8381101561039f578181015183820152602001610387565b5050505090500191505060405180910390f35b3480156103be57600080fd5b506103c7610d02565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104015781810151838201526020016103e9565b50505050905090810190601f16801561042e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044857600080fd5b50610460600160a060020a0360043516602435610d90565b604080519115158252519081900360200190f35b34801561048057600080fd5b5061031c610df7565b34801561049557600080fd5b5061031c610dfd565b3480156104aa57600080fd5b5061031c600160a060020a0360043581169060243516610e03565b3480156104d157600080fd5b506104dd600435610e2e565b60408051978852602088019690965286860194909452600160a060020a03928316606087015290821660808601521660a0840152151560c0830152519081900360e00190f35b34801561052f57600080fd5b50610460600435610e7e565b34801561054757600080fd5b5061031c600435610fac565b34801561055f57600080fd5b50610460600160a060020a0360043581169060243516604435610fe9565b34801561058957600080fd5b506040805160206004803580820135838102808601850190965280855261046095369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975050843595505050602090920135915061122f9050565b34801561062057600080fd5b5061031c600160a060020a0360043516611671565b34801561064157600080fd5b5061031c600160a060020a03600435811690602435906044359060643581169060843516611683565b34801561067657600080fd5b50610682600435611b45565b005b34801561069057600080fd5b5061031c600435611c2b565b3480156106a857600080fd5b50610343611c5d565b3480156106bd57600080fd5b50610460600435611c6c565b3480156106d557600080fd5b506106de611cea565b6040805160ff9092168252519081900360200190f35b34801561070057600080fd5b50610682600160a060020a0360043516602435611cf3565b34801561072457600080fd5b5061031c611e41565b34801561073957600080fd5b50610460600435611e47565b34801561075157600080fd5b5061031c611e5c565b34801561076657600080fd5b5061031c611e62565b34801561077b57600080fd5b50610682600435611e68565b34801561079357600080fd5b50610460600435611ef0565b3480156107ab57600080fd5b5061031c600160a060020a03600435811690602435166120d3565b3480156107d257600080fd5b506103c76120f0565b3480156107e757600080fd5b5061031c600160a060020a036004358116906024358116906044351660643560843561214b565b34801561081a57600080fd5b50610343612336565b34801561082f57600080fd5b50610844600160a060020a0360043516612345565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610880578181015183820152602001610868565b505050509050019250505060405180910390f35b3480156108a057600080fd5b506108ac6004356123b1565b604080519815158952600160a060020a0397881660208a015295871688870152939095166060870152608086019190915260a085015260c084019290925260e083019190915251908190036101000190f35b34801561090a57600080fd5b5061031c600160a060020a0360043516612407565b34801561092b57600080fd5b50610940600160a060020a0360043516612422565b60408051958652602086019490945284840192909252606084015215156080830152519081900360a00190f35b34801561097957600080fd5b5061031c612454565b34801561098e57600080fd5b5061068261245a565b3480156109a357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261068294369492936024939284019190819084018382808284375094975050508335600160a060020a0316945050506020909101359050612485565b348015610a0d57600080fd5b50610343612647565b348015610a2257600080fd5b50610682600160a060020a0360043581169060243516612656565b348015610a4957600080fd5b506106826004356126a8565b348015610a6157600080fd5b506103c76126c4565b348015610a7657600080fd5b5061031c60043561271f565b348015610a8e57600080fd5b5061031c600435612731565b348015610aa657600080fd5b50610682600160a060020a0360043516602435612743565b348015610aca57600080fd5b506104606004356024356128d4565b348015610ae557600080fd5b5061031c600160a060020a03600435166129f8565b348015610b0657600080fd5b50610682600160a060020a0360043516612a41565b348015610b2757600080fd5b50610460600160a060020a0360043516602435612a87565b348015610b4b57600080fd5b50610682600435602435604435606435612b70565b348015610b6c57600080fd5b506106826004356131bc565b348015610b8457600080fd5b5061031c600160a060020a03600435166131d8565b348015610ba557600080fd5b5061037760043561334e565b348015610bbd57600080fd5b5061046061338f565b610682613398565b348015610bda57600080fd5b5061031c600435613420565b348015610bf257600080fd5b50610460600435613432565b348015610c0a57600080fd5b50610460600435602435604435613896565b348015610c2857600080fd5b5061031c6004356139b0565b348015610c4057600080fd5b506106826004356139c6565b348015610c5857600080fd5b506106826139e2565b348015610c6d57600080fd5b50610844600160a060020a0360043516613a17565b348015610c8e57600080fd5b50610682600160a060020a0360043516613a81565b348015610caf57600080fd5b5061031c613ac7565b60125490565b601154600160a060020a031681565b610cd5613e7e565b6000828152600160208181526040832080830154855292859052908152600390910154908201525b919050565b6019805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d885780601f10610d5d57610100808354040283529160200191610d88565b820191906000526020600020905b815481529060010190602001808311610d6b57829003601f168201915b505050505081565b336000818152600760209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b600e5481565b600c5481565b600160a060020a03918216600090815260086020908152604080832093909416825291909152205490565b600b60205260009081526040902080546001820154600283015460038401546004850154600590950154939492939192600160a060020a03918216929082169181169060a060020a900460ff1687565b600080610e89613e99565b601154600160a060020a03163314610ea45760009250610fa5565b505060008281526004602081815260408084205480855260068084529482902082516101008082018552825460ff81161515835204600160a060020a0390811695820195909552600182015485169381019390935260028101549093166060830152600383015460808301529282015460a08201819052600583015460c08301819052929094015460e08201529192613840910142031015610f7d5760a081015160c0820151610f599163ffffffff613acd16565b60008581526004602090815260408083205483526006909152902060050155610fa0565b600084815260046020908152604080832054835260069091529020426005909101555b600192505b5050919050565b601154600090600160a060020a03163314610fc657600080fd5b506000908152600460209081526040808320548352600691829052909120015490565b6000610ff3613edd565b600160a060020a0385166000908152600a60205260408120548190819081908711801590611022575060008710155b80156110635750600160a060020a0389166000908152600760209081526040808320338452909152902054871115806110635750600160a060020a03891633145b1561121e57600160a060020a038916600090815260096020908152604091829020825160a081018452815481526001820154928101929092526002810154928201929092526003820154606082015260049091015460ff161515608082018190529095506110df576110d6898989613b35565b60019550611223565b60608501519350428411611153576000604086810182815260808801838152600160a060020a038d1684526009602090815292909320885181559188015160018301555160028201556060870151600382015590516004909101805460ff19169115159190911790556110d6898989613b35565b42840392508460200151915061117961116c8484613c4b565b6001018660000151613c94565b905080856040015111156111df576040858101828152600160a060020a038b16600090815260096020908152929020875181559187015160018301555160028201556060860151600382015560808601516004909101805460ff19169115159190911790555b604080860151600160a060020a038b166000908152600a602052919091205461120e908963ffffffff613d3316565b1061121e576110d6898989613b35565b600095505b50505050509392505050565b60008061123a613edd565b600f5460009081908190600160a060020a0316331461125857600080fd5b8851601410156112b2576040805160e560020a62461bcd02815260206004820152600e60248201527f746f6f206c6f6e67206172726179000000000000000000000000000000000000604482015290519081900360640190fd5b895189511461130b576040805160e560020a62461bcd02815260206004820152601260248201527f61727261792073697a65206d6973617463680000000000000000000000000000604482015290519081900360640190fd5b6000945060009250600091505b885182101561135657611349898381518110151561133257fe5b60209081029091010151869063ffffffff613acd16565b9450600190910190611318565b336000908152600a602052604090205485118015906113755750600085115b1561165f57336000908152600a602052604090205461139a908663ffffffff613d3316565b336000908152600a602052604081209190915590505b89518110156116565761141589828151811015156113ca57fe5b90602001906020020151600a60008d858151811015156113e657fe5b6020908102909101810151600160a060020a03168252810191909152604001600020549063ffffffff613acd16565b600a60008c8481518110151561142757fe5b90602001906020020151600160a060020a0316600160a060020a0316815260200190815260200160002081905550600960008b8381518110151561146757fe5b6020908102909101810151600160a060020a03168252818101929092526040908101600020815160a081810184528254825260018301549482019490945260028201548184018190526003830154606083015260049092015460ff161515608082015282519384019092528b5191965094508190611514906114ff908d90869081106114ef57fe5b9060200190602002015187613acd565b61150f8c8c63ffffffff613c4b16565b613c4b565b815260200161152c896201518063ffffffff613c9416565b81526020016115428b8481518110151561133257fe5b815260200161156a61155d8b6201518063ffffffff613c9416565b429063ffffffff613acd16565b815260200160011515815250600960008c8481518110151561158857fe5b602090810291909101810151600160a060020a03168252818101929092526040908101600020835181559183015160018301558201516002820155606082015160038201556080909101516004909101805460ff191691151591909117905589518a90829081106115f557fe5b90602001906020020151600160a060020a031633600160a060020a0316600080516020613f938339815191528b8481518110151561162f57fe5b906020019060200201516040518082815260200191505060405180910390a36001016113b0565b60019550611664565b600095505b5050505050949350505050565b600a6020526000908152604090205481565b6000805460ff161561169457600080fd5b600160a060020a038616331415806116ae57506201518084105b156116bb57506000611b3c565b601154604080517ff7888aec000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152898116602483015291518893929092169163f7888aec916044808201926020929091908290030181600087803b15801561172e57600080fd5b505af1158015611742573d6000803e3d6000fd5b505050506040513d602081101561175857600080fd5b505110611b3c57601154601354601454604080517f8d27551c000000000000000000000000000000000000000000000000000000008152600160a060020a038b811660048301529384166024820152600a9290920a6002026044830152519190921691638d27551c9160648083019260209291908290030181600087803b1580156117e257600080fd5b505af11580156117f6573d6000803e3d6000fd5b505050506040513d602081101561180c57600080fd5b50511515611864576040805160e560020a62461bcd02815260206004820152601660248201527f666565206e6f742061626c6520746f2063686172676500000000000000000000604482015290519081900360640190fd5b60016012600082825401925050819055506101006040519081016040528060011515815260200187600160a060020a0316815260200183600160a060020a0316815260200184600160a060020a0316815260200186815260200185815260200185420381526020018681525060066000601254815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a815481600160a060020a030219169083600160a060020a0316021790555060408201518160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555060608201518160020160006101000a815481600160a060020a030219169083600160a060020a031602179055506080820151816003015560a0820151816004015560c0820151816005015560e0820151816006015590505060806040519081016040528084600160a060020a031681526020016000815260200183600160a060020a03168152602001600081525060016000601254815260200190815260200160002060008201518160000160006101000a815481600160a060020a030219169083600160a060020a031602179055506020820151816001015560408201518160020160006101000a815481600160a060020a030219169083600160a060020a03160217905550606082015181600301559050506002600087600160a060020a0316600160a060020a03168152602001908152602001600020600001601254908060018154018082558091505090600182039060005260206000200160009091929091909150555082600160a060020a031686600160a060020a03166012547f8ce78e5e59d7809eb7afac0af873cae7a1f71eb1920fd368dac0649e63adf8778888876040518084815260200183815260200182600160a060020a0316600160a060020a03168152602001935050505060405180910390a4506012545b95945050505050565b336000908152600080516020613f738339815191526020526040902054811115611b6e57600080fd5b336000908152600080516020613f738339815191526020526040902054611b959082613d33565b336000818152600080516020613f738339815191526020526040808220939093559151909183919081818185875af1925050501515611bd357600080fd5b336000818152600080516020613f73833981519152602090815260408083205481518681529283015280517ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679281900390910190a350565b600081815260066020526040812060048101546005909101544291611c56919063ffffffff613acd16565b0392915050565b601354600160a060020a031681565b6000818152600660205260408120546101009004600160a060020a03163314611c9757506000610cfd565b600082815260066020908152604091829020805460ff19169055815184815291517fab149a4a47ec4cf93213cf59505a91b36ad878b91f11aef9c3b307e9fe267ff59281900390910190a1506001919050565b601a5460ff1681565b600160a060020a0382161515611d0857600080fd5b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390529051600160a060020a038416916323b872dd9160648083019260209291908290030181600087803b158015611d7657600080fd5b505af1158015611d8a573d6000803e3d6000fd5b505050506040513d6020811015611da057600080fd5b50511515611dad57600080fd5b600160a060020a0382166000908152600860209081526040808320338452909152902054611ddb9082613acd565b600160a060020a03831660008181526008602090815260408083203380855290835292819020859055805186815291820194909452835191937fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d792918290030190a35050565b600d5481565b60009081526006602052604090205460ff1690565b60145481565b600e5490565b600f54600160a060020a03163314611e7f57600080fd5b600c54611e92908263ffffffff613d3316565b600c55336000908152600a6020526040902054611eb5908263ffffffff613d3316565b336000818152600a6020908152604080832094909455835185815293519193600080516020613f93833981519152929081900390910190a350565b6000611efa613f0f565b506000828152600b6020908152604091829020825160e08101845281548152600180830154938201939093526002820154938101939093526003810154600160a060020a03908116606085015260048201548116608085015260059091015490811660a084015260a060020a900460ff16151560c0830181905214612015576040805160e560020a62461bcd02815260206004820152604160248201527f5468697320737562736372697074696f6e20646f6573206e6f7420657869737460448201527f2c2077726f6e67206f726465724964204f5220616c726561647920636c6f736560648201527f6400000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b6080810151600160a060020a0316331461209f576040805160e560020a62461bcd02815260206004820152602860248201527f596f7520617265206e6f742074686520637573746f6d6572206f66207468697360448201527f206f726465724964000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50506000908152600b60205260409020600501805474ff000000000000000000000000000000000000000019169055600190565b600860209081526000928352604080842090915290825290205481565b601c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d885780601f10610d5d57610100808354040283529160200191610d88565b6000805460ff161561215c57600080fd5b600160a060020a03851633141580612175575060185482105b1561218257506000611b3c565b600160a060020a038416600090815260086020908152604080832033845290915290205483118015906121b55750600083115b15611b3c57600e805460010190556040805160e081018252848152602081018490529081016121ea428563ffffffff613d3316565b8152600160a060020a03808916602080840182905289831660408086018290528a8516606080880182905260016080988901819052600e80546000908152600b88528581208c5181558c890151818501558c87015160028201558c85015160038083018054928e1673ffffffffffffffffffffffffffffffffffffffff199384161790559c8e0151600483018054918e1691831691909117905560a08e01516005909201805460c0909f0151151560a060020a0274ff00000000000000000000000000000000000000001993909d169e9091169d909d171699909917909a5584885297855282872089548154998a0182559088529685902090970195909555955486519485529184018990528386018890529451919390927f0843f64730f47d7c06ca83851c8ae310dc56e6b4dcee02b2d6052c665f5c8396929081900390910190a450600e54611b3c565b601754600160a060020a031681565b600160a060020a0381166000908152600360209081526040918290208054835181840281018401909452808452606093928301828280156123a557602002820191906000526020600020905b815481526020019060010190808311612391575b50505050509050919050565b6006602081905260009182526040909120805460018201546002830154600384015460048501546005860154959096015460ff851696610100909504600160a060020a0390811696948116959316939192919088565b600160a060020a03166000908152600a602052604090205490565b600960205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b60155481565b600f54600160a060020a0316331461247157600080fd5b6000805460ff19811660ff90911615179055565b600f54600160a060020a0316331461249c57600080fd5b600160a060020a03821615156124b157600080fd5b600d546124c0600c5483613acd565b111561253c576040805160e560020a62461bcd02815260206004820152603660248201527f746f74616c537570706c792063616e2774206265206d6f7265207468616e207460448201527f686520746f74616c506f737369626c65537570706c7900000000000000000000606482015290519081900360840190fd5b612548600c5482613acd565b600c55600160a060020a0382166000908152600a602052604090205461256e9082613acd565b600a600084600160a060020a0316600160a060020a031681526020019081526020016000208190555081600160a060020a03167fe6bab8482938cc5ee73daf742a37c01b05d5240a45798f7244ded92a3318b0a584836040518080602001838152602001828103825284818151815260200191508051906020019080838360005b838110156126075781810151838201526020016125ef565b50505050905090810190601f1680156126345780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2505050565b600f54600160a060020a031681565b600f54600160a060020a0316331461266d57600080fd5b60138054600160a060020a0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560178054929093169116179055565b600f54600160a060020a031633146126bf57600080fd5b601555565b601b805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d885780601f10610d5d57610100808354040283529160200191610d88565b60056020526000908152604090205481565b60009081526004602052604090205490565b600160a060020a038216151561275857600080fd5b600160a060020a038216600090815260086020908152604080832033845290915290205481111561278857600080fd5b600160a060020a03821660009081526008602090815260408083203384529091529020546127b69082613d33565b600160a060020a0383166000818152600860209081526040808320338085529083528184209590955580517fa9059cbb00000000000000000000000000000000000000000000000000000000815260048101959095526024850186905251929363a9059cbb9360448083019491928390030190829087803b15801561283a57600080fd5b505af115801561284e573d6000803e3d6000fd5b505050506040513d602081101561286457600080fd5b5051151561287157600080fd5b600160a060020a038216600081815260086020908152604080832033808552908352928190205481518681529283015280519293927ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679281900390910190a35050565b6000806128df613e99565b601154600160a060020a031633146128fa57600092506129f0565b505060008381526004602081815260408084205480855260068084529482902082516101008082018552825460ff81161515835204600160a060020a0390811695820195909552600182015485169381019390935260028101549093166060830152600383015460808301529282015460a0820152600582015460c082015292015460e083018190529091908414156129b6576080810151600086815260046020908152604080832054835260069182905290912001556129eb565b60e08101516129cb908563ffffffff613d3316565b600086815260046020908152604080832054835260069182905290912001555b600192505b505092915050565b600160a060020a03811660009081526009602052604081206004015460ff161515612a2257600080fd5b50600160a060020a031660009081526009602052604090206003015490565b600f54600160a060020a03163314612a5857600080fd5b6010805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b336000908152600a60205260408120548211801590612aa7575060008210155b8015612ac657503360009081526009602052604090206004015460ff16155b15612b6857336000908152600a6020526040902054612aeb908363ffffffff613d3316565b336000908152600a602052604080822092909255600160a060020a03851681522054612b1d908363ffffffff613acd16565b600160a060020a0384166000818152600a6020908152604091829020939093558051858152905191923392600080516020613f938339815191529281900390910190a3506001610df1565b506000610df1565b612b78613e99565b600f54600090600160a060020a03163314612b9257600080fd5b60005460ff1615612ba257600080fd5b60008681526006602081815260409283902083516101008082018652825460ff81161515835204600160a060020a039081169382019390935260018201548316948101949094526002810154909116606084015260038101546080840152600481015460a0840152600581015460c0840152015460e082018190529092508414612c76576040805160e560020a62461bcd02815260206004820152600560248201527f636865636b000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000868152600560205260409020544311612d01576040805160e560020a62461bcd02815260206004820152602b60248201527f63686172676553707020697320616c7265616479206f6e476f696e6720666f7260448201527f2074686973207370704964000000000000000000000000000000000000000000606482015290519081900360840190fd5b81511515600114612d82576040805160e560020a62461bcd02815260206004820152602560248201527f546869732053505020646f6573206e6f742065786973742c2077726f6e67205360448201527f5050204944000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b42612d9e8360a001518460c00151613acd90919063ffffffff16565b1115612df4576040805160e560020a62461bcd02815260206004820152601160248201527f4368617267656420746f6f206561726c79000000000000000000000000000000604482015290519081900360640190fd5b601154602083810151601354601554604080517f8d27551c000000000000000000000000000000000000000000000000000000008152600160a060020a03948516600482015292841660248401526103e8600f909202919091046044830152519190931692638d27551c9260648083019391928290030181600087803b158015612e7d57600080fd5b505af1158015612e91573d6000803e3d6000fd5b505050506040513d6020811015612ea757600080fd5b50511515612eff576040805160e560020a62461bcd02815260206004820152601460248201527f66656520756e61626c6520746f20636861726765000000000000000000000000604482015290519081900360640190fd5b6016805460010190819055601154606084015160408086015181516c01000000000000000000000000600160a060020a03958616810260208084019190915294861681026034830152604882018c905291909416026068840152607c8301889052438701609c84015260bc808401949094528051808403909401845260dc90920191829052825160029392918291908401908083835b60208310612fb45780518252601f199092019160209182019101612f95565b51815160209384036101000a600019018019909216911617905260405191909301945091925050808303816000865af1158015612ff5573d6000803e3d6000fd5b5050506040513d602081101561300a57600080fd5b8101908080519060200190929190505050905085600460008360001916600019168152602001908152602001600020819055508243016005600088815260200190815260200160002081905550601160009054906101000a9004600160a060020a0316600160a060020a031663e71fc25883606001518785604001518888430160165489602001516040518863ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018088600160a060020a0316600160a060020a0316815260200187815260200186600160a060020a0316600160a060020a0316815260200185815260200184815260200183815260200182600160a060020a0316600160a060020a03168152602001975050505050505050602060405180830381600087803b15801561314457600080fd5b505af1158015613158573d6000803e3d6000fd5b505050506040513d602081101561316e57600080fd5b505060165460408051888152438601602082015280820192909252517fdc59cb800441b609d52736f840eadb9d500f119feb9c7d529c2b297448a8f9b69181900360600190a1505050505050565b600f54600160a060020a031633146131d357600080fd5b601455565b60006131e2613edd565b50600160a060020a0382166000908152600960209081526040808320815160a08101835281548152600182015493810193909352600281015491830191909152600381015460608301526004015460ff1615156080820181905290919081908190819061324e57613344565b606085015193504284116132bd576000604086810182815260808801838152600160a060020a038b16845260096020908152928420895181559289015160018401559051600283015560608801516003830155516004909101805460ff19169115159190911790559550613344565b4284039250846020015191506132d661116c8484613c4b565b9050808560400151111561333c576040858101828152600160a060020a038916600090815260096020908152929020875181559187015160018301555160028201556060860151600382015560808601516004909101805460ff19169115159190911790555b846040015195505b5050505050919050565b613356613e7e565b600082815260016020818152604083208054600160a060020a039081168652959093529081526002909101549092169181019190915290565b60005460ff1681565b336000908152600080516020613f7383398151915260205260409020546133bf9034613acd565b336000818152600080516020613f73833981519152602090815260408083208590558051348152918201949094528351929391927fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7929181900390910190a3565b60046020526000908152604090205481565b600061343c613f0f565b60008054819060ff161561344f57600080fd5b6000858152600b6020908152604091829020825160e08101845281548152600180830154938201939093526002820154938101939093526003810154600160a060020a03908116606085015260048201548116608085015260059091015490811660a084015260a060020a900460ff16151560c0830181905291945014613546576040805160e560020a62461bcd02815260206004820152602f60248201527f5468697320737562736372697074696f6e20646f6573206e6f7420657869737460448201527f2c2077726f6e67206f7264657249640000000000000000000000000000000000606482015290519081900360840190fd5b6060830151600160a060020a031633146135aa576040805160e560020a62461bcd02815260206004820152601d60248201527f596f7520617265206e6f7420746865207265616c206d65726368616e74000000604482015290519081900360640190fd5b426135c684602001518560400151613acd90919063ffffffff16565b111561361c576040805160e560020a62461bcd02815260206004820152601160248201527f6368617267656420746f6f206561726c79000000000000000000000000000000604482015290519081900360640190fd5b60a08301518351600160a060020a03808316600090815260086020908152604080832060808a015190941683529290522054919350613661919063ffffffff613d3316565b600160a060020a03808416600090815260086020908152604080832060808901519094168352929052205582516136b390612710906136a790601963ffffffff613c9416565b9063ffffffff613c4b16565b600160a060020a038084166000908152600860209081526040808320601754909416835292905220549091506136e99082613acd565b600160a060020a03808416600090815260086020908152604080832060175490941683529290522055825161375f90613728908363ffffffff613d3316565b600160a060020a03808516600090815260086020908152604080832060608a0151909416835292905220549063ffffffff613acd16565b600160a060020a038084166000908152600860209081526040808320606089015190941683529281529082902092909255840151908401516137a19190613acd565b60408085019182526000878152600b60209081529082902086518155818701516001820155925160028401556060860151600384018054600160a060020a0392831673ffffffffffffffffffffffffffffffffffffffff1991821617909155608088015160048601805491841691831691909117905560a08801516005909501805460c08a0151151560a060020a0274ff000000000000000000000000000000000000000019979094169216919091179490941617909255805187815290517f431163547fced35c0aced0a8ac036d2b939dc0b4735e83fccc8f442a5558fb2e929181900390910190a1506001949350505050565b6000806138a1613f4b565b601154600160a060020a031633146138bc57600092506139a7565b505060008481526004602090815260408083205480845260018084529382902082516080810184528154600160a060020a0390811682529582015494810185905260028201549095169285019290925260039091015460608401529190613929908663ffffffff613acd16565b600083815260016020819052604090912001556060810151613951908563ffffffff613acd16565b600083815260016020908152604091829020600301929092558051878152918201869052805184927f64f082c554b329aaedbeef798fa215c941f194265b910414a734652fd323cfcc92908290030190a2600192505b50509392505050565b6000908152600660208190526040909120015490565b600f54600160a060020a031633146139dd57600080fd5b601855565b601054600160a060020a0316331415613a1557600f805473ffffffffffffffffffffffffffffffffffffffff1916331790555b565b600160a060020a0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156123a557602002820191906000526020600020908154815260200190600101908083116123915750505050509050919050565b600f54600160a060020a03163314613a9857600080fd5b6011805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60185481565b600082820183811015613b2a576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b8091505b5092915050565b600160a060020a0382166000908152600a6020526040902054613b5e908263ffffffff613acd16565b600160a060020a038084166000908152600a602052604090209190915583163314613bd657600160a060020a0383166000908152600760209081526040808320338452909152902054613bb19082613d33565b600160a060020a03841660009081526007602090815260408083203384529091529020555b600160a060020a0383166000908152600a6020526040902054613bff908263ffffffff613d3316565b600160a060020a038085166000818152600a60209081526040918290209490945580518581529051928616939192600080516020613f93833981519152929181900390910190a3505050565b6000613c8d83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d75565b9392505050565b600080831515613ca75760009150613b2e565b50828202828482811515613cb757fe5b0414613b2a576040805160e560020a62461bcd02815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000613c8d83836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613e1d565b60008082818511613e075760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613dcc578181015183820152602001613db4565b50505050905090810190601f168015613df95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508385811515613e1357fe5b0495945050505050565b6000808285851115613e745760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015613dcc578181015183820152602001613db4565b5050509103919050565b60408051808201825290600290829080388339509192915050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b60a060405190810160405280600081526020016000815260200160008152602001600081526020016000151581525090565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056005eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582073379843f1a6cc28081504c5515fd40655dfc56624ded97b1bd3f1dd5d5c6c990029

Deployed Bytecode Sourcemap

27420:492:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27420:492:0;27485:8;;;25050:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25050:93:0;;;;;;;;;;;;;;;;;;;;27184:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27184:33:0;;;;;;;;-1:-1:-1;;;;;27184:33:0;;;;;;;;;;;;;;24543:251;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24543:251:0;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;24543:251:0;;;;;;;;;;;;;;;;27509:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27509:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27509:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8889:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8889:206:0;-1:-1:-1;;;;;8889:206:0;;;;;;;;;;;;;;;;;;;;;;;;;27091:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27091:22:0;;;;27017:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27017:26:0;;;;13730:168;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13730:168:0;-1:-1:-1;;;;;13730:168:0;;;;;;;;;;26527:61;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26527:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26527:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21342:682;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21342:682:0;;;;;23768:220;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23768:220:0;;;;;9103:1517;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9103:1517:0;-1:-1:-1;;;;;9103:1517:0;;;;;;;;;;;;7400:1481;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7400:1481:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7400:1481:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7400:1481:0;;;;-1:-1:-1;7400:1481:0;-1:-1:-1;7400:1481:0;;-1:-1:-1;7400:1481:0;;;;;;;;;-1:-1:-1;7400:1481:0;;-1:-1:-1;;7400:1481:0;;;-1:-1:-1;;;7400:1481:0;;;;;;-1:-1:-1;7400:1481:0;;-1:-1:-1;7400:1481:0;26477:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26477:43:0;-1:-1:-1;;;;;26477:43:0;;;;;16870:1699;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16870:1699:0;-1:-1:-1;;;;;16870:1699:0;;;;;;;;;;;;;;;;;;;;;12452:309;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12452:309:0;;;;;;;25151:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25151:230:0;;;;;27244:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27244:19:0;;;;20467:276;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20467:276:0;;;;;27534:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27534:21:0;;;;;;;;;;;;;;;;;;;;;;;12769:514;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12769:514:0;-1:-1:-1;;;;;12769:514:0;;;;;;;27050:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27050:34:0;;;;23409:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23409:127:0;;;;;27270:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27270:26:0;;;;23665:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23665:95:0;;;;6641:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6641:222:0;;;;;16341:521;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16341:521:0;;;;;26357:61;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26357:61:0;-1:-1:-1;;;;;26357:61:0;;;;;;;;;;27589:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27589:30:0;;;;13906:1073;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13906:1073:0;-1:-1:-1;;;;;13906:1073:0;;;;;;;;;;;;;;;;;;;27356:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27356:25:0;;;;24203:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24203:159:0;-1:-1:-1;;;;;24203:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;24203:159:0;;;;;;;;;;;;;;;;;26217:62;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26217:62:0;;;;;;;;;;;;;;-1:-1:-1;;;;;26217:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11077:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11077:113:0;-1:-1:-1;;;;;11077:113:0;;;;;26425:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26425:45:0;-1:-1:-1;;;;;26425:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27303:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27303:26:0;;;;5841:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5841:72:0;;;;6135:498;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6135:498:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6135:498:0;;-1:-1:-1;;;6135:498:0;;-1:-1:-1;;;;;6135:498:0;;-1:-1:-1;;;6135:498:0;;;;;;-1:-1:-1;6135:498:0;;27120:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27120:20:0;;;;20856:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20856:165:0;-1:-1:-1;;;;;20856:165:0;;;;;;;;;;20751:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20751:97:0;;;;;27562:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27562:20:0;;;;26168:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26168:42:0;;;;;23544:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23544:113:0;;;;;13291:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13291:431:0;-1:-1:-1;;;;;13291:431:0;;;;;;;22032:722;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22032:722:0;;;;;;;12066:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12066:175:0;-1:-1:-1;;;;;12066:175:0;;;;;5921:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5921:97:0;-1:-1:-1;;;;;5921:97:0;;;;;6871:521;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6871:521:0;-1:-1:-1;;;;;6871:521:0;;;;;;;18577:1882;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18577:1882:0;;;;;;;;;;;21029:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21029:99:0;;;;;11198:860;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11198:860:0;-1:-1:-1;;;;;11198:860:0;;;;;24802:240;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24802:240:0;;;;;5719:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5719:26:0;;;;12249:195;;;;26116:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26116:45:0;;;;;14987:1346;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14987:1346:0;;;;;22762:639;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22762:639:0;;;;;;;;;23996:199;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23996:199:0;;;;;21136:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21136:83:0;;;;;6026:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6026:101:0;;;;24370:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24370:165:0;-1:-1:-1;;;;;24370:165:0;;;;;21227:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21227:107:0;-1:-1:-1;;;;;21227:107:0;;;;;27388:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27388:24:0;;;;25050:93;25130:5;;25050:93;:::o;27184:33::-;;;-1:-1:-1;;;;;27184:33:0;;:::o;24543:251::-;24638:21;;:::i;:::-;24686:17;;;;:10;:17;;;;;;;:30;;;;24677:39;;24736:17;;;;;;;:29;;;;;24727:6;;;:38;24543:251;;;;:::o;27509:18::-;;;;;;;;;;;;;;;-1:-1:-1;;27509:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8889:206::-;8981:10;8956:4;8973:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;8973:29:0;;;;;;;;;;;:38;;;9027;;;;;;;8956:4;;8973:29;;8981:10;;9027:38;;;;;;;;-1:-1:-1;9083:4:0;8889:206;;;;;:::o;27091:22::-;;;;:::o;27017:26::-;;;;:::o;13730:168::-;-1:-1:-1;;;;;13871:13:0;;;13831:15;13871:13;;;:6;:13;;;;;;;;:19;;;;;;;;;;;;;13730:168::o;26527:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26527:61:0;;;;;;;;;;;-1:-1:-1;;;26527:61:0;;;;;:::o;21342:682::-;21395:12;21481:13;21524:39;;:::i;:::-;21438:18;;-1:-1:-1;;;;;21438:18:0;21424:10;:32;21420:50;;21465:5;21458:12;;;;21420:50;-1:-1:-1;;21497:16:0;;;;:10;:16;;;;;;;;;21566:27;;;:20;:27;;;;;;;21524:69;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21524:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21497:16;;21703:5;21630:55;;21623:3;:63;21622:86;21604:391;;;21856:24;;;;21805:28;;;;:90;;;:32;:90;:::i;:::-;21735:38;21756:16;;;:10;:16;;;;;;;;;21735:38;;:20;:38;;;;;:67;;:160;21604:391;;;21928:38;21949:16;;;:10;:16;;;;;;;;;21928:38;;:20;:38;;;;;21980:3;21928:49;;;;:55;21604:391;22012:4;22005:11;;21342:682;;;;;;:::o;23768:220::-;5672:18;;23883:11;;-1:-1:-1;;;;;5672:18:0;5658:10;:32;5650:41;;;;;;-1:-1:-1;23919:38:0;23940:16;;;:10;:16;;;;;;;;;23919:38;;:20;:38;;;;;;;:61;;;23768:220::o;9103:1517::-;9219:12;9420:26;;:::i;:::-;-1:-1:-1;;;;;9262:15:0;;9622:12;9262:15;;;:8;:15;;;;;;9622:12;;;;;;9262:25;-1:-1:-1;9262:25:0;;;:53;;;9314:1;9304:6;:11;;9262:53;:131;;;;-1:-1:-1;;;;;;9333:14:0;;;;;;:7;:14;;;;;;;;9348:10;9333:26;;;;;;;;:36;-1:-1:-1;9333:36:0;;:59;;-1:-1:-1;;;;;;9373:19:0;;9382:10;9373:19;9333:59;9244:1369;;;-1:-1:-1;;;;;9449:15:0;;;;;;:8;:15;;;;;;;;;9420:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9481:125:0;;9531:29;9541:5;9548:3;9553:6;9531:9;:29::i;:::-;9586:4;9579:11;;;;9481:125;9637:19;;;;;-1:-1:-1;9677:3:0;:11;-1:-1:-1;9673:247:0;;9736:1;9709:24;;;;:28;;;9756:16;;;:24;;;-1:-1:-1;;;;;9799:15:0;;;;:8;:15;;;;;;;;:27;;;;;;;;9756:24;9799:27;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9799:27:0;;;;;;;;;;9845:29;9799:15;9862:3;9867:6;9845:9;:29::i;9673:247::-;9956:3;9949:4;:10;9936:24;;9987:9;:21;;;9975:33;;10050:117;10082:18;10095:1;10098;10082:12;:18::i;:::-;10103:1;10082:22;10124:9;:28;;;10050:12;:117::i;:::-;10023:144;;10215:16;10188:9;:24;;;:43;10184:173;;;10252:24;;;;:43;;;-1:-1:-1;;;;;10314:15:0;;;;;;:8;:15;;;;;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10314:27:0;;;;;;;;;;10184:173;10408:24;;;;;-1:-1:-1;;;;;10377:15:0;;;;;;:8;:15;;;;;;;:27;;10397:6;10377:27;:19;:27;:::i;:::-;:55;10373:155;;10453:29;10463:5;10470:3;10475:6;10453:9;:29::i;10373:155::-;10551:5;10544:12;;9244:1369;9103:1517;;;;;;;;;;:::o;7400:1481::-;7554:12;7705:11;7731:25;;:::i;:::-;5577:5;;7767:18;;;;;;-1:-1:-1;;;;;5577:5:0;5563:10;:19;5555:28;;;;;;7587:13;;7604:2;-1:-1:-1;7587:19:0;7579:46;;;;;-1:-1:-1;;;;;7579:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7661:10;;7644:13;;:27;7636:58;;;;;-1:-1:-1;;;;;7636:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7719:1;7705:15;;7788:1;7767:22;;7817:1;7805:13;;7800:95;7824:6;:13;7820:1;:17;7800:95;;;7865:18;7873:6;7880:1;7873:9;;;;;;;;;;;;;;;;;;;7865:3;;:18;:7;:18;:::i;:::-;7859:24;-1:-1:-1;7839:3:0;;;;;7800:95;;;7918:10;7909:20;;;;:8;:20;;;;;;:27;-1:-1:-1;7909:27:0;;;:38;;;7946:1;7940:3;:7;7909:38;7905:969;;;7996:10;7987:20;;;;:8;:20;;;;;;:29;;8012:3;7987:29;:24;:29;:::i;:::-;7973:10;7964:20;;;;:8;:20;;;;;:52;;;;:20;-1:-1:-1;8031:761:0;8055:3;:10;8051:1;:14;8031:761;;;8110:31;8131:6;8138:1;8131:9;;;;;;;;;;;;;;;;;;8110:8;:16;8119:3;8123:1;8119:6;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8110:16:0;;;;;;;;;;;-1:-1:-1;8110:16:0;;;:31;:20;:31;:::i;:::-;8091:8;:16;8100:3;8104:1;8100:6;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8091:16:0;-1:-1:-1;;;;;8091:16:0;;;;;;;;;;;;:50;;;;8171:8;:16;8180:3;8184:1;8180:6;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8171:16:0;;;;;;;;;;;;;;-1:-1:-1;8171:16:0;8160:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8282:431;;;;;;;;8602:9;;8160:27;;-1:-1:-1;8160:27:0;-1:-1:-1;8282:431:0;;8550:143;;8589:35;;8602:6;;8609:1;;8602:9;;;;;;;;;;;;;;8613:10;8589:12;:35::i;:::-;8652:17;:5;8662:6;8652:17;:9;:17;:::i;:::-;8550:12;:143::i;:::-;8282:431;;;;8489:17;:6;8500:5;8489:17;:10;:17;:::i;:::-;8282:431;;;;8366:25;8381:6;8388:1;8381:9;;;;;;;;;8366:25;8282:431;;;;8425:27;8434:16;:5;8444;8434:16;:9;:16;:::i;:::-;8425:3;;:27;:7;:27;:::i;:::-;8282:431;;;;8323:4;8282:431;;;;;8263:8;:16;8272:3;8276:1;8272:6;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8263:16:0;;;;;;;;;;;;;;-1:-1:-1;8263:16:0;:450;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8263:450:0;;;;;;;;;;8758:6;;;;8762:1;;8758:6;;;;;;;;;;;;;;-1:-1:-1;;;;;8737:39:0;8746:10;-1:-1:-1;;;;;8737:39:0;-1:-1:-1;;;;;;;;;;;8766:6:0;8773:1;8766:9;;;;;;;;;;;;;;;;;;8737:39;;;;;;;;;;;;;;;;;;8067:3;;8031:761;;;8813:4;8806:11;;;;7905:969;8857:5;8850:12;;7905:969;7400:1481;;;;;;;;;;;:::o;26477:43::-;;;;;;;;;;;;;:::o;16870:1699::-;17068:11;5797:6;;;;:15;5789:24;;;;;;-1:-1:-1;;;;;17096:29:0;;17115:10;17096:29;;;:47;;;17138:5;17129:6;:14;17096:47;17092:88;;;-1:-1:-1;17167:1:0;17160:8;;17092:88;17220:18;;17208:118;;;;;;-1:-1:-1;;;;;17208:118:0;;;;;;;;;;;;;;;;17330:5;;17220:18;;;;;17208:41;;:118;;;;;;;;;;;;;;;17220:18;;17208:118;;;5:2:-1;;;;30:1;27;20:12;5:2;17208:118:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17208:118:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17208:118:0;:127;17190:1372;;17400:18;;17490:4;;17534:11;;17388:178;;;;;;-1:-1:-1;;;;;17388:178:0;;;;;;;17490:4;;;17388:178;;;;17530:2;:15;;;;17525:1;:21;17388:178;;;;;17400:18;;;;;17388:41;;:178;;;;;;;;;;;;;;-1:-1:-1;17400:18:0;17388:178;;;5:2:-1;;;;30:1;27;20:12;5:2;17388:178:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17388:178:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17388:178:0;17362:262;;;;;;;-1:-1:-1;;;;;17362:262:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17648:1;17639:5;;:10;;;;;;;;;;;17694:344;;;;;;;;;17736:4;17694:344;;;;;;17776:15;-1:-1:-1;;;;;17694:344:0;;;;;17858:9;-1:-1:-1;;;;;17694:344:0;;;;;17820:8;-1:-1:-1;;;;;17694:344:0;;;;;17893:5;17694:344;;;;17973:6;17694:344;;;;18016:6;18010:3;:12;17694:344;;;;17941:5;17694:344;;;17664:20;:27;17685:5;;17664:27;;;;;;;;;;;:374;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17664:374:0;;;;;-1:-1:-1;;;;;17664:374:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17664:374:0;;;;;-1:-1:-1;;;;;17664:374:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17664:374:0;;;;;-1:-1:-1;;;;;17664:374:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18073:181;;;;;;;;;18122:8;-1:-1:-1;;;;;18073:181:0;;;;;18204:1;18073:181;;;;18162:9;-1:-1:-1;;;;;18073:181:0;;;;;18237:1;18073:181;;;18053:10;:17;18064:5;;18053:17;;;;;;;;;;;:201;;;;;;;;;;;;;-1:-1:-1;;;;;18053:201:0;;;;;-1:-1:-1;;;;;18053:201:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18053:201:0;;;;;-1:-1:-1;;;;;18053:201:0;;;;;;;;;;;;;;;;;18269:10;:27;18280:15;-1:-1:-1;;;;;18269:27:0;-1:-1:-1;;;;;18269:27:0;;;;;;;;;;;;:31;;18306:5;;18269:43;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;18269:43:0;;;;;;;;;;;;;;;;;;;;;;18472:8;-1:-1:-1;;;;;18332:191:0;18389:15;-1:-1:-1;;;;;18332:191:0;18365:5;;18332:191;18423:5;18447:6;18499:9;18332:191;;;;;;;;;;;;;;-1:-1:-1;;;;;18332:191:0;-1:-1:-1;;;;;18332:191:0;;;;;;;;;;;;;;;;;-1:-1:-1;18545:5:0;;17190:1372;16870:1699;;;;;;;:::o;12452:309::-;12518:10;12508:9;:21;;;-1:-1:-1;;;;;;;;;;;12508:9:0;:21;:9;:21;;;:30;-1:-1:-1;12504:44:0;;;12540:8;;;12504:44;12606:10;12596:9;:21;;;-1:-1:-1;;;;;;;;;;;12596:9:0;:21;:9;:21;;;12583:43;;12619:6;12583:12;:43::i;:::-;12569:10;12559:9;:21;;;-1:-1:-1;;;;;;;;;;;12559:9:0;:21;:9;:21;;;:67;;;;12642:31;;12569:10;;12664:6;;12642:31;;12559:9;12642:31;12664:6;12569:10;12642:31;;;;;;12641:32;12637:46;;;12675:8;;;12637:46;12711:10;12708:1;12731:21;;;-1:-1:-1;;;;;;;;;;;12731:9:0;:21;;;:9;:21;;;;12699:54;;;;;;;;;;;;;;;;;;;;;12452:309;:::o;25151:230::-;25248:12;25331:27;;;:20;:27;;;;;:34;;;;25287:38;;;;;25369:3;;25286:80;;25287:38;25286:80;:44;:80;:::i;:::-;:86;;25151:230;-1:-1:-1;;25151:230:0:o;27244:19::-;;;-1:-1:-1;;;;;27244:19:0;;:::o;20467:276::-;20516:12;20559:27;;;:20;:27;;;;;:43;;;;-1:-1:-1;;;;;20559:43:0;20545:10;:57;20541:88;;-1:-1:-1;20624:5:0;20617:12;;20541:88;20677:5;20640:27;;;:20;:27;;;;;;;;;:42;;-1:-1:-1;;20640:42:0;;;20698:15;;;;;;;;;;;;;;;;;-1:-1:-1;20731:4:0;20467:276;;;:::o;27534:21::-;;;;;;:::o;12769:514::-;-1:-1:-1;;;;;12978:10:0;;;12974:24;;;12990:8;;;12974:24;13014:51;;;;;;13040:10;13014:51;;;;13052:4;13014:51;;;;;;;;;;;;-1:-1:-1;;;;;13014:25:0;;;;;:51;;;;;;;;;;;;;;-1:-1:-1;13014:25:0;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;13014:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13014:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13014:51:0;13013:52;13009:66;;;13067:8;;;13009:66;-1:-1:-1;;;;;13141:13:0;;;;;;:6;:13;;;;;;;;13155:10;13141:25;;;;;;;;13114:84;;13181:6;13114:12;:84::i;:::-;-1:-1:-1;;;;;13086:13:0;;;;;;:6;:13;;;;;;;;13100:10;13086:25;;;;;;;;;;:112;;;13214:61;;;;;;;;;;;;;;13100:10;;13214:61;;;;;;;;;12769:514;;:::o;27050:34::-;;;;:::o;23409:127::-;23466:8;23494:27;;;:20;:27;;;;;:34;;;;23409:127::o;27270:26::-;;;;:::o;23665:95::-;23745:7;;23665:95;:::o;6641:222::-;5577:5;;-1:-1:-1;;;;;5577:5:0;5563:10;:19;5555:28;;;;;;6713:11;;:22;;6729:5;6713:22;:15;:22;:::i;:::-;6699:11;:36;6778:10;6769:20;;;;:8;:20;;;;;;:31;;6794:5;6769:31;:24;:31;:::i;:::-;6755:10;6746:20;;;;:8;:20;;;;;;;;:54;;;;6816:39;;;;;;;6746:20;;-1:-1:-1;;;;;;;;;;;6816:39:0;;;;;;;;;;6641:222;:::o;16341:521::-;16401:12;16426:35;;:::i;:::-;-1:-1:-1;16464:25:0;;;;:16;:25;;;;;;;;;16426:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16426:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16426:63:0;;;;;;;;;;;;16522:25;16500:140;;;;;-1:-1:-1;;;;;16500:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16673:26;;;;-1:-1:-1;;;;;16673:40:0;16703:10;16673:40;16651:130;;;;;-1:-1:-1;;;;;16651:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16827:5:0;16792:25;;;:16;:25;;;;;:32;;:40;;-1:-1:-1;;16792:40:0;;;-1:-1:-1;;16341:521:0:o;26357:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;27589:30::-;;;;;;;;;;;;;;;-1:-1:-1;;27589:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13906:1073;14102:11;5797:6;;;;:15;5789:24;;;;;;-1:-1:-1;;;;;14130:29:0;;14149:10;14130:29;;;:51;;;14172:9;;14163:6;:18;14130:51;14126:92;;;-1:-1:-1;14205:1:0;14198:8;;14126:92;-1:-1:-1;;;;;14232:13:0;;;;;;:6;:13;;;;;;;;14246:10;14232:25;;;;;;;;:34;-1:-1:-1;14232:34:0;;;:47;;;14278:1;14270:5;:9;14232:47;14228:744;;;14296:7;:12;;14307:1;14296:12;;;14351:312;;;;;;;;;;;;;;;;;;;;14495:15;:3;14458:6;14495:15;:7;:15;:::i;:::-;14351:312;;-1:-1:-1;;;;;14351:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14396:4;14351:312;;;;;;;14340:7;;;-1:-1:-1;14323:25:0;;;:16;:25;;;;;:340;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14323:340:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14323:340:0;-1:-1:-1;;14323:340:0;;;;;;;;;;;;;;;;;;;;14678:24;;;;;;;;;14712:7;;27:10:-1;;23:18;;;45:23;;14678:42:0;;;;;;;;;;;;;;14768:7;;14740:191;;;;;;;;;;;;;;;;;;;14351:312;;14768:7;;14740:191;;;;;;;;;;;-1:-1:-1;14953:7:0;;14946:14;;27356:25;;;-1:-1:-1;;;;;27356:25:0;;:::o;24203:159::-;-1:-1:-1;;;;;24336:14:0;;;;;;:7;:14;;;;;;;;;24329:25;;;;;;;;;;;;;;;;;24298:13;;24329:25;;;24336:14;24329:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24203:159;;;:::o;26217:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26217:62:0;;;;;;;;;;;;;;;;:::o;11077:113::-;-1:-1:-1;;;;;11167:15:0;11132;11167;;;:8;:15;;;;;;;11077:113::o;26425:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27303:26::-;;;;:::o;5841:72::-;5577:5;;-1:-1:-1;;;;;5577:5:0;5563:10;:19;5555:28;;;;;;5899:6;;;-1:-1:-1;;5889:16:0;;5899:6;;;;5898:7;5889:16;;;5841:72::o;6135:498::-;5577:5;;-1:-1:-1;;;;;5577:5:0;5563:10;:19;5555:28;;;;;;-1:-1:-1;;;;;6265:21:0;;;;6257:30;;;;;;6356:19;;6320:32;6333:11;;6346:5;6320:12;:32::i;:::-;:55;;6298:159;;;;;-1:-1:-1;;;;;6298:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6482:32;6495:11;;6508:5;6482:12;:32::i;:::-;6468:11;:46;-1:-1:-1;;;;;6558:17:0;;;;;;:8;:17;;;;;;6545:38;;6577:5;6545:12;:38::i;:::-;6525:8;:17;6534:7;-1:-1:-1;;;;;6525:17:0;-1:-1:-1;;;;;6525:17:0;;;;;;;;;;;;:58;;;;6610:7;-1:-1:-1;;;;;6599:26:0;;6604:4;6619:5;6599:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6599:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6135:498;;;:::o;27120:20::-;;;-1:-1:-1;;;;;27120:20:0;;:::o;20856:165::-;5577:5;;-1:-1:-1;;;;;5577:5:0;5563:10;:19;5555:28;;;;;;20966:4;:12;;-1:-1:-1;;;;;20966:12:0;;;-1:-1:-1;;20966:12:0;;;;;;;20989:10;:24;;;;;;;;;;;20856:165::o;20751:97::-;5577:5;;-1:-1:-1;;;;;5577:5:0;5563:10;:19;5555:28;;;;;;20820:11;:20;20751:97::o;27562:20::-;;;;;;;;;;;;;;;-1:-1:-1;;27562:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26168:42;;;;;;;;;;;;;:::o;23544:113::-;23600:13;23633:16;;;:10;:16;;;;;;;23544:113::o;13291:431::-;-1:-1:-1;;;;;13367:10:0;;;13363:24;;;13379:8;;;13363:24;-1:-1:-1;;;;;13402:13:0;;;;;;:6;:13;;;;;;;;13416:10;13402:25;;;;;;;;:34;-1:-1:-1;13398:48:0;;;13438:8;;;13398:48;-1:-1:-1;;;;;13512:13:0;;;;;;:6;:13;;;;;;;;13526:10;13512:25;;;;;;;;13485:84;;13552:6;13485:12;:84::i;:::-;-1:-1:-1;;;;;13457:13:0;;;;;;:6;:13;;;;;;;;13471:10;13457:25;;;;;;;;;:112;;;;13585:41;;;;;;;;;;;;;;;;;;;13457:13;;13585:21;;:41;;;;;;;;;;;;;;13457:13;13585:41;;;5:2:-1;;;;30:1;27;20:12;5:2;13585:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13585:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13585:41:0;13584:42;13580:56;;;13628:8;;;13580:56;-1:-1:-1;;;;;13652:62:0;;13688:13;;;;:6;:13;;;;;;;;13668:10;13688:25;;;;;;;;;;;13652:62;;;;;;;;;;;13668:10;;13652:62;;;;;;;;;;;13291:431;;:::o;22032:722::-;22128:12;22219:13;22262:39;;:::i;:::-;22176:18;;-1:-1:-1;;;;;22176:18:0;22162:10;:32;22158:50;;22203:5;22196:12;;;;22158:50;-1:-1:-1;;22235:16:0;;;;:10;:16;;;;;;;;;22304:27;;;:20;:27;;;;;;;22262:69;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22262:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22235:16;;22262:69;22347:47;;22342:383;;;22492:23;;;;22410:38;22431:16;;;:10;:16;;;;;;;;;22410:38;;:20;:38;;;;;;;:79;:105;22342:383;;;22628:58;;;;:85;;22709:3;22628:85;:80;:85;:::i;:::-;22546:38;22567:16;;;:10;:16;;;;;;;;;22546:38;;:20;:38;;;;;;;:79;:167;22342:383;22742:4;22735:11;;22032:722;;;;;;;:::o;12066:175::-;-1:-1:-1;;;;;12149:15:0;;12120:12;12149:15;;;:8;:15;;;;;:22;;;;;:31;;12145:45;;12182:8;;;12145:45;-1:-1:-1;;;;;;12208:15:0;;;;;:8;:15;;;;;:25;;;;12066:175::o;5921:97::-;5577:5;;-1:-1:-1;;;;;5577:5:0;5563:10;:19;5555:28;;;;;;5987:14;:23;;-1:-1:-1;;5987:23:0;-1:-1:-1;;;;;5987:23:0;;;;;;;;;;5921:97::o;6871:521::-;7009:10;6952:12;7000:20;;;:8;:20;;;;;;:30;-1:-1:-1;7000:30:0;;;:58;;;7057:1;7047:6;:11;;7000:58;:111;;;;-1:-1:-1;7084:10:0;7075:20;;;;:8;:20;;;;;:27;;;;;:36;7000:111;6982:403;;;7170:10;7161:20;;;;:8;:20;;;;;;:32;;7186:6;7161:32;:24;:32;:::i;:::-;7147:10;7138:20;;;;:8;:20;;;;;;:55;;;;-1:-1:-1;;;;;7224:13:0;;;;;;:25;;7242:6;7224:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;7208:13:0;;;;;;:8;:13;;;;;;;;;:41;;;;7269:33;;;;;;;7208:13;;7278:10;;-1:-1:-1;;;;;;;;;;;7269:33:0;;;;;;;;;-1:-1:-1;7324:4:0;7317:11;;6982:403;-1:-1:-1;7368:5:0;7361:12;;18577:1882;18752:39;;:::i;:::-;5577:5;;19674:12;;-1:-1:-1;;;;;5577:5:0;5563:10;:19;5555:28;;;;;;5797:6;;;;:15;5789:24;;;;;;18794:27;;;;:20;:27;;;;;;;;;18752:69;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18752:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18854:54:0;;18832:109;;;;;-1:-1:-1;;;;;18832:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18974:14;;;;:7;:14;;;;;;18991:12;-1:-1:-1;18952:122:0;;;;;-1:-1:-1;;;;;18952:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19107:24;;:32;;19135:4;19107:32;19085:119;;;;;-1:-1:-1;;;;;19085:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19301:3;19237:60;19272:17;:24;;;19238:17;:28;;;19237:34;;:60;;;;:::i;:::-;:67;;19215:134;;;;;-1:-1:-1;;;;;19215:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19394:18;;19442:33;;;;;19494:4;;19530:11;;19382:180;;;;;;-1:-1:-1;;;;;19382:180:0;;;;;;;19494:4;;;19382:180;;;;19542:4;19525:2;:16;;;:21;;;;19382:180;;;;;19394:18;;;;;19382:41;;:180;;;;;19442:33;;19382:180;;;;;-1:-1:-1;19394:18:0;19382:180;;;5:2:-1;;;;30:1;27;20:12;5:2;19382:180:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19382:180:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19382:180:0;19360:250;;;;;;;-1:-1:-1;;;;;19360:250:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19653:5;:10;;19662:1;19653:10;;;;;19745:18;;19782:26;;;;19855:27;;;;;19710:281;;;-1:-1:-1;;;;;19745:18:0;;;19710:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19930:12;:22;;19710:281;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;19710:281:0;;;;;;;;19689:313;;;;19710:281;;;;19689:313;;;;;19710:281;19689:313;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;19689:313:0;;;;;;;-1:-1:-1;263:2;;-1:-1;;19689:313:0;;;;-1:-1:-1;19689:313:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19689:313:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19689:313:0;;;;;;;;;;;;;;;;19674:328;;20032:5;20013:10;:16;20024:4;20013:16;;;;;;;;;;;;;;;;;:24;;;;20080:7;20065:12;:22;20048:7;:14;20056:5;20048:14;;;;;;;;;;;:39;;;;20110:18;;;;;;;;;-1:-1:-1;;;;;20110:18:0;-1:-1:-1;;;;;20098:40:0;;20153:17;:26;;;20194:9;20218:17;:27;;;20260:10;20300:7;20285:12;:22;20322:5;;20342:17;:33;;;20098:288;;;;;;;;;;;;;-1:-1:-1;;;;;20098:288:0;-1:-1:-1;;;;;20098:288:0;;;;;;;;;;;-1:-1:-1;;;;;20098:288:0;-1:-1:-1;;;;;20098:288:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20098:288:0;-1:-1:-1;;;;;20098:288:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20098:288:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20098:288:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;20445:5:0;;20402:49;;;;;;20420:12;:22;;20098:288;20402:49;;;;;;;;;;;;;;;;;;;;18577:1882;;;;;;:::o;21029:99::-;5577:5;;-1:-1:-1;;;;;5577:5:0;5563:10;:19;5555:28;;;;;;21099:11;:21;21029:99::o;11198:860::-;11254:15;11282:26;;:::i;:::-;-1:-1:-1;;;;;;11311:15:0;;11387:12;11311:15;;;:8;:15;;;;;;;;11282:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11387:12;;;;;;;11337:38;;11368:7;;11337:38;11402:19;;;;;-1:-1:-1;11438:3:0;:11;-1:-1:-1;11434:176:0;;11493:1;11466:24;;;;:28;;;11509:16;;;:24;;;-1:-1:-1;;;;;11548:15:0;;;;:8;:15;;;;;;;:27;;;;;;;;11509:24;11548:27;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11548:27:0;;;;;;;;;;11493:1;-1:-1:-1;11590:8:0;;11434:176;11642:3;11635:4;:10;11622:24;;11669:9;:21;;;11657:33;;11728:105;11756:18;11769:1;11772;11756:12;:18::i;11728:105::-;11701:132;;11877:16;11850:9;:24;;;:43;11846:161;;;11910:24;;;;:43;;;-1:-1:-1;;;;;11968:15:0;;;;;;:8;:15;;;;;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11968:27:0;;;;;;;;;;11846:161;12026:9;:24;;;12019:31;;11198:860;;;;;;;;;:::o;24802:240::-;24888:21;;:::i;:::-;24936:17;;;;:10;:17;;;;;;;:28;;-1:-1:-1;;;;;24936:28:0;;;24927:37;;24984:17;;;;;;;:29;;;;;;;;24975:6;;;:38;;;;24927:3;24802:240::o;5719:26::-;;;;;;:::o;12249:195::-;12341:10;12331:9;:21;;;-1:-1:-1;;;;;;;;;;;12331:9:0;:21;:9;:21;;;12318:46;;12354:9;12318:12;:46::i;:::-;12304:10;12294:9;:21;;;-1:-1:-1;;;;;;;;;;;12294:9:0;:21;;;:9;:21;;;:70;;;12380:56;;12403:9;12380:56;;;;;;;;;;;12304:10;;12294:9;;12380:56;;;;;;;;;;;12249:195::o;26116:45::-;;;;;;;;;;;;;:::o;14987:1346::-;15076:12;15106:35;;:::i;:::-;15574:13;5797:6;;15574:13;;5797:6;;:15;5789:24;;;;;;15144:25;;;;:16;:25;;;;;;;;;15106:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15106:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15106:63:0;;;;;;;;;;;;;;-1:-1:-1;15202:25:0;15180:122;;;;;-1:-1:-1;;;;;15180:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15335:26;;;;-1:-1:-1;;;;;15335:40:0;15365:10;15335:40;15313:119;;;;;-1:-1:-1;;;;;15313:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15515:3;15465:46;15493:10;:17;;;15466:10;:21;;;15465:27;;:46;;;;:::i;:::-;:53;;15443:120;;;;;-1:-1:-1;;;;;15443:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15590:20;;;;15739:16;;-1:-1:-1;;;;;15665:13:0;;;15739:16;15665:13;;;:6;:13;;;;;;;;15679:40;;;;15665:55;;;;;;;;;;15590:20;;-1:-1:-1;15665:91:0;;:55;:91;:73;:91;:::i;:::-;-1:-1:-1;;;;;15621:13:0;;;;;;;:6;:13;;;;;;;;15635:26;;;;15621:41;;;;;;;;;:135;15783:16;;15781:39;;15814:5;;15782:26;;15805:2;15782:26;:22;:26;:::i;:::-;15781:32;:39;:32;:39;:::i;:::-;-1:-1:-1;;;;;15886:13:0;;;;;;;:6;:13;;;;;;;;15900:10;;;;;15886:25;;;;;;;15767:53;;-1:-1:-1;15859:81:0;;15767:53;15859:12;:81::i;:::-;-1:-1:-1;;;;;15831:13:0;;;;;;;:6;:13;;;;;;;;15845:10;;;;;15831:25;;;;;;:109;16070:16;;15995:102;;16070:25;;16091:3;16070:25;:20;:25;:::i;:::-;-1:-1:-1;;;;;15995:13:0;;;;;;;:6;:13;;;;;;;;16009:40;;;;15995:55;;;;;;;;;;;:102;:73;:102;:::i;:::-;-1:-1:-1;;;;;15951:13:0;;;;;;;:6;:13;;;;;;;;15965:26;;;;15951:41;;;;;;;;;;;;:146;;;;16159:21;;;16195:17;;;;16132:91;;16159:21;16132:12;:91::i;:::-;16108:21;;;;:115;;;16234:25;;;;:16;:25;;;;;;;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16234:38:0;;;-1:-1:-1;;16234:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16234:38:0;-1:-1:-1;;16234:38:0;;;;;;;;;;;;;;;;;;16288:15;;;;;;;;;;;;;;;;;;-1:-1:-1;16321:4:0;;14987:1346;-1:-1:-1;;;;14987:1346:0:o;22762:639::-;22899:12;22985:13;23028:36;;:::i;:::-;22942:18;;-1:-1:-1;;;;;22942:18:0;22928:10;:32;22924:50;;22969:5;22962:12;;;;22924:50;-1:-1:-1;;23001:16:0;;;;:10;:16;;;;;;;;;23067:17;;;:10;:17;;;;;;;23028:56;;;;;;;;;-1:-1:-1;;;;;23028:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23001:16;23028:56;23128:66;;23171:12;23128:66;:28;:66;:::i;:::-;23095:17;;;;:10;:17;;;;;;;;:30;:99;23237:23;;;;:64;;23279:11;23237:64;:27;:64;:::i;:::-;23205:17;;;;:10;:17;;;;;;;;;:29;;:96;;;;23317:54;;;;;;;;;;;;;23216:5;;23317:54;;;;;;;;;23389:4;23382:11;;22762:639;;;;;;;;:::o;23996:199::-;24101:11;24137:27;;;:20;:27;;;;;;;;:50;;;23996:199::o;21136:83::-;5577:5;;-1:-1:-1;;;;;5577:5:0;5563:10;:19;5555:28;;;;;;21198:9;:13;21136:83::o;6026:101::-;6071:14;;-1:-1:-1;;;;;6071:14:0;6089:10;6071:28;6067:52;;;6101:5;:18;;-1:-1:-1;;6101:18:0;6109:10;6101:18;;;6067:52;6026:101::o;24370:165::-;-1:-1:-1;;;;;24506:17:0;;;;;;:10;:17;;;;;;;;;24499:28;;;;;;;;;;;;;;;;;24468:13;;24499:28;;;24506:17;24499:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24370:165;;;:::o;21227:107::-;5577:5;;-1:-1:-1;;;;;5577:5:0;5563:10;:19;5555:28;;;;;;21301:18;:25;;-1:-1:-1;;21301:25:0;-1:-1:-1;;;;;21301:25:0;;;;;;;;;;21227:107::o;27388:24::-;;;;:::o;52:179::-;110:7;142:5;;;166:6;;;;158:46;;;;;-1:-1:-1;;;;;158:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;222:1;215:8;;52:179;;;;;;:::o;10628:441::-;-1:-1:-1;;;;;10761:13:0;;;;;;:8;:13;;;;;;:25;;10779:6;10761:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;10745:13:0;;;;;;;:8;:13;;;;;:41;;;;10801:19;;10810:10;10801:19;10797:164;;-1:-1:-1;;;;;10895:14:0;;;;;;:7;:14;;;;;;;;10910:10;10895:26;;;;;;;;10864:97;;10940:6;10864:12;:97::i;:::-;-1:-1:-1;;;;;10835:14:0;;;;;;:7;:14;;;;;;;;10850:10;10835:26;;;;;;;:126;10797:164;-1:-1:-1;;;;;10990:15:0;;;;;;:8;:15;;;;;;:27;;11010:6;10990:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;10972:15:0;;;;;;;:8;:15;;;;;;;;;:45;;;;11033:28;;;;;;;;;;;10972:15;;-1:-1:-1;;;;;;;;;;;11033:28:0;;;;;;;;;;10628:441;;;:::o;869:132::-;927:7;954:39;958:1;961;954:39;;;;;;;;;;;;;;;;;;:3;:39::i;:::-;947:46;869:132;-1:-1:-1;;;869:132:0:o;615:246::-;673:7;;697:6;;693:47;;;727:1;720:8;;;;693:47;-1:-1:-1;762:5:0;;;766:1;762;:5;786;;;;;;;;:10;778:56;;;;;-1:-1:-1;;;;;778:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;239:136;297:7;324:43;328:1;331;324:43;;;;;;;;;;;;;;;;;;:3;:43::i;1009:377::-;1129:7;;1231:12;1224:5;;;1216:28;;;;-1:-1:-1;;;;;1216:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1216:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1271:1;1267;:5;;;;;;;;;1009:377;-1:-1:-1;;;;;1009:377:0:o;383:224::-;503:7;;539:12;531:6;;;;523:29;;;;-1:-1:-1;;;;;523:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;523:29:0;-1:-1:-1;;;575:5:0;;;383:224;-1:-1:-1;383:224:0:o;27420:492::-;;;;;;;;;;;;;;;105:10:-1;27420:492:0;88:34:-1;-1:-1;27420:492:0;;;-1:-1:-1;;27420:492:0:o;:::-;;;;;;;;;-1:-1:-1;27420:492:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;27420:492:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;27420:492:0;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://73379843f1a6cc28081504c5515fd40655dfc56624ded97b1bd3f1dd5d5c6c99
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.