Token SupremeX Token

 

Overview ERC-20

Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
Total Supply:
1,000,000,000 SXC

Holders:
672 addresses

Transfers:
-

Contract:
0x46d3EC8CE3eC767414F16FE12176De23E3E5B46A0x46d3EC8CE3eC767414F16FE12176De23E3E5B46A

Decimals:
18

Social Profiles:
Not Available, Update ?

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SXC

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-06-16
*/

pragma solidity ^0.5.16;

contract Owned {

    address public owner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

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

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

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        owner = newOwner;
        emit OwnershipTransferred(owner, newOwner);
    }
}

contract Tokenlock is Owned {
    /// @notice Indicates if token is locked
    uint8 isLocked = 0;

    event Freezed();
    event UnFreezed();

    modifier validLock {
        require(isLocked == 0, "Token is locked");
        _;
    }

    function freeze() public onlyOwner {
        isLocked = 1;

        emit Freezed();
    }

    function unfreeze() public onlyOwner {
        isLocked = 0;

        emit UnFreezed();
    }
}

contract SXC is Tokenlock {
    /// @notice BEP-20 token name for this token
    string public constant name = "SupremeX Token";

    /// @notice BEP-20 token symbol for this token
    string public constant symbol = "SXC";

    /// @notice BEP-20 token decimals for this token
    uint8 public constant decimals = 18;

    /// @notice Total number of tokens in circulation
    uint public totalSupply = 1000000000e18; // 10亿 sxc

    /// @notice Childchain Manager address // TODO
    address childchainManager = 0xA6FA4fB5f76172d178d61B04b0ecd319C5d1C0aa;

    /// @notice Allowance amounts on behalf of others
    mapping (address => mapping (address => uint96)) internal allowances;

    /// @notice Official record of token balances for each account
    mapping (address => uint96) internal balances;

    /// @notice A record of each accounts delegate
    mapping (address => address) public delegates;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint96 votes;
    }

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    /// @notice The standard BEP-20 transfer event
    event Transfer(address indexed from, address indexed to, uint256 amount);

    /// @notice The standard BEP-20 approval event
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    //
    event Mint(address owner, uint96 amount);

    /**
     * @notice Construct a new SXC token
     * @param account The initial account to grant all the tokens
     */
    constructor(address account) public {
        balances[account] = uint96(totalSupply);
        emit Transfer(address(0), account, totalSupply);
    }

    /**
        mint more tokens by admin
     */
    function mint(address account, uint96 amount) public onlyOwner {
        _mint(account, amount);

    }
    /**
     * @notice called when token is deposited on root chain
     * @dev Should be callable only by ChildChainManager
     * Should handle deposit by minting the required amount for user
     * Make sure minting is done only by this function
     * @param user user address for whom deposit is being done
     * @param depositData abi encoded amount
     */
    function deposit(address user, bytes calldata depositData) external
    {
        require(msg.sender == childchainManager);
        uint256 amount = abi.decode(depositData, (uint256));
        _mint(user, uint96(amount));
    }

    function _mint(address account, uint96 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");
        balances[account] = add96(balances[account], amount, "SXC mint balances overflows");
        totalSupply = add96(uint96(totalSupply), amount, "SXC mint total balance overflows");
        emit Mint(account, amount);
    }

    /**
     * @notice called when user wants to withdraw tokens back to root chain
     * @dev Should burn user's tokens. This transaction will be verified when exiting on root chain
     * @param amount amount of tokens to withdraw
     */
    function withdraw(uint96 amount) external {
        _burn(amount);
    }
    
    function burn(uint96 amount) external {
        _burn(amount);
    }
    
    function _burn(uint96 amount) internal {
        _transferTokens(msg.sender, address(0), amount);
        totalSupply = sub96(uint96(totalSupply), amount, "burn SXC underflows");
    }
    
    /**
     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`
     * @param account The address of the account holding the funds
     * @param spender The address of the account spending the funds
     * @return The number of tokens approved
     */
    function allowance(address account, address spender) external view returns (uint) {
        return allowances[account][spender];
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     * @param spender The address of the account which may transfer tokens
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint rawAmount) external validLock returns (bool) {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "SXC::approve: amount exceeds 96 bits");
        }

        allowances[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);
        return true;
    }

    /**
     * @notice Get the number of tokens held by the `account`
     * @param account The address of the account to get the balance of
     * @return The number of tokens held
     */
    function balanceOf(address account) external view returns (uint) {
        return balances[account];
    }

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint rawAmount) external validLock returns (bool) {
        uint96 amount = safe96(rawAmount, "SXC::transfer: amount exceeds 96 bits");
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param src The address of the source account
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address src, address dst, uint rawAmount) external validLock returns (bool) {
        address spender = msg.sender;
        uint96 spenderAllowance = allowances[src][spender];
        uint96 amount = safe96(rawAmount, "SXC::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "SXC::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

        _transferTokens(src, dst, amount);
        return true;
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) public validLock {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public validLock {
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "SXC::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "SXC::delegateBySig: invalid nonce");
        require(now <= expiry, "SXC::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint96) {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {
        require(blockNumber < block.number, "SXC::getPriorVotes: not yet determined");

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = delegates[delegator];
        uint96 delegatorBalance = balances[delegator];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _transferTokens(address src, address dst, uint96 amount) internal {

        balances[src] = sub96(balances[src], amount, "SXC::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "SXC::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint96 srcRepNew = sub96(srcRepOld, amount, "SXC::_moveVotes: vote amount underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint96 dstRepNew = add96(dstRepOld, amount, "SXC::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {
      uint32 blockNumber = safe32(block.number, "SXC::_writeCheckpoint: block number exceeds 32 bits");

      if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
          checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
      } else {
          checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
          numCheckpoints[delegatee] = nCheckpoints + 1;
      }

      emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {
        require(n < 2**96, errorMessage);
        return uint96(n);
    }

    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        uint96 c = a + b;
        require(c >= a, errorMessage);
        return c;
    }

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

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"Freezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint96","name":"amount","type":"uint96"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[],"name":"UnFreezed","type":"event"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint96","name":"amount","type":"uint96"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes","name":"depositData","type":"bytes"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint96","name":"amount","type":"uint96"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unfreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint96","name":"amount","type":"uint96"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405260008060146101000a81548160ff021916908360ff1602179055506b033b2e3c9fd0803ce800000060015573a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561009057600080fd5b506040516138b73803806138b7833981810160405260208110156100b357600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600154600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040518082815260200191505060405180910390a3506136cb806101ec6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063c3cda52011610097578063dee4dea011610071578063dee4dea0146109b4578063e7a324dc146109f0578063f1127ed814610a0e578063f2fde38b14610aa5576101a9565b8063c3cda5201461082a578063cf2c52cb146108a3578063dd62ed3e1461093c576101a9565b80638da5cb5b116100d35780638da5cb5b1461068357806395d89b41146106cd578063a9059cbb14610750578063b4b5ea57146107b6576101a9565b806370a0823114610555578063782d6fe1146105ad5780637ecebe001461062b576101a9565b8063313ce567116101665780635c19a95c116101405780635c19a95c1461049957806362a5af3b146104dd5780636a28f000146104e75780636fcfff45146104f1576101a9565b8063313ce567146103b55780633b331cf9146103d9578063587cde1e14610415576101a9565b806306fdde03146101ae578063095ea7b31461023157806318160ddd146102975780631b025a40146102b557806320606b701461031157806323b872dd1461032f575b600080fd5b6101b6610ae9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b22565b604051808215151515815260200191505060405180910390f35b61029f610d4b565b6040518082815260200191505060405180910390f35b61030f600480360360408110156102cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356bffffffffffffffffffffffff169060200190929190505050610d51565b005b610319610e21565b6040518082815260200191505060405180910390f35b61039b6004803603606081101561034557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e3d565b604051808215151515815260200191505060405180910390f35b6103bd611167565b604051808260ff1660ff16815260200191505060405180910390f35b610413600480360360208110156103ef57600080fd5b8101908080356bffffffffffffffffffffffff16906020019092919050505061116c565b005b6104576004803603602081101561042b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611178565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104db600480360360208110156104af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ab565b005b6104e561123f565b005b6104ef61134b565b005b6105336004803603602081101561050757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611456565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b6105976004803603602081101561056b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611479565b6040518082815260200191505060405180910390f35b6105f9600480360360408110156105c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e8565b60405180826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200191505060405180910390f35b61066d6004803603602081101561064157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611911565b6040518082815260200191505060405180910390f35b61068b611929565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106d561194e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107155780820151818401526020810190506106fa565b50505050905090810190601f1680156107425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61079c6004803603604081101561076657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611987565b604051808215151515815260200191505060405180910390f35b6107f8600480360360208110156107cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a4c565b60405180826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200191505060405180910390f35b6108a1600480360360c081101561084057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611b3a565b005b61093a600480360360408110156108b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156108f657600080fd5b82018360208201111561090857600080fd5b8035906020019184600183028401116401000000008311171561092a57600080fd5b9091929391929390505050611f72565b005b61099e6004803603604081101561095257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612001565b6040518082815260200191505060405180910390f35b6109ee600480360360208110156109ca57600080fd5b8101908080356bffffffffffffffffffffffff1690602001909291905050506120ae565b005b6109f86120ba565b6040518082815260200191505060405180910390f35b610a6060048036036040811015610a2457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff1690602001909291905050506120d6565b604051808363ffffffff1663ffffffff168152602001826bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019250505060405180910390f35b610ae760048036036020811015610abb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061212f565b005b6040518060400160405280600e81526020017f53757072656d655820546f6b656e00000000000000000000000000000000000081525081565b600080600060149054906101000a900460ff1660ff1614610bab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610bfd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610c22565b610c1f83604051806060016040528060248152602001613538602491396122e9565b90505b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3600191505092915050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f53686f756c64206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b610e1d82826123ac565b5050565b60405180806134f5604391396043019050604051809103902081565b600080600060149054906101000a900460ff1660ff1614610ec6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b60003390506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1690506000610f8885604051806060016040528060248152602001613538602491396122e9565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561100257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b1561114e57600061102c83836040518060600160405280603c81526020016135ee603c9139612634565b905080600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3505b61115987878361270a565b600193505050509392505050565b601281565b61117581612a19565b50565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060149054906101000a900460ff1660ff1614611232576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b61123c3382612a7e565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611301576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f53686f756c64206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff021916908360ff1602179055507f962a6139ca22015759d0878e2cf5d770dcb8152e1d5ba08e46a969dd9b154a9c60405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461140d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f53686f756c64206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b60008060146101000a81548160ff021916908360ff1602179055507ff0daac2271a735ea786b9adf80dfcbd6a3cbd52f3cab0a78337114692d5faf5d60405160405180910390a1565b60076020528060005260406000206000915054906101000a900463ffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b6000438210611542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806134466026913960400191505060405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1614156115af57600091505061190b565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16116116b157600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1691505061190b565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16111561173257600091505061190b565b600080905060006001830390505b8163ffffffff168163ffffffff16111561188d576000600283830363ffffffff168161176857fe5b04820390506117756133f1565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff1614156118655780602001519550505050505061190b565b86816000015163ffffffff16101561187f57819350611886565b6001820392505b5050611740565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60086020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600381526020017f535843000000000000000000000000000000000000000000000000000000000081525081565b600080600060149054906101000a900460ff1660ff1614611a10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b6000611a34836040518060600160405280602581526020016134d0602591396122e9565b9050611a4133858361270a565b600191505092915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1611611ab6576000611b32565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b60008060149054906101000a900460ff1660ff1614611bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b600060405180806134f560439139604301905060405180910390206040518060400160405280600e81526020017f53757072656d655820546f6b656e00000000000000000000000000000000000081525080519060200120611c21612c3e565b30604051602001808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019450505050506040516020818303038152906040528051906020012090506000604051808061362a603a9139603a0190506040518091039020888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019450505050506040516020818303038152906040528051906020012090506000828260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611dcc573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806135836025913960400191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558914611f03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806135cd6021913960400191505060405180910390fd5b87421115611f5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806135a86025913960400191505060405180910390fd5b611f66818b612a7e565b50505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fcc57600080fd5b600082826020811015611fde57600080fd5b81019080803590602001909291905050509050611ffb84826123ac565b50505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b6120b781612a19565b50565b604051808061362a603a9139603a019050604051809103902081565b6006602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f53686f756c64206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561222b57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b60006c01000000000000000000000000831082906123a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561236757808201518184015260208101905061234c565b50505050905090810190601f1680156123945780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561244f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6124e6600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060400160405280601b81526020017f535843206d696e742062616c616e636573206f766572666c6f77730000000000815250612c4b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612595600154826040518060400160405280602081526020017f535843206d696e7420746f74616c2062616c616e6365206f766572666c6f7773815250612c4b565b6bffffffffffffffffffffffff166001819055507fed053824db3e01daeb53868e92fb8a49d7e943d9f446df1927dee82f7cb1943a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019250505060405180910390a15050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff16111582906126fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126c25780820151818401526020810190506126a7565b50505050905090810190601f1680156126ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b612784600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806035815260200161349b60359139612634565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061286b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060600160405280602f815260200161346c602f9139612c4b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3612a14600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612d26565b505050565b612a253360008361270a565b612a67600154826040518060400160405280601381526020017f6275726e2053584320756e646572666c6f777300000000000000000000000000815250612634565b6bffffffffffffffffffffffff1660018190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4612c38828483612d26565b50505050565b6000804690508091505090565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610158390612d1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cdf578082015181840152602081019050612cc4565b50505050905090810190601f168015612d0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d7057506000816bffffffffffffffffffffffff16115b1561301c57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612ec8576000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611612e13576000612e8f565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b90506000612eb6828560405180606001604052806027815260200161355c60279139612634565b9050612ec486848484613021565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461301b576000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611612f66576000612fe2565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b90506000613009828560405180606001604052806026815260200161342060269139612c4b565b905061301785848484613021565b5050505b5b505050565b60006130454360405180606001604052806033815260200161366460339139613336565b905060008463ffffffff161180156130da57508063ffffffff16600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156131755781600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506132bd565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405180836bffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681526020019250505060405180910390a25050505050565b6000640100000000831082906133e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133ac578082015181840152602081019050613391565b50505050905090810190601f1680156133d95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff168152509056fe5358433a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77735358433a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e65645358433a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77735358433a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63655358433a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374295358433a3a617070726f76653a20616d6f756e74206578636565647320393620626974735358433a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77735358433a3a64656c656761746542795369673a20696e76616c6964207369676e61747572655358433a3a64656c656761746542795369673a207369676e617475726520657870697265645358433a3a64656c656761746542795369673a20696e76616c6964206e6f6e63655358433a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e636544656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e7432353620657870697279295358433a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a265627a7a7231582091971686a9eea1f3b66ce35139cbc2a7e054d3c8b3c2ddedf6775824df93b34a64736f6c63430005110032000000000000000000000000f2c5d025f99891b49e1823d124da8350156f67d9

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

000000000000000000000000f2c5d025f99891b49e1823d124da8350156f67d9

-----Decoded View---------------
Arg [0] : account (address): 0xf2c5d025f99891b49e1823d124da8350156f67d9

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f2c5d025f99891b49e1823d124da8350156f67d9


Deployed ByteCode Sourcemap

990:14532:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;990:14532:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1073:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1073:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6466:428;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6466:428:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1379:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3937:106;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3937:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2427:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8026:680;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8026:680:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1280:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5369:70;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5369:70:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1877:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1877:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8854:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8854:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;785:93;;;:::i;:::-;;886:97;;;:::i;:::-;;2305:49;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2305:49:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7097:108;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7097:108:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11050:1217;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11050:1217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2841:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2841:39:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;52:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1180:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1180:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7469:247;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7469:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10397:222;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10397:222:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9400:796;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9400:796:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4422:232;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4422:232:0;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4422:232:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4422:232:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4422:232:0;;;;;;;;;;;;:::i;:::-;;5946:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5946:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5283:74;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5283:74:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;2643:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2166:70;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2166:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:192;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;331:192:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1073:46;;;;;;;;;;;;;;;;;;;:::o;6466:428::-;6544:4;736:1;724:8;;;;;;;;;;;:13;;;716:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6561:13;6607:2;6589:9;:21;6585:172;;;6643:2;6627:19;;6585:172;;;6688:57;6695:9;6688:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;6679:66;;6585:172;6803:6;6769:10;:22;6780:10;6769:22;;;;;;;;;;;;;;;:31;6792:7;6769:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;6848:7;6827:37;;6836:10;6827:37;;;6857:6;6827:37;;;;;;;;;;;;;;;;;;;;6882:4;6875:11;;;6466:428;;;;:::o;1379:39::-;;;;:::o;3937:106::-;278:5;;;;;;;;;;;264:19;;:10;:19;;;256:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4011:22;4017:7;4026:6;4011:5;:22::i;:::-;3937:106;;:::o;2427:122::-;2469:80;;;;;;;;;;;;;;;;;;;2427:122;:::o;8026:680::-;8118:4;736:1;724:8;;;;;;;;;;;:13;;;716:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8135:15;8153:10;8135:28;;8174:23;8200:10;:15;8211:3;8200:15;;;;;;;;;;;;;;;:24;8216:7;8200:24;;;;;;;;;;;;;;;;;;;;;;;;;8174:50;;8235:13;8251:57;8258:9;8251:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;8235:73;;8336:3;8325:14;;:7;:14;;;;:48;;;;;8370:2;8343:30;;:16;:30;;;;8325:48;8321:310;;;8390:19;8412:95;8418:16;8436:6;8412:95;;;;;;;;;;;;;;;;;:5;:95::i;:::-;8390:117;;8549:12;8522:10;:15;8533:3;8522:15;;;;;;;;;;;;;;;:24;8538:7;8522:24;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;8597:7;8583:36;;8592:3;8583:36;;;8606:12;8583:36;;;;;;;;;;;;;;;;;;;;8321:310;;8643:33;8659:3;8664;8669:6;8643:15;:33::i;:::-;8694:4;8687:11;;;;;8026:680;;;;;:::o;1280:35::-;1313:2;1280:35;:::o;5369:70::-;5418:13;5424:6;5418:5;:13::i;:::-;5369:70;:::o;1877:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;8854:112::-;736:1;724:8;;;;;;;;;;;:13;;;716:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8926:32;8936:10;8948:9;8926;:32::i;:::-;8854:112;:::o;785:93::-;278:5;;;;;;;;;;;264:19;;:10;:19;;;256:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;842:1;831:8;;:12;;;;;;;;;;;;;;;;;;861:9;;;;;;;;;;785:93::o;886:97::-;278:5;;;;;;;;;;;264:19;;:10;:19;;;256:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;945:1;934:8;;:12;;;;;;;;;;;;;;;;;;964:11;;;;;;;;;;886:97::o;2305:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;7097:108::-;7156:4;7180:8;:17;7189:7;7180:17;;;;;;;;;;;;;;;;;;;;;;;;;7173:24;;;;7097:108;;;:::o;11050:1217::-;11129:6;11170:12;11156:11;:26;11148:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11238:19;11260:14;:23;11275:7;11260:23;;;;;;;;;;;;;;;;;;;;;;;;;11238:45;;11314:1;11298:12;:17;;;11294:58;;;11339:1;11332:8;;;;;11294:58;11464:11;11412;:20;11424:7;11412:20;;;;;;;;;;;;;;;:38;11448:1;11433:12;:16;11412:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;11408:147;;11499:11;:20;11511:7;11499:20;;;;;;;;;;;;;;;:38;11535:1;11520:12;:16;11499:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;11492:51;;;;;11408:147;11652:11;11616;:20;11628:7;11616:20;;;;;;;;;;;;;;;:23;11637:1;11616:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;11612:88;;;11687:1;11680:8;;;;;11612:88;11712:12;11727:1;11712:16;;11739:12;11769:1;11754:12;:16;11739:31;;11781:428;11796:5;11788:13;;:5;:13;;;11781:428;;;11818:13;11860:1;11851:5;11843;:13;11842:19;;;;;;;;11834:5;:27;11818:43;;11903:20;;:::i;:::-;11926:11;:20;11938:7;11926:20;;;;;;;;;;;;;;;:28;11947:6;11926:28;;;;;;;;;;;;;;;11903:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11989:11;11973:2;:12;;;:27;;;11969:229;;;12028:2;:8;;;12021:15;;;;;;;;;11969:229;12077:11;12062:2;:12;;;:26;;;12058:140;;;12117:6;12109:14;;12058:140;;;12181:1;12172:6;:10;12164:18;;12058:140;11781:428;;;;;12226:11;:20;12238:7;12226:20;;;;;;;;;;;;;;;:27;12247:5;12226:27;;;;;;;;;;;;;;;:33;;;;;;;;;;;;12219:40;;;;;11050:1217;;;;;:::o;2841:39::-;;;;;;;;;;;;;;;;;:::o;52:20::-;;;;;;;;;;;;;:::o;1180:37::-;;;;;;;;;;;;;;;;;;;:::o;7469:247::-;7544:4;736:1;724:8;;;;;;;;;;;:13;;;716:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7561:13;7577:58;7584:9;7577:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;7561:74;;7646:40;7662:10;7674:3;7679:6;7646:15;:40::i;:::-;7704:4;7697:11;;;7469:247;;;;:::o;10397:222::-;10462:6;10481:19;10503:14;:23;10518:7;10503:23;;;;;;;;;;;;;;;;;;;;;;;;;10481:45;;10559:1;10544:12;:16;;;:67;;10610:1;10544:67;;;10563:11;:20;10575:7;10563:20;;;;;;;;;;;;;;;:38;10599:1;10584:12;:16;10563:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;10544:67;10537:74;;;10397:222;;;:::o;9400:796::-;736:1;724:8;;;;;;;;;;;:13;;;716:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9526:23;2469:80;;;;;;;;;;;;;;;;;;;9606:4;;;;;;;;;;;;;;;;;9590:22;;;;;;9614:12;:10;:12::i;:::-;9636:4;9562:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9562:80:0;;;9552:91;;;;;;9526:117;;9654:18;2689:71;;;;;;;;;;;;;;;;;;;9717:9;9728:5;9735:6;9685:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9685:57:0;;;9675:68;;;;;;9654:89;;9754:14;9810:15;9827:10;9781:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9781:57:0;;;9771:68;;;;;;9754:85;;9850:17;9870:26;9880:6;9888:1;9891;9894;9870:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9870:26:0;;;;;;;;9850:46;;9936:1;9915:23;;:9;:23;;;;9907:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10008:6;:17;10015:9;10008:17;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;9999:5;:28;9991:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10091:6;10084:3;:13;;10076:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10157:31;10167:9;10178;10157;:31::i;:::-;10150:38;;;;9400:796;;;;;;:::o;4422:232::-;4528:17;;;;;;;;;;;4514:31;;:10;:31;;;4506:40;;;;;;4557:14;4585:11;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4574:34:0;;;;;;;;;;;;;;;;4557:51;;4619:27;4625:4;4638:6;4619:5;:27::i;:::-;4422:232;;;;:::o;5946:136::-;6022:4;6046:10;:19;6057:7;6046:19;;;;;;;;;;;;;;;:28;6066:7;6046:28;;;;;;;;;;;;;;;;;;;;;;;;;6039:35;;;;5946:136;;;;:::o;5283:74::-;5336:13;5342:6;5336:5;:13::i;:::-;5283:74;:::o;2643:117::-;2689:71;;;;;;;;;;;;;;;;;;;2643:117;:::o;2166:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;331:192::-;278:5;;;;;;;;;;;264:19;;:10;:19;;;256:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;432:1;412:22;;:8;:22;;;;404:31;;;;;;454:8;446:5;;:16;;;;;;;;;;;;;;;;;;506:8;478:37;;499:5;;;;;;;;;;;478:37;;;;;;;;;;;;331:192;:::o;14828:161::-;14903:6;14934:5;14930:1;:9;14941:12;14922:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14922:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14979:1;14965:16;;14828:161;;;;:::o;4662:366::-;4756:1;4737:21;;:7;:21;;;;4729:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4825:63;4831:8;:17;4840:7;4831:17;;;;;;;;;;;;;;;;;;;;;;;;;4850:6;4825:63;;;;;;;;;;;;;;;;;:5;:63::i;:::-;4805:8;:17;4814:7;4805:17;;;;;;;;;;;;;;;;:83;;;;;;;;;;;;;;;;;;4913:70;4926:11;;4940:6;4913:70;;;;;;;;;;;;;;;;;:5;:70::i;:::-;4899:84;;:11;:84;;;;4999:21;5004:7;5013:6;4999:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4662:366;;:::o;15193:165::-;15279:6;15311:1;15306:6;;:1;:6;;;;15314:12;15298:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15298:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15349:1;15345;:5;15338:12;;15193:165;;;;;:::o;12658:412::-;12762:85;12768:8;:13;12777:3;12768:13;;;;;;;;;;;;;;;;;;;;;;;;;12783:6;12762:85;;;;;;;;;;;;;;;;;:5;:85::i;:::-;12746:8;:13;12755:3;12746:13;;;;;;;;;;;;;;;;:101;;;;;;;;;;;;;;;;;;12874:79;12880:8;:13;12889:3;12880:13;;;;;;;;;;;;;;;;;;;;;;;;;12895:6;12874:79;;;;;;;;;;;;;;;;;:5;:79::i;:::-;12858:8;:13;12867:3;12858:13;;;;;;;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;12983:3;12969:26;;12978:3;12969:26;;;12988:6;12969:26;;;;;;;;;;;;;;;;;;;;13008:54;13023:9;:14;13033:3;13023:14;;;;;;;;;;;;;;;;;;;;;;;;;13039:9;:14;13049:3;13039:14;;;;;;;;;;;;;;;;;;;;;;;;;13055:6;13008:14;:54::i;:::-;12658:412;;;:::o;5451:187::-;5501:47;5517:10;5537:1;5541:6;5501:15;:47::i;:::-;5573:57;5586:11;;5600:6;5573:57;;;;;;;;;;;;;;;;;:5;:57::i;:::-;5559:71;;:11;:71;;;;5451:187;:::o;12275:375::-;12352:23;12378:9;:20;12388:9;12378:20;;;;;;;;;;;;;;;;;;;;;;;;;12352:46;;12409:23;12435:8;:19;12444:9;12435:19;;;;;;;;;;;;;;;;;;;;;;;;;12409:45;;12488:9;12465;:20;12475:9;12465:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12559:9;12515:54;;12542:15;12515:54;;12531:9;12515:54;;;;;;;;;;;;12582:60;12597:15;12614:9;12625:16;12582:14;:60::i;:::-;12275:375;;;;:::o;15366:153::-;15411:4;15428:15;15476:9;15465:20;;15504:7;15497:14;;;15366:153;:::o;14997:188::-;15083:6;15102:8;15117:1;15113;:5;15102:16;;15142:1;15137:6;;:1;:6;;;;15145:12;15129:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15129:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15176:1;15169:8;;;14997:188;;;;;:::o;13078:937::-;13183:6;13173:16;;:6;:16;;;;:30;;;;;13202:1;13193:6;:10;;;13173:30;13169:839;;;13242:1;13224:20;;:6;:20;;;13220:381;;13265:16;13284:14;:22;13299:6;13284:22;;;;;;;;;;;;;;;;;;;;;;;;;13265:41;;13325:16;13356:1;13344:9;:13;;;:60;;13403:1;13344:60;;;13360:11;:19;13372:6;13360:19;;;;;;;;;;;;;;;:34;13392:1;13380:9;:13;13360:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;13344:60;13325:79;;13423:16;13442:67;13448:9;13459:6;13442:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;13423:86;;13528:57;13545:6;13553:9;13564;13575;13528:16;:57::i;:::-;13220:381;;;;13639:1;13621:20;;:6;:20;;;13617:380;;13662:16;13681:14;:22;13696:6;13681:22;;;;;;;;;;;;;;;;;;;;;;;;;13662:41;;13722:16;13753:1;13741:9;:13;;;:60;;13800:1;13741:60;;;13757:11;:19;13769:6;13757:19;;;;;;;;;;;;;;;:34;13789:1;13777:9;:13;13757:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;13741:60;13722:79;;13820:16;13839:66;13845:9;13856:6;13839:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;13820:85;;13924:57;13941:6;13949:9;13960;13971;13924:16;:57::i;:::-;13617:380;;;;13169:839;13078:937;;;:::o;14023:628::-;14141:18;14162:75;14169:12;14162:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;14141:96;;14267:1;14252:12;:16;;;:85;;;;;14326:11;14272:65;;:11;:22;14284:9;14272:22;;;;;;;;;;;;;;;:40;14310:1;14295:12;:16;14272:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;14252:85;14248:329;;;14401:8;14352:11;:22;14364:9;14352:22;;;;;;;;;;;;;;;:40;14390:1;14375:12;:16;14352:40;;;;;;;;;;;;;;;:46;;;:57;;;;;;;;;;;;;;;;;;14248:329;;;14477:33;;;;;;;;14488:11;14477:33;;;;;;14501:8;14477:33;;;;;14438:11;:22;14450:9;14438:22;;;;;;;;;;;;;;;:36;14461:12;14438:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14566:1;14551:12;:16;14523:14;:25;14538:9;14523:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;14248:329;14613:9;14592:51;;;14624:8;14634;14592:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;14023:628;;;;;:::o;14659:161::-;14734:6;14765:5;14761:1;:9;14772:12;14753:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14753:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14810:1;14796:16;;14659:161;;;;:::o;990:14532::-;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://91971686a9eea1f3b66ce35139cbc2a7e054d3c8b3c2ddedf6775824df93b34a
Loading