ETH Price: $3,023.51 (+3.15%)
Gas: 1 Gwei

Token

HordCongress ()
 

Overview

Max Total Supply

0 HordCongress

Holders

0

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
HordCongress

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2021-04-15
*/

// File contracts/interfaces/IHordCongressMembersRegistry.sol

pragma solidity ^0.6.12;

/**
 * IHordCongressMembersRegistry contract.
 * @author Nikola Madjarevic
 * Date created: 21.3.21.
 * Github: madjarevicn
 */
interface IHordCongressMembersRegistry {
    function isMember(address _address) external view returns (bool);
    function getMinimalQuorum() external view returns (uint256);
}


// File contracts/libraries/SafeMath.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    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;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}


// File contracts/governance/HordCongress.sol

pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;


/**
 * HordCogress contract.
 * @author Nikola Madjarevic
 * Date created: 18.3.21.
 * Github: madjarevicn
 */
contract HordCongress {
    // Use SafeMath library
    using SafeMath for *;

    /// @notice The name of this contract
    string public constant name = "HordCongress";

    // Members registry contract
    IHordCongressMembersRegistry membersRegistry;

    /// @notice The total number of proposals
    uint public proposalCount;

    struct Proposal {
        // Unique id for looking up a proposal
        uint id;

        // Creator of the proposal
        address proposer;

        // the ordered list of target addresses for calls to be made
        address[] targets;

        // The ordered list of values (i.e. msg.value) to be passed to the calls to be made
        uint[] values;

        // The ordered list of function signatures to be called
        string[] signatures;

        // The ordered list of calldata to be passed to each call
        bytes[] calldatas;

        // Current number of votes in favor of this proposal
        uint forVotes;

        // Current number of votes in opposition to this proposal
        uint againstVotes;

        // Flag marking whether the proposal has been canceled
        bool canceled;

        // Flag marking whether the proposal has been executed
        bool executed;

        // Timestamp when proposal is created
        uint timestamp;

        // Receipts of ballots for the entire set of voters
        mapping (address => Receipt) receipts;
    }

    /// @notice Ballot receipt record for a voter
    struct Receipt {
        // Whether or not a vote has been cast
        bool hasVoted;

        // Whether or not the voter supports the proposal
        bool support;
    }

    /// @notice The official record of all proposals ever proposed
    mapping (uint => Proposal) public proposals;

    /// @notice An event emitted when a new proposal is created
    event ProposalCreated(uint id, address proposer, address[] targets, uint[] values, string[] signatures, bytes[] calldatas, string description);

    /// @notice An event emitted when a vote has been cast on a proposal
    event VoteCast(address voter, uint proposalId, bool support);

    /// @notice An event emitted when a proposal has been canceled
    event ProposalCanceled(uint id);

    /// @notice An event emitted when a proposal has been executed
    event ProposalExecuted(uint id);

    /// @notice An event emitted everytime ether is received
    event ReceivedEther(address sender, uint amount);

    /// @notice Event which will fire every time transaction is executed
    event ExecuteTransaction(address indexed target, uint value, string signature,  bytes data);

    modifier onlyMember {
        require(membersRegistry.isMember(msg.sender) == true, "Only HordCongress member can call this function");
        _;
    }

    /// One time call function to set members registry contract
    function setMembersRegistry(
        address _membersRegistry
    )
    external
    {
        require(address(membersRegistry) == address(0x0));
        membersRegistry = IHordCongressMembersRegistry(_membersRegistry);
    }

    function propose(
        address[] memory targets,
        uint[] memory values,
        string[] memory signatures,
        bytes[] memory calldatas,
        string memory description
    )
    external
    onlyMember
    returns (uint)
    {
        require(
            targets.length == values.length &&
            targets.length == signatures.length &&
            targets.length == calldatas.length,
            "HordCongress::propose: proposal function information arity mismatch"
        );

        require(targets.length != 0, "HordCongress::propose: must provide actions");

        proposalCount++;

        Proposal memory newProposal = Proposal({
            id: proposalCount,
            proposer: msg.sender,
            targets: targets,
            values: values,
            signatures: signatures,
            calldatas: calldatas,
            forVotes: 0,
            againstVotes: 0,
            canceled: false,
            executed: false,
            timestamp: block.timestamp
        });

        proposals[newProposal.id] = newProposal;

        emit ProposalCreated(newProposal.id, msg.sender, targets, values, signatures, calldatas, description);
        return newProposal.id;
    }


    function castVote(
        uint proposalId,
        bool support
    )
    external
    onlyMember
    {
        return _castVote(msg.sender, proposalId, support);
    }


    function execute(
        uint proposalId
    )
    external
    onlyMember
    payable
    {
        // load the proposal
        Proposal storage proposal = proposals[proposalId];
        // Require that proposal is not previously executed neither cancelled
        require(proposal.executed == false && proposal.canceled == false);
        // Mark that proposal is executed
        proposal.executed = true;
        // Require that votes in favor of proposal are greater or equal to minimalQuorum
        require(proposal.forVotes >= membersRegistry.getMinimalQuorum());

        for (uint i = 0; i < proposal.targets.length; i++) {
            bytes memory callData;

            if (bytes(proposal.signatures[i]).length == 0) {
                callData = proposal.calldatas[i];
            } else {
                callData = abi.encodePacked(bytes4(keccak256(bytes(proposal.signatures[i]))), proposal.calldatas[i]);
            }

            // solium-disable-next-line security/no-call-value
            (bool success,) = proposal.targets[i].call.value(proposal.values[i])(callData);

            // Require that transaction went through
            require(success, "HordCongress::executeTransaction: Transaction execution reverted.");

            // Emit event that transaction is being executed
            emit ExecuteTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i]);
        }

        // Emit event that proposal executed
        emit ProposalExecuted(proposalId);
    }

    function cancel(uint proposalId) external onlyMember {
        Proposal storage proposal = proposals[proposalId];
        // Require that proposal is not previously executed neither cancelled
        require(proposal.executed == false && proposal.canceled == false);
        // 3 days before proposal can get cancelled
        require(block.timestamp >= proposal.timestamp + 259200);
        // Proposal with reached minimalQuorum cant be cancelled
        require(proposal.forVotes < membersRegistry.getMinimalQuorum(), "HordCongress:cancel: Proposal already reached quorum");
        // Set that proposal is cancelled
        proposal.canceled = true;
        // Emit event
        emit ProposalCanceled(proposalId);
    }

    function _castVote(address voter, uint proposalId, bool support) internal {
        Proposal storage proposal = proposals[proposalId];
        Receipt storage receipt = proposal.receipts[voter];
        require(receipt.hasVoted == false, "HordCongress::_castVote: voter already voted");

        if (support) {
            proposal.forVotes = proposal.forVotes.add(1);
        } else {
            proposal.againstVotes = proposal.againstVotes.sub(1);
        }

        receipt.hasVoted = true;
        receipt.support = support;

        emit VoteCast(voter, proposalId, support);
    }

    function getActions(uint proposalId) external view returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas) {
        Proposal storage p = proposals[proposalId];
        return (p.targets, p.values, p.signatures, p.calldatas);
    }

    function getMembersRegistry()
    external
    view
    returns (address)
    {
        return address(membersRegistry);
    }

    receive() external payable {
        emit ReceivedEther(msg.sender, msg.value);
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReceivedEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"}],"name":"VoteCast","type":"event"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"castVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMembersRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_membersRegistry","type":"address"}],"name":"setMembersRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50612fd9806100206000396000f3fe6080604052600436106100955760003560e01c806340e58ee51161005957806340e58ee5146101da5780635f6afd1514610203578063da35c6641461022e578063da95691a14610259578063fe0d94c114610296576100d5565b8063013cf08b146100da57806306fdde031461011d57806315373e3d14610148578063328dd982146101715780633482cafe146101b1576100d5565b366100d5577fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf133346040516100cb929190612866565b60405180910390a1005b600080fd5b3480156100e657600080fd5b5061010160048036038101906100fc9190611e97565b6102b2565b6040516101149796959493929190612af6565b60405180910390f35b34801561012957600080fd5b5061013261032e565b60405161013f9190612927565b60405180910390f35b34801561015457600080fd5b5061016f600480360381019061016a9190611ee9565b610367565b005b34801561017d57600080fd5b5061019860048036038101906101939190611e97565b610465565b6040516101a894939291906128c6565b60405180910390f35b3480156101bd57600080fd5b506101d860048036038101906101d39190611d56565b610742565b005b3480156101e657600080fd5b5061020160048036038101906101fc9190611e97565b6107de565b005b34801561020f57600080fd5b50610218610a78565b6040516102259190612830565b60405180910390f35b34801561023a57600080fd5b50610243610aa1565b6040516102509190612a49565b60405180910390f35b34801561026557600080fd5b50610280600480360381019061027b9190611d7f565b610aa7565b60405161028d9190612a49565b60405180910390f35b6102b060048036038101906102ab9190611e97565b610e5c565b005b60026020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060154908060070154908060080160009054906101000a900460ff16908060080160019054906101000a900460ff16908060090154905087565b6040518060400160405280600c81526020017f486f7264436f6e6772657373000000000000000000000000000000000000000081525081565b6001151560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a230c524336040518263ffffffff1660e01b81526004016103c4919061284b565b60206040518083038186803b1580156103dc57600080fd5b505afa1580156103f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104149190611e6e565b151514610456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044d90612a09565b60405180910390fd5b6104613383836113fc565b5050565b6060806060806000600260008781526020019081526020016000209050806002018160030182600401836005018380548060200260200160405190810160405280929190818152602001828054801561051357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116104c9575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561056557602002820191906000526020600020905b815481526020019060010190808311610551575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610649578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106355780601f1061060a57610100808354040283529160200191610635565b820191906000526020600020905b81548152906001019060200180831161061857829003601f168201915b50505050508152602001906001019061058d565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561072c578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107185780601f106106ed57610100808354040283529160200191610718565b820191906000526020600020905b8154815290600101906020018083116106fb57829003601f168201915b505050505081526020019060010190610670565b5050505090509450945094509450509193509193565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079b57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001151560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a230c524336040518263ffffffff1660e01b815260040161083b919061284b565b60206040518083038186803b15801561085357600080fd5b505afa158015610867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088b9190611e6e565b1515146108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c490612a09565b60405180910390fd5b6000600260008381526020019081526020016000209050600015158160080160019054906101000a900460ff16151514801561091e5750600015158160080160009054906101000a900460ff161515145b61092757600080fd5b6203f48081600901540142101561093d57600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab0d8a3f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a357600080fd5b505afa1580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db9190611ec0565b816006015410610a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a17906129a9565b60405180910390fd5b60018160080160006101000a81548160ff0219169083151502179055507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c82604051610a6c9190612a49565b60405180910390a15050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60015481565b60006001151560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a230c524336040518263ffffffff1660e01b8152600401610b06919061284b565b60206040518083038186803b158015610b1e57600080fd5b505afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b569190611e6e565b151514610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612a09565b60405180910390fd5b84518651148015610baa575083518651145b8015610bb7575082518651145b610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed90612989565b60405180910390fd5b600086511415610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c32906129e9565b60405180910390fd5b600160008154809291906001019190505550610c5561161c565b60405180610160016040528060015481526020013373ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187815260200186815260200185815260200160008152602001600081526020016000151581526020016000151581526020014281525090508060026000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002019080519060200190610d48929190611690565b506060820151816003019080519060200190610d6592919061171a565b506080820151816004019080519060200190610d82929190611767565b5060a0820151816005019080519060200190610d9f9291906117c7565b5060c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff0219169083151502179055506101208201518160080160016101000a81548160ff02191690831515021790555061014082015181600901559050507fbaab6dcd2ae57433cc1372e25bc5139c3bd664075695546fde8821591a226e388160000151338989898989604051610e439796959493929190612a64565b60405180910390a1806000015191505095945050505050565b6001151560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a230c524336040518263ffffffff1660e01b8152600401610eb9919061284b565b60206040518083038186803b158015610ed157600080fd5b505afa158015610ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f099190611e6e565b151514610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290612a09565b60405180910390fd5b6000600260008381526020019081526020016000209050600015158160080160019054906101000a900460ff161515148015610f9c5750600015158160080160009054906101000a900460ff161515145b610fa557600080fd5b60018160080160016101000a81548160ff02191690831515021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab0d8a3f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561102857600080fd5b505afa15801561103c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110609190611ec0565b8160060154101561107057600080fd5b60005b81600201805490508110156113c0576060600083600401838154811061109557fe5b906000526020600020018054600181600116156101000203166002900490501415611173578260050182815481106110c957fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111675780601f1061113c57610100808354040283529160200191611167565b820191906000526020600020905b81548152906001019060200180831161114a57829003601f168201915b505050505090506111dd565b82600401828154811061118257fe5b906000526020600020016040516111999190612819565b60405180910390208360050183815481106111b057fe5b906000526020600020016040516020016111cb9291906127da565b60405160208183030381529060405290505b60008360020183815481106111ee57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684600301848154811061123e57fe5b9060005260206000200154836040516112579190612802565b60006040518083038185875af1925050503d8060008114611294576040519150601f19603f3d011682016040523d82523d6000602084013e611299565b606091505b50509050806112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d4906129c9565b60405180910390fd5b8360020183815481106112ec57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f88405ca50016c636e025868e263efe5a9f63bf11cc45404f7616394c7dc389d085600301858154811061135d57fe5b906000526020600020015486600401868154811061137757fe5b9060005260206000200187600501878154811061139057fe5b906000526020600020016040516113a993929190612b65565b60405180910390a250508080600101915050611073565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516113f09190612a49565b60405180910390a15050565b6000600260008481526020019081526020016000209050600081600a0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600015158160000160009054906101000a900460ff161515146114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790612a29565b60405180910390fd5b82156114db576114ce6001836006015461157790919063ffffffff16565b82600601819055506114fc565b6114f3600183600701546115cc90919063ffffffff16565b82600701819055505b60018160000160006101000a81548160ff021916908315150217905550828160000160016101000a81548160ff0219169083151502179055507fd356173ae8eeea8691aee4c1be712c314a975a3d43ebc48b08ca54d0dac912288585856040516115689392919061288f565b60405180910390a15050505050565b6000808284019050838110156115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b990612949565b60405180910390fd5b8091505092915050565b600082821115611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890612969565b60405180910390fd5b818303905092915050565b60405180610160016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081526020016060815260200160608152602001606081526020016000815260200160008152602001600015158152602001600015158152602001600081525090565b828054828255906000526020600020908101928215611709579160200282015b828111156117085782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906116b0565b5b5090506117169190611827565b5090565b828054828255906000526020600020908101928215611756579160200282015b8281111561175557825182559160200191906001019061173a565b5b5090506117639190611862565b5090565b8280548282559060005260206000209081019282156117b6579160200282015b828111156117b55782518290805190602001906117a592919061187f565b5091602001919060010190611787565b5b5090506117c391906118ff565b5090565b828054828255906000526020600020908101928215611816579160200282015b82811115611815578251829080519060200190611805929190611923565b50916020019190600101906117e7565b5b50905061182391906119a3565b5090565b5b8082111561185e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611828565b5090565b5b8082111561187b576000816000905550600101611863565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118c057805160ff19168380011785556118ee565b828001600101855582156118ee579182015b828111156118ed5782518255916020019190600101906118d2565b5b5090506118fb9190611862565b5090565b5b8082111561191f576000818161191691906119c7565b50600101611900565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061196457805160ff1916838001178555611992565b82800160010185558215611992579182015b82811115611991578251825591602001919060010190611976565b5b50905061199f9190611862565b5090565b5b808211156119c357600081816119ba9190611a0f565b506001016119a4565b5090565b50805460018160011615610100020316600290046000825580601f106119ed5750611a0c565b601f016020900490600052602060002090810190611a0b9190611862565b5b50565b50805460018160011615610100020316600290046000825580601f10611a355750611a54565b601f016020900490600052602060002090810190611a539190611862565b5b50565b600081359050611a6681612f5e565b92915050565b600082601f830112611a7d57600080fd5b8135611a90611a8b82612bd7565b612baa565b91508181835260208401935060208101905083856020840282011115611ab557600080fd5b60005b83811015611ae55781611acb8882611a57565b845260208401935060208301925050600181019050611ab8565b5050505092915050565b600082601f830112611b0057600080fd5b8135611b13611b0e82612bff565b612baa565b9150818183526020840193506020810190508360005b83811015611b595781358601611b3f8882611c84565b845260208401935060208301925050600181019050611b29565b5050505092915050565b600082601f830112611b7457600080fd5b8135611b87611b8282612c27565b612baa565b9150818183526020840193506020810190508360005b83811015611bcd5781358601611bb38882611cd8565b845260208401935060208301925050600181019050611b9d565b5050505092915050565b600082601f830112611be857600080fd5b8135611bfb611bf682612c4f565b612baa565b91508181835260208401935060208101905083856020840282011115611c2057600080fd5b60005b83811015611c505781611c368882611d2c565b845260208401935060208301925050600181019050611c23565b5050505092915050565b600081359050611c6981612f75565b92915050565b600081519050611c7e81612f75565b92915050565b600082601f830112611c9557600080fd5b8135611ca8611ca382612c77565b612baa565b91508082526020830160208301858383011115611cc457600080fd5b611ccf838284612f01565b50505092915050565b600082601f830112611ce957600080fd5b8135611cfc611cf782612ca3565b612baa565b91508082526020830160208301858383011115611d1857600080fd5b611d23838284612f01565b50505092915050565b600081359050611d3b81612f8c565b92915050565b600081519050611d5081612f8c565b92915050565b600060208284031215611d6857600080fd5b6000611d7684828501611a57565b91505092915050565b600080600080600060a08688031215611d9757600080fd5b600086013567ffffffffffffffff811115611db157600080fd5b611dbd88828901611a6c565b955050602086013567ffffffffffffffff811115611dda57600080fd5b611de688828901611bd7565b945050604086013567ffffffffffffffff811115611e0357600080fd5b611e0f88828901611b63565b935050606086013567ffffffffffffffff811115611e2c57600080fd5b611e3888828901611aef565b925050608086013567ffffffffffffffff811115611e5557600080fd5b611e6188828901611cd8565b9150509295509295909350565b600060208284031215611e8057600080fd5b6000611e8e84828501611c6f565b91505092915050565b600060208284031215611ea957600080fd5b6000611eb784828501611d2c565b91505092915050565b600060208284031215611ed257600080fd5b6000611ee084828501611d41565b91505092915050565b60008060408385031215611efc57600080fd5b6000611f0a85828601611d2c565b9250506020611f1b85828601611c5a565b9150509250929050565b6000611f318383611f8c565b60208301905092915050565b6000611f498383612176565b905092915050565b6000611f5d838361238b565b905092915050565b6000611f7183836127bc565b60208301905092915050565b611f8681612ecb565b82525050565b611f9581612e57565b82525050565b611fa481612e57565b82525050565b6000611fb582612d4e565b611fbf8185612dc4565b9350611fca83612ccf565b8060005b83811015611ffb578151611fe28882611f25565b9750611fed83612d90565b925050600181019050611fce565b5085935050505092915050565b600061201382612d59565b61201d8185612dd5565b93508360208202850161202f85612cdf565b8060005b8581101561206b578484038952815161204c8582611f3d565b945061205783612d9d565b925060208a01995050600181019050612033565b50829750879550505050505092915050565b600061208882612d64565b6120928185612de6565b9350836020820285016120a485612cef565b8060005b858110156120e057848403895281516120c18582611f51565b94506120cc83612daa565b925060208a019950506001810190506120a8565b50829750879550505050505092915050565b60006120fd82612d6f565b6121078185612df7565b935061211283612cff565b8060005b8381101561214357815161212a8882611f65565b975061213583612db7565b925050600181019050612116565b5085935050505092915050565b61215981612e69565b82525050565b61217061216b82612e75565b612f43565b82525050565b600061218182612d7a565b61218b8185612e08565b935061219b818560208601612f10565b6121a481612f4d565b840191505092915050565b60006121ba82612d7a565b6121c48185612e2a565b93506121d4818560208601612f10565b80840191505092915050565b6000815460018116600081146121fd576001811461222257612266565b607f600283041661220e8187612e2a565b955060ff1983168652808601935050612266565b600282046122308187612e2a565b955061223b85612d24565b60005b8281101561225d5781548189015260018201915060208101905061223e565b82880195505050505b505092915050565b60008154600181166000811461228b57600181146122b1576122f5565b607f600283041661229c8187612e19565b955060ff1983168652602086019350506122f5565b600282046122bf8187612e19565b95506122ca85612d0f565b60005b828110156122ec578154818901526001820191506020810190506122cd565b80880195505050505b505092915050565b60008154600181166000811461231a576001811461233f57612383565b607f600283041661232b8187612e2a565b955060ff1983168652808601935050612383565b6002820461234d8187612e2a565b955061235885612d0f565b60005b8281101561237a5781548189015260018201915060208101905061235b565b82880195505050505b505092915050565b600061239682612d85565b6123a08185612e35565b93506123b0818560208601612f10565b6123b981612f4d565b840191505092915050565b60006123cf82612d85565b6123d98185612e46565b93506123e9818560208601612f10565b6123f281612f4d565b840191505092915050565b60008154600181166000811461241a576001811461244057612484565b607f600283041661242b8187612e46565b955060ff198316865260208601935050612484565b6002820461244e8187612e46565b955061245985612d39565b60005b8281101561247b5781548189015260018201915060208101905061245c565b80880195505050505b505092915050565b6000612499601b83612e46565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006124d9601e83612e46565b91507f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006000830152602082019050919050565b6000612519604383612e46565b91507f486f7264436f6e67726573733a3a70726f706f73653a2070726f706f73616c2060008301527f66756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6160208301527f74636800000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006125a5603483612e46565b91507f486f7264436f6e67726573733a63616e63656c3a2050726f706f73616c20616c60008301527f726561647920726561636865642071756f72756d0000000000000000000000006020830152604082019050919050565b600061260b604183612e46565b91507f486f7264436f6e67726573733a3a657865637574655472616e73616374696f6e60008301527f3a205472616e73616374696f6e20657865637574696f6e20726576657274656460208301527f2e000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000612697602b83612e46565b91507f486f7264436f6e67726573733a3a70726f706f73653a206d7573742070726f7660008301527f69646520616374696f6e730000000000000000000000000000000000000000006020830152604082019050919050565b60006126fd602f83612e46565b91507f4f6e6c7920486f7264436f6e6772657373206d656d6265722063616e2063616c60008301527f6c20746869732066756e6374696f6e00000000000000000000000000000000006020830152604082019050919050565b6000612763602c83612e46565b91507f486f7264436f6e67726573733a3a5f63617374566f74653a20766f746572206160008301527f6c726561647920766f74656400000000000000000000000000000000000000006020830152604082019050919050565b6127c581612ec1565b82525050565b6127d481612ec1565b82525050565b60006127e6828561215f565b6004820191506127f682846122fd565b91508190509392505050565b600061280e82846121af565b915081905092915050565b600061282582846121e0565b915081905092915050565b60006020820190506128456000830184611f9b565b92915050565b60006020820190506128606000830184611f7d565b92915050565b600060408201905061287b6000830185611f7d565b61288860208301846127cb565b9392505050565b60006060820190506128a46000830186611f9b565b6128b160208301856127cb565b6128be6040830184612150565b949350505050565b600060808201905081810360008301526128e08187611faa565b905081810360208301526128f481866120f2565b90508181036040830152612908818561207d565b9050818103606083015261291c8184612008565b905095945050505050565b6000602082019050818103600083015261294181846123c4565b905092915050565b600060208201905081810360008301526129628161248c565b9050919050565b60006020820190508181036000830152612982816124cc565b9050919050565b600060208201905081810360008301526129a28161250c565b9050919050565b600060208201905081810360008301526129c281612598565b9050919050565b600060208201905081810360008301526129e2816125fe565b9050919050565b60006020820190508181036000830152612a028161268a565b9050919050565b60006020820190508181036000830152612a22816126f0565b9050919050565b60006020820190508181036000830152612a4281612756565b9050919050565b6000602082019050612a5e60008301846127cb565b92915050565b600060e082019050612a79600083018a6127cb565b612a866020830189611f7d565b8181036040830152612a988188611faa565b90508181036060830152612aac81876120f2565b90508181036080830152612ac0818661207d565b905081810360a0830152612ad48185612008565b905081810360c0830152612ae881846123c4565b905098975050505050505050565b600060e082019050612b0b600083018a6127cb565b612b186020830189611f9b565b612b2560408301886127cb565b612b3260608301876127cb565b612b3f6080830186612150565b612b4c60a0830185612150565b612b5960c08301846127cb565b98975050505050505050565b6000606082019050612b7a60008301866127cb565b8181036020830152612b8c81856123fd565b90508181036040830152612ba0818461226e565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715612bcd57600080fd5b8060405250919050565b600067ffffffffffffffff821115612bee57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612c1657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612c3e57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612c6657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612c8e57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612cba57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612e6282612ea1565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612ed682612edd565b9050919050565b6000612ee882612eef565b9050919050565b6000612efa82612ea1565b9050919050565b82818337600083830152505050565b60005b83811015612f2e578082015181840152602081019050612f13565b83811115612f3d576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b612f6781612e57565b8114612f7257600080fd5b50565b612f7e81612e69565b8114612f8957600080fd5b50565b612f9581612ec1565b8114612fa057600080fd5b5056fea26469706673582212205932756c73a4b02aeef6ac52c3926a27421a882ed211c9ed8a0a4acb5f33919964736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106100955760003560e01c806340e58ee51161005957806340e58ee5146101da5780635f6afd1514610203578063da35c6641461022e578063da95691a14610259578063fe0d94c114610296576100d5565b8063013cf08b146100da57806306fdde031461011d57806315373e3d14610148578063328dd982146101715780633482cafe146101b1576100d5565b366100d5577fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf133346040516100cb929190612866565b60405180910390a1005b600080fd5b3480156100e657600080fd5b5061010160048036038101906100fc9190611e97565b6102b2565b6040516101149796959493929190612af6565b60405180910390f35b34801561012957600080fd5b5061013261032e565b60405161013f9190612927565b60405180910390f35b34801561015457600080fd5b5061016f600480360381019061016a9190611ee9565b610367565b005b34801561017d57600080fd5b5061019860048036038101906101939190611e97565b610465565b6040516101a894939291906128c6565b60405180910390f35b3480156101bd57600080fd5b506101d860048036038101906101d39190611d56565b610742565b005b3480156101e657600080fd5b5061020160048036038101906101fc9190611e97565b6107de565b005b34801561020f57600080fd5b50610218610a78565b6040516102259190612830565b60405180910390f35b34801561023a57600080fd5b50610243610aa1565b6040516102509190612a49565b60405180910390f35b34801561026557600080fd5b50610280600480360381019061027b9190611d7f565b610aa7565b60405161028d9190612a49565b60405180910390f35b6102b060048036038101906102ab9190611e97565b610e5c565b005b60026020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060154908060070154908060080160009054906101000a900460ff16908060080160019054906101000a900460ff16908060090154905087565b6040518060400160405280600c81526020017f486f7264436f6e6772657373000000000000000000000000000000000000000081525081565b6001151560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a230c524336040518263ffffffff1660e01b81526004016103c4919061284b565b60206040518083038186803b1580156103dc57600080fd5b505afa1580156103f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104149190611e6e565b151514610456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044d90612a09565b60405180910390fd5b6104613383836113fc565b5050565b6060806060806000600260008781526020019081526020016000209050806002018160030182600401836005018380548060200260200160405190810160405280929190818152602001828054801561051357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116104c9575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561056557602002820191906000526020600020905b815481526020019060010190808311610551575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610649578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106355780601f1061060a57610100808354040283529160200191610635565b820191906000526020600020905b81548152906001019060200180831161061857829003601f168201915b50505050508152602001906001019061058d565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561072c578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107185780601f106106ed57610100808354040283529160200191610718565b820191906000526020600020905b8154815290600101906020018083116106fb57829003601f168201915b505050505081526020019060010190610670565b5050505090509450945094509450509193509193565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079b57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001151560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a230c524336040518263ffffffff1660e01b815260040161083b919061284b565b60206040518083038186803b15801561085357600080fd5b505afa158015610867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088b9190611e6e565b1515146108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c490612a09565b60405180910390fd5b6000600260008381526020019081526020016000209050600015158160080160019054906101000a900460ff16151514801561091e5750600015158160080160009054906101000a900460ff161515145b61092757600080fd5b6203f48081600901540142101561093d57600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab0d8a3f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a357600080fd5b505afa1580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db9190611ec0565b816006015410610a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a17906129a9565b60405180910390fd5b60018160080160006101000a81548160ff0219169083151502179055507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c82604051610a6c9190612a49565b60405180910390a15050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60015481565b60006001151560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a230c524336040518263ffffffff1660e01b8152600401610b06919061284b565b60206040518083038186803b158015610b1e57600080fd5b505afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b569190611e6e565b151514610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612a09565b60405180910390fd5b84518651148015610baa575083518651145b8015610bb7575082518651145b610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed90612989565b60405180910390fd5b600086511415610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c32906129e9565b60405180910390fd5b600160008154809291906001019190505550610c5561161c565b60405180610160016040528060015481526020013373ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187815260200186815260200185815260200160008152602001600081526020016000151581526020016000151581526020014281525090508060026000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002019080519060200190610d48929190611690565b506060820151816003019080519060200190610d6592919061171a565b506080820151816004019080519060200190610d82929190611767565b5060a0820151816005019080519060200190610d9f9291906117c7565b5060c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff0219169083151502179055506101208201518160080160016101000a81548160ff02191690831515021790555061014082015181600901559050507fbaab6dcd2ae57433cc1372e25bc5139c3bd664075695546fde8821591a226e388160000151338989898989604051610e439796959493929190612a64565b60405180910390a1806000015191505095945050505050565b6001151560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a230c524336040518263ffffffff1660e01b8152600401610eb9919061284b565b60206040518083038186803b158015610ed157600080fd5b505afa158015610ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f099190611e6e565b151514610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290612a09565b60405180910390fd5b6000600260008381526020019081526020016000209050600015158160080160019054906101000a900460ff161515148015610f9c5750600015158160080160009054906101000a900460ff161515145b610fa557600080fd5b60018160080160016101000a81548160ff02191690831515021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab0d8a3f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561102857600080fd5b505afa15801561103c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110609190611ec0565b8160060154101561107057600080fd5b60005b81600201805490508110156113c0576060600083600401838154811061109557fe5b906000526020600020018054600181600116156101000203166002900490501415611173578260050182815481106110c957fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111675780601f1061113c57610100808354040283529160200191611167565b820191906000526020600020905b81548152906001019060200180831161114a57829003601f168201915b505050505090506111dd565b82600401828154811061118257fe5b906000526020600020016040516111999190612819565b60405180910390208360050183815481106111b057fe5b906000526020600020016040516020016111cb9291906127da565b60405160208183030381529060405290505b60008360020183815481106111ee57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684600301848154811061123e57fe5b9060005260206000200154836040516112579190612802565b60006040518083038185875af1925050503d8060008114611294576040519150601f19603f3d011682016040523d82523d6000602084013e611299565b606091505b50509050806112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d4906129c9565b60405180910390fd5b8360020183815481106112ec57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f88405ca50016c636e025868e263efe5a9f63bf11cc45404f7616394c7dc389d085600301858154811061135d57fe5b906000526020600020015486600401868154811061137757fe5b9060005260206000200187600501878154811061139057fe5b906000526020600020016040516113a993929190612b65565b60405180910390a250508080600101915050611073565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516113f09190612a49565b60405180910390a15050565b6000600260008481526020019081526020016000209050600081600a0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600015158160000160009054906101000a900460ff161515146114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790612a29565b60405180910390fd5b82156114db576114ce6001836006015461157790919063ffffffff16565b82600601819055506114fc565b6114f3600183600701546115cc90919063ffffffff16565b82600701819055505b60018160000160006101000a81548160ff021916908315150217905550828160000160016101000a81548160ff0219169083151502179055507fd356173ae8eeea8691aee4c1be712c314a975a3d43ebc48b08ca54d0dac912288585856040516115689392919061288f565b60405180910390a15050505050565b6000808284019050838110156115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b990612949565b60405180910390fd5b8091505092915050565b600082821115611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890612969565b60405180910390fd5b818303905092915050565b60405180610160016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081526020016060815260200160608152602001606081526020016000815260200160008152602001600015158152602001600015158152602001600081525090565b828054828255906000526020600020908101928215611709579160200282015b828111156117085782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906116b0565b5b5090506117169190611827565b5090565b828054828255906000526020600020908101928215611756579160200282015b8281111561175557825182559160200191906001019061173a565b5b5090506117639190611862565b5090565b8280548282559060005260206000209081019282156117b6579160200282015b828111156117b55782518290805190602001906117a592919061187f565b5091602001919060010190611787565b5b5090506117c391906118ff565b5090565b828054828255906000526020600020908101928215611816579160200282015b82811115611815578251829080519060200190611805929190611923565b50916020019190600101906117e7565b5b50905061182391906119a3565b5090565b5b8082111561185e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611828565b5090565b5b8082111561187b576000816000905550600101611863565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118c057805160ff19168380011785556118ee565b828001600101855582156118ee579182015b828111156118ed5782518255916020019190600101906118d2565b5b5090506118fb9190611862565b5090565b5b8082111561191f576000818161191691906119c7565b50600101611900565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061196457805160ff1916838001178555611992565b82800160010185558215611992579182015b82811115611991578251825591602001919060010190611976565b5b50905061199f9190611862565b5090565b5b808211156119c357600081816119ba9190611a0f565b506001016119a4565b5090565b50805460018160011615610100020316600290046000825580601f106119ed5750611a0c565b601f016020900490600052602060002090810190611a0b9190611862565b5b50565b50805460018160011615610100020316600290046000825580601f10611a355750611a54565b601f016020900490600052602060002090810190611a539190611862565b5b50565b600081359050611a6681612f5e565b92915050565b600082601f830112611a7d57600080fd5b8135611a90611a8b82612bd7565b612baa565b91508181835260208401935060208101905083856020840282011115611ab557600080fd5b60005b83811015611ae55781611acb8882611a57565b845260208401935060208301925050600181019050611ab8565b5050505092915050565b600082601f830112611b0057600080fd5b8135611b13611b0e82612bff565b612baa565b9150818183526020840193506020810190508360005b83811015611b595781358601611b3f8882611c84565b845260208401935060208301925050600181019050611b29565b5050505092915050565b600082601f830112611b7457600080fd5b8135611b87611b8282612c27565b612baa565b9150818183526020840193506020810190508360005b83811015611bcd5781358601611bb38882611cd8565b845260208401935060208301925050600181019050611b9d565b5050505092915050565b600082601f830112611be857600080fd5b8135611bfb611bf682612c4f565b612baa565b91508181835260208401935060208101905083856020840282011115611c2057600080fd5b60005b83811015611c505781611c368882611d2c565b845260208401935060208301925050600181019050611c23565b5050505092915050565b600081359050611c6981612f75565b92915050565b600081519050611c7e81612f75565b92915050565b600082601f830112611c9557600080fd5b8135611ca8611ca382612c77565b612baa565b91508082526020830160208301858383011115611cc457600080fd5b611ccf838284612f01565b50505092915050565b600082601f830112611ce957600080fd5b8135611cfc611cf782612ca3565b612baa565b91508082526020830160208301858383011115611d1857600080fd5b611d23838284612f01565b50505092915050565b600081359050611d3b81612f8c565b92915050565b600081519050611d5081612f8c565b92915050565b600060208284031215611d6857600080fd5b6000611d7684828501611a57565b91505092915050565b600080600080600060a08688031215611d9757600080fd5b600086013567ffffffffffffffff811115611db157600080fd5b611dbd88828901611a6c565b955050602086013567ffffffffffffffff811115611dda57600080fd5b611de688828901611bd7565b945050604086013567ffffffffffffffff811115611e0357600080fd5b611e0f88828901611b63565b935050606086013567ffffffffffffffff811115611e2c57600080fd5b611e3888828901611aef565b925050608086013567ffffffffffffffff811115611e5557600080fd5b611e6188828901611cd8565b9150509295509295909350565b600060208284031215611e8057600080fd5b6000611e8e84828501611c6f565b91505092915050565b600060208284031215611ea957600080fd5b6000611eb784828501611d2c565b91505092915050565b600060208284031215611ed257600080fd5b6000611ee084828501611d41565b91505092915050565b60008060408385031215611efc57600080fd5b6000611f0a85828601611d2c565b9250506020611f1b85828601611c5a565b9150509250929050565b6000611f318383611f8c565b60208301905092915050565b6000611f498383612176565b905092915050565b6000611f5d838361238b565b905092915050565b6000611f7183836127bc565b60208301905092915050565b611f8681612ecb565b82525050565b611f9581612e57565b82525050565b611fa481612e57565b82525050565b6000611fb582612d4e565b611fbf8185612dc4565b9350611fca83612ccf565b8060005b83811015611ffb578151611fe28882611f25565b9750611fed83612d90565b925050600181019050611fce565b5085935050505092915050565b600061201382612d59565b61201d8185612dd5565b93508360208202850161202f85612cdf565b8060005b8581101561206b578484038952815161204c8582611f3d565b945061205783612d9d565b925060208a01995050600181019050612033565b50829750879550505050505092915050565b600061208882612d64565b6120928185612de6565b9350836020820285016120a485612cef565b8060005b858110156120e057848403895281516120c18582611f51565b94506120cc83612daa565b925060208a019950506001810190506120a8565b50829750879550505050505092915050565b60006120fd82612d6f565b6121078185612df7565b935061211283612cff565b8060005b8381101561214357815161212a8882611f65565b975061213583612db7565b925050600181019050612116565b5085935050505092915050565b61215981612e69565b82525050565b61217061216b82612e75565b612f43565b82525050565b600061218182612d7a565b61218b8185612e08565b935061219b818560208601612f10565b6121a481612f4d565b840191505092915050565b60006121ba82612d7a565b6121c48185612e2a565b93506121d4818560208601612f10565b80840191505092915050565b6000815460018116600081146121fd576001811461222257612266565b607f600283041661220e8187612e2a565b955060ff1983168652808601935050612266565b600282046122308187612e2a565b955061223b85612d24565b60005b8281101561225d5781548189015260018201915060208101905061223e565b82880195505050505b505092915050565b60008154600181166000811461228b57600181146122b1576122f5565b607f600283041661229c8187612e19565b955060ff1983168652602086019350506122f5565b600282046122bf8187612e19565b95506122ca85612d0f565b60005b828110156122ec578154818901526001820191506020810190506122cd565b80880195505050505b505092915050565b60008154600181166000811461231a576001811461233f57612383565b607f600283041661232b8187612e2a565b955060ff1983168652808601935050612383565b6002820461234d8187612e2a565b955061235885612d0f565b60005b8281101561237a5781548189015260018201915060208101905061235b565b82880195505050505b505092915050565b600061239682612d85565b6123a08185612e35565b93506123b0818560208601612f10565b6123b981612f4d565b840191505092915050565b60006123cf82612d85565b6123d98185612e46565b93506123e9818560208601612f10565b6123f281612f4d565b840191505092915050565b60008154600181166000811461241a576001811461244057612484565b607f600283041661242b8187612e46565b955060ff198316865260208601935050612484565b6002820461244e8187612e46565b955061245985612d39565b60005b8281101561247b5781548189015260018201915060208101905061245c565b80880195505050505b505092915050565b6000612499601b83612e46565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006124d9601e83612e46565b91507f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006000830152602082019050919050565b6000612519604383612e46565b91507f486f7264436f6e67726573733a3a70726f706f73653a2070726f706f73616c2060008301527f66756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6160208301527f74636800000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006125a5603483612e46565b91507f486f7264436f6e67726573733a63616e63656c3a2050726f706f73616c20616c60008301527f726561647920726561636865642071756f72756d0000000000000000000000006020830152604082019050919050565b600061260b604183612e46565b91507f486f7264436f6e67726573733a3a657865637574655472616e73616374696f6e60008301527f3a205472616e73616374696f6e20657865637574696f6e20726576657274656460208301527f2e000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000612697602b83612e46565b91507f486f7264436f6e67726573733a3a70726f706f73653a206d7573742070726f7660008301527f69646520616374696f6e730000000000000000000000000000000000000000006020830152604082019050919050565b60006126fd602f83612e46565b91507f4f6e6c7920486f7264436f6e6772657373206d656d6265722063616e2063616c60008301527f6c20746869732066756e6374696f6e00000000000000000000000000000000006020830152604082019050919050565b6000612763602c83612e46565b91507f486f7264436f6e67726573733a3a5f63617374566f74653a20766f746572206160008301527f6c726561647920766f74656400000000000000000000000000000000000000006020830152604082019050919050565b6127c581612ec1565b82525050565b6127d481612ec1565b82525050565b60006127e6828561215f565b6004820191506127f682846122fd565b91508190509392505050565b600061280e82846121af565b915081905092915050565b600061282582846121e0565b915081905092915050565b60006020820190506128456000830184611f9b565b92915050565b60006020820190506128606000830184611f7d565b92915050565b600060408201905061287b6000830185611f7d565b61288860208301846127cb565b9392505050565b60006060820190506128a46000830186611f9b565b6128b160208301856127cb565b6128be6040830184612150565b949350505050565b600060808201905081810360008301526128e08187611faa565b905081810360208301526128f481866120f2565b90508181036040830152612908818561207d565b9050818103606083015261291c8184612008565b905095945050505050565b6000602082019050818103600083015261294181846123c4565b905092915050565b600060208201905081810360008301526129628161248c565b9050919050565b60006020820190508181036000830152612982816124cc565b9050919050565b600060208201905081810360008301526129a28161250c565b9050919050565b600060208201905081810360008301526129c281612598565b9050919050565b600060208201905081810360008301526129e2816125fe565b9050919050565b60006020820190508181036000830152612a028161268a565b9050919050565b60006020820190508181036000830152612a22816126f0565b9050919050565b60006020820190508181036000830152612a4281612756565b9050919050565b6000602082019050612a5e60008301846127cb565b92915050565b600060e082019050612a79600083018a6127cb565b612a866020830189611f7d565b8181036040830152612a988188611faa565b90508181036060830152612aac81876120f2565b90508181036080830152612ac0818661207d565b905081810360a0830152612ad48185612008565b905081810360c0830152612ae881846123c4565b905098975050505050505050565b600060e082019050612b0b600083018a6127cb565b612b186020830189611f9b565b612b2560408301886127cb565b612b3260608301876127cb565b612b3f6080830186612150565b612b4c60a0830185612150565b612b5960c08301846127cb565b98975050505050505050565b6000606082019050612b7a60008301866127cb565b8181036020830152612b8c81856123fd565b90508181036040830152612ba0818461226e565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715612bcd57600080fd5b8060405250919050565b600067ffffffffffffffff821115612bee57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612c1657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612c3e57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612c6657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612c8e57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612cba57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612e6282612ea1565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612ed682612edd565b9050919050565b6000612ee882612eef565b9050919050565b6000612efa82612ea1565b9050919050565b82818337600083830152505050565b60005b83811015612f2e578082015181840152602081019050612f13565b83811115612f3d576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b612f6781612e57565b8114612f7257600080fd5b50565b612f7e81612e69565b8114612f8957600080fd5b50565b612f9581612ec1565b8114612fa057600080fd5b5056fea26469706673582212205932756c73a4b02aeef6ac52c3926a27421a882ed211c9ed8a0a4acb5f33919964736f6c634300060c0033

Deployed Bytecode Sourcemap

8131:8088:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16172:36;16186:10;16198:9;16172:36;;;;;;;:::i;:::-;;;;;;;;8131:8088;;;;;9914:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;8261:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12569:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15692:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;11062:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14337:736;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15989:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8448:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11302:1257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12756:1573;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9914:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8261:44::-;;;;;;;;;;;;;;;;;;;:::o;12569:177::-;10913:4;10873:44;;:15;;;;;;;;;;:24;;;10898:10;10873:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;10865:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;12696:42:::1;12706:10;12718;12730:7;12696:9;:42::i;:::-;12569:177:::0;;:::o;15692:289::-;15752:24;15778:20;15800:26;15828:24;15865:18;15886:9;:21;15896:10;15886:21;;;;;;;;;;;15865:42;;15926:1;:9;;15937:1;:8;;15947:1;:12;;15961:1;:11;;15918:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15692:289;;;;;:::o;11062:232::-;11206:3;11170:40;;11178:15;;;;;;;;;;11170:40;;;11162:49;;;;;;11269:16;11222:15;;:64;;;;;;;;;;;;;;;;;;11062:232;:::o;14337:736::-;10913:4;10873:44;;:15;;;;;;;;;;:24;;;10898:10;10873:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;10865:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;14401:25:::1;14429:9;:21;14439:10;14429:21;;;;;;;;;;;14401:49;;14569:5;14548:26;;:8;:17;;;;;;;;;;;;:26;;;:56;;;;;14599:5;14578:26;;:8;:17;;;;;;;;;;;;:26;;;14548:56;14540:65;;;::::0;::::1;;14717:6;14696:8;:18;;;:27;14677:15;:46;;14669:55;;;::::0;::::1;;14829:15;::::0;::::1;;;;;;;;:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14809:8;:17;;;:54;14801:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;14994:4;14974:8;:17;;;:24;;;;;;;;;;;;;;;;;;15037:28;15054:10;15037:28;;;;;;:::i;:::-;;;;;;;;10980:1;14337:736:::0;:::o;15989:132::-;16057:7;16097:15;;;;;;;;;;;16082:31;;15989:132;:::o;8448:25::-;;;;:::o;11302:1257::-;11544:4;10913;10873:44;;:15;;;;;;;;;;:24;;;10898:10;10873:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;10865:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;11606:6:::1;:13;11588:7;:14;:31;:83;;;;;11654:10;:17;11636:7;:14;:35;11588:83;:134;;;;;11706:9;:16;11688:7;:14;:34;11588:134;11566:251;;;;;;;;;;;;:::i;:::-;;;;;;;;;11856:1;11838:7;:14;:19;;11830:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11918:13;;:15;;;;;;;;;;;;;11946:27;;:::i;:::-;11976:377;;;;;;;;12004:13;;11976:377;;;;12042:10;11976:377;;;;;;12076:7;11976:377;;;;12106:6;11976:377;;;;12139:10;11976:377;;;;12175:9;11976:377;;;;12209:1;11976:377;;;;12239:1;11976:377;;;;12265:5;11976:377;;;;;;12295:5;11976:377;;;;;;12326:15;11976:377;;::::0;11946:407:::1;;12394:11;12366:9;:25;12376:11;:14;;;12366:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12423:96;12439:11;:14;;;12455:10;12467:7;12476:6;12484:10;12496:9;12507:11;12423:96;;;;;;;;;;;;:::i;:::-;;;;;;;;12537:11;:14;;;12530:21;;;11302:1257:::0;;;;;;;:::o;12756:1573::-;10913:4;10873:44;;:15;;;;;;;;;;:24;;;10898:10;10873:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;10865:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;12895:25:::1;12923:9;:21;12933:10;12923:21;;;;;;;;;;;12895:49;;13063:5;13042:26;;:8;:17;;;;;;;;;;;;:26;;;:56;;;;;13093:5;13072:26;;:8;:17;;;;;;;;;;;;:26;;;13042:56;13034:65;;;::::0;::::1;;13173:4;13153:8;:17;;;:24;;;;;;;;;;;;;;;;;;13307:15;::::0;::::1;;;;;;;;:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13286:8;:17;;;:55;;13278:64;;;::::0;::::1;;13360:6;13355:875;13376:8;:16;;:23;;;;13372:1;:27;13355:875;;;13421:21;13503:1;13469:8;:19;;13489:1;13469:22;;;;;;;;;;;;;;;13463:36;;;;;;;;;;;;;;;;:41;13459:255;;;13536:8;:18;;13555:1;13536:21;;;;;;;;;;;;;;;13525:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13459:255;;;13649:8;:19;;13669:1;13649:22;;;;;;;;;;;;;;;13633:40;;;;;;:::i;:::-;;;;;;;;13676:8;:18;;13695:1;13676:21;;;;;;;;;;;;;;;13609:89;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13598:100;;13459:255;13795:12;13812:8;:16;;13829:1;13812:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;13843:8;:15;;13859:1;13843:18;;;;;;;;;;;;;;;;13863:8;13812:60;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13794:78;;;13951:7;13943:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14131:8;:16;;14148:1;14131:19;;;;;;;;;;;;;;;;;;;;;;;;;14112:106;;;14152:8;:15;;14168:1;14152:18;;;;;;;;;;;;;;;;14172:8;:19;;14192:1;14172:22;;;;;;;;;;;;;;;14196:8;:18;;14215:1;14196:21;;;;;;;;;;;;;;;14112:106;;;;;;;;:::i;:::-;;;;;;;;13355:875;;13401:3;;;;;;;13355:875;;;;14293:28;14310:10;14293:28;;;;;;:::i;:::-;;;;;;;;10980:1;12756:1573:::0;:::o;15081:603::-;15166:25;15194:9;:21;15204:10;15194:21;;;;;;;;;;;15166:49;;15226:23;15252:8;:17;;:24;15270:5;15252:24;;;;;;;;;;;;;;;15226:50;;15315:5;15295:25;;:7;:16;;;;;;;;;;;;:25;;;15287:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;15386:7;15382:169;;;15430:24;15452:1;15430:8;:17;;;:21;;:24;;;;:::i;:::-;15410:8;:17;;:44;;;;15382:169;;;15511:28;15537:1;15511:8;:21;;;:25;;:28;;;;:::i;:::-;15487:8;:21;;:52;;;;15382:169;15582:4;15563:7;:16;;;:23;;;;;;;;;;;;;;;;;;15615:7;15597;:15;;;:25;;;;;;;;;;;;;;;;;;15640:36;15649:5;15656:10;15668:7;15640:36;;;;;;;;:::i;:::-;;;;;;;;15081:603;;;;;:::o;3231:179::-;3289:7;3309:9;3325:1;3321;:5;3309:17;;3350:1;3345;:6;;3337:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3401:1;3394:8;;;3231:179;;;;:::o;3693:158::-;3751:7;3784:1;3779;:6;;3771:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;3842:1;3838;:5;3831:12;;3693:158;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;160:707::-;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;:::i;:::-;354:80;:::i;:::-;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;:::i;:::-;755:3;748:50;821:4;816:3;812:14;805:21;;849:4;844:3;840:14;833:21;;712:149;702:1;699;695:9;690:14;;655:206;;;659:14;237:630;;;;;;;:::o;891:705::-;;1017:3;1010:4;1002:6;998:17;994:27;984:2;;1035:1;1032;1025:12;984:2;1072:6;1059:20;1094:89;1109:73;1175:6;1109:73;:::i;:::-;1094:89;:::i;:::-;1085:98;;1200:5;1225:6;1218:5;1211:21;1255:4;1247:6;1243:17;1233:27;;1277:4;1272:3;1268:14;1261:21;;1330:6;1363:1;1348:242;1373:6;1370:1;1367:13;1348:242;;;1456:3;1443:17;1435:6;1431:30;1480:46;1522:3;1510:10;1480:46;:::i;:::-;1475:3;1468:59;1550:4;1545:3;1541:14;1534:21;;1578:4;1573:3;1569:14;1562:21;;1405:185;1395:1;1392;1388:9;1383:14;;1348:242;;;1352:14;977:619;;;;;;;:::o;1621:708::-;;1748:3;1741:4;1733:6;1729:17;1725:27;1715:2;;1766:1;1763;1756:12;1715:2;1803:6;1790:20;1825:90;1840:74;1907:6;1840:74;:::i;:::-;1825:90;:::i;:::-;1816:99;;1932:5;1957:6;1950:5;1943:21;1987:4;1979:6;1975:17;1965:27;;2009:4;2004:3;2000:14;1993:21;;2062:6;2095:1;2080:243;2105:6;2102:1;2099:13;2080:243;;;2188:3;2175:17;2167:6;2163:30;2212:47;2255:3;2243:10;2212:47;:::i;:::-;2207:3;2200:60;2283:4;2278:3;2274:14;2267:21;;2311:4;2306:3;2302:14;2295:21;;2137:186;2127:1;2124;2120:9;2115:14;;2080:243;;;2084:14;1708:621;;;;;;;:::o;2355:707::-;;2472:3;2465:4;2457:6;2453:17;2449:27;2439:2;;2490:1;2487;2480:12;2439:2;2527:6;2514:20;2549:80;2564:64;2621:6;2564:64;:::i;:::-;2549:80;:::i;:::-;2540:89;;2646:5;2671:6;2664:5;2657:21;2701:4;2693:6;2689:17;2679:27;;2723:4;2718:3;2714:14;2707:21;;2776:6;2823:3;2815:4;2807:6;2803:17;2798:3;2794:27;2791:36;2788:2;;;2840:1;2837;2830:12;2788:2;2865:1;2850:206;2875:6;2872:1;2869:13;2850:206;;;2933:3;2955:37;2988:3;2976:10;2955:37;:::i;:::-;2950:3;2943:50;3016:4;3011:3;3007:14;3000:21;;3044:4;3039:3;3035:14;3028:21;;2907:149;2897:1;2894;2890:9;2885:14;;2850:206;;;2854:14;2432:630;;;;;;;:::o;3070:124::-;;3147:6;3134:20;3125:29;;3159:30;3183:5;3159:30;:::i;:::-;3119:75;;;;:::o;3201:128::-;;3282:6;3276:13;3267:22;;3294:30;3318:5;3294:30;:::i;:::-;3261:68;;;;:::o;3337:440::-;;3438:3;3431:4;3423:6;3419:17;3415:27;3405:2;;3456:1;3453;3446:12;3405:2;3493:6;3480:20;3515:64;3530:48;3571:6;3530:48;:::i;:::-;3515:64;:::i;:::-;3506:73;;3599:6;3592:5;3585:21;3635:4;3627:6;3623:17;3668:4;3661:5;3657:16;3703:3;3694:6;3689:3;3685:16;3682:25;3679:2;;;3720:1;3717;3710:12;3679:2;3730:41;3764:6;3759:3;3754;3730:41;:::i;:::-;3398:379;;;;;;;:::o;3786:442::-;;3888:3;3881:4;3873:6;3869:17;3865:27;3855:2;;3906:1;3903;3896:12;3855:2;3943:6;3930:20;3965:65;3980:49;4022:6;3980:49;:::i;:::-;3965:65;:::i;:::-;3956:74;;4050:6;4043:5;4036:21;4086:4;4078:6;4074:17;4119:4;4112:5;4108:16;4154:3;4145:6;4140:3;4136:16;4133:25;4130:2;;;4171:1;4168;4161:12;4130:2;4181:41;4215:6;4210:3;4205;4181:41;:::i;:::-;3848:380;;;;;;;:::o;4236:130::-;;4316:6;4303:20;4294:29;;4328:33;4355:5;4328:33;:::i;:::-;4288:78;;;;:::o;4373:134::-;;4457:6;4451:13;4442:22;;4469:33;4496:5;4469:33;:::i;:::-;4436:71;;;;:::o;4514:241::-;;4618:2;4606:9;4597:7;4593:23;4589:32;4586:2;;;4634:1;4631;4624:12;4586:2;4669:1;4686:53;4731:7;4722:6;4711:9;4707:22;4686:53;:::i;:::-;4676:63;;4648:97;4580:175;;;;:::o;4762:1431::-;;;;;;5063:3;5051:9;5042:7;5038:23;5034:33;5031:2;;;5080:1;5077;5070:12;5031:2;5143:1;5132:9;5128:17;5115:31;5166:18;5158:6;5155:30;5152:2;;;5198:1;5195;5188:12;5152:2;5218:78;5288:7;5279:6;5268:9;5264:22;5218:78;:::i;:::-;5208:88;;5094:208;5361:2;5350:9;5346:18;5333:32;5385:18;5377:6;5374:30;5371:2;;;5417:1;5414;5407:12;5371:2;5437:78;5507:7;5498:6;5487:9;5483:22;5437:78;:::i;:::-;5427:88;;5312:209;5580:2;5569:9;5565:18;5552:32;5604:18;5596:6;5593:30;5590:2;;;5636:1;5633;5626:12;5590:2;5656:88;5736:7;5727:6;5716:9;5712:22;5656:88;:::i;:::-;5646:98;;5531:219;5809:2;5798:9;5794:18;5781:32;5833:18;5825:6;5822:30;5819:2;;;5865:1;5862;5855:12;5819:2;5885:87;5964:7;5955:6;5944:9;5940:22;5885:87;:::i;:::-;5875:97;;5760:218;6037:3;6026:9;6022:19;6009:33;6062:18;6054:6;6051:30;6048:2;;;6094:1;6091;6084:12;6048:2;6114:63;6169:7;6160:6;6149:9;6145:22;6114:63;:::i;:::-;6104:73;;5988:195;5025:1168;;;;;;;;:::o;6200:257::-;;6312:2;6300:9;6291:7;6287:23;6283:32;6280:2;;;6328:1;6325;6318:12;6280:2;6363:1;6380:61;6433:7;6424:6;6413:9;6409:22;6380:61;:::i;:::-;6370:71;;6342:105;6274:183;;;;:::o;6464:241::-;;6568:2;6556:9;6547:7;6543:23;6539:32;6536:2;;;6584:1;6581;6574:12;6536:2;6619:1;6636:53;6681:7;6672:6;6661:9;6657:22;6636:53;:::i;:::-;6626:63;;6598:97;6530:175;;;;:::o;6712:263::-;;6827:2;6815:9;6806:7;6802:23;6798:32;6795:2;;;6843:1;6840;6833:12;6795:2;6878:1;6895:64;6951:7;6942:6;6931:9;6927:22;6895:64;:::i;:::-;6885:74;;6857:108;6789:186;;;;:::o;6982:360::-;;;7100:2;7088:9;7079:7;7075:23;7071:32;7068:2;;;7116:1;7113;7106:12;7068:2;7151:1;7168:53;7213:7;7204:6;7193:9;7189:22;7168:53;:::i;:::-;7158:63;;7130:97;7258:2;7276:50;7318:7;7309:6;7298:9;7294:22;7276:50;:::i;:::-;7266:60;;7237:95;7062:280;;;;;:::o;7350:173::-;;7437:46;7479:3;7471:6;7437:46;:::i;:::-;7512:4;7507:3;7503:14;7489:28;;7430:93;;;;:::o;7532:189::-;;7651:64;7711:3;7703:6;7651:64;:::i;:::-;7637:78;;7630:91;;;;:::o;7730:193::-;;7851:66;7913:3;7905:6;7851:66;:::i;:::-;7837:80;;7830:93;;;;:::o;7932:173::-;;8019:46;8061:3;8053:6;8019:46;:::i;:::-;8094:4;8089:3;8085:14;8071:28;;8012:93;;;;:::o;8113:142::-;8204:45;8243:5;8204:45;:::i;:::-;8199:3;8192:58;8186:69;;:::o;8262:103::-;8335:24;8353:5;8335:24;:::i;:::-;8330:3;8323:37;8317:48;;:::o;8372:113::-;8455:24;8473:5;8455:24;:::i;:::-;8450:3;8443:37;8437:48;;:::o;8523:690::-;;8668:54;8716:5;8668:54;:::i;:::-;8735:86;8814:6;8809:3;8735:86;:::i;:::-;8728:93;;8842:56;8892:5;8842:56;:::i;:::-;8918:7;8946:1;8931:260;8956:6;8953:1;8950:13;8931:260;;;9023:6;9017:13;9044:63;9103:3;9088:13;9044:63;:::i;:::-;9037:70;;9124:60;9177:6;9124:60;:::i;:::-;9114:70;;8988:203;8978:1;8975;8971:9;8966:14;;8931:260;;;8935:14;9204:3;9197:10;;8647:566;;;;;;;:::o;9248:920::-;;9411:63;9468:5;9411:63;:::i;:::-;9487:95;9575:6;9570:3;9487:95;:::i;:::-;9480:102;;9605:3;9647:4;9639:6;9635:17;9630:3;9626:27;9674:65;9733:5;9674:65;:::i;:::-;9759:7;9787:1;9772:357;9797:6;9794:1;9791:13;9772:357;;;9859:9;9853:4;9849:20;9844:3;9837:33;9904:6;9898:13;9926:82;10003:4;9988:13;9926:82;:::i;:::-;9918:90;;10025:69;10087:6;10025:69;:::i;:::-;10015:79;;10117:4;10112:3;10108:14;10101:21;;9829:300;9819:1;9816;9812:9;9807:14;;9772:357;;;9776:14;10142:4;10135:11;;10159:3;10152:10;;9390:778;;;;;;;;;:::o;10205:928::-;;10370:64;10428:5;10370:64;:::i;:::-;10447:96;10536:6;10531:3;10447:96;:::i;:::-;10440:103;;10566:3;10608:4;10600:6;10596:17;10591:3;10587:27;10635:66;10695:5;10635:66;:::i;:::-;10721:7;10749:1;10734:360;10759:6;10756:1;10753:13;10734:360;;;10821:9;10815:4;10811:20;10806:3;10799:33;10866:6;10860:13;10888:84;10967:4;10952:13;10888:84;:::i;:::-;10880:92;;10989:70;11052:6;10989:70;:::i;:::-;10979:80;;11082:4;11077:3;11073:14;11066:21;;10791:303;10781:1;10778;10774:9;10769:14;;10734:360;;;10738:14;11107:4;11100:11;;11124:3;11117:10;;10349:784;;;;;;;;;:::o;11172:690::-;;11317:54;11365:5;11317:54;:::i;:::-;11384:86;11463:6;11458:3;11384:86;:::i;:::-;11377:93;;11491:56;11541:5;11491:56;:::i;:::-;11567:7;11595:1;11580:260;11605:6;11602:1;11599:13;11580:260;;;11672:6;11666:13;11693:63;11752:3;11737:13;11693:63;:::i;:::-;11686:70;;11773:60;11826:6;11773:60;:::i;:::-;11763:70;;11637:203;11627:1;11624;11620:9;11615:14;;11580:260;;;11584:14;11853:3;11846:10;;11296:566;;;;;;;:::o;11870:104::-;11947:21;11962:5;11947:21;:::i;:::-;11942:3;11935:34;11929:45;;:::o;11981:148::-;12080:43;12099:23;12116:5;12099:23;:::i;:::-;12080:43;:::i;:::-;12075:3;12068:56;12062:67;;:::o;12136:323::-;;12236:38;12268:5;12236:38;:::i;:::-;12286:60;12339:6;12334:3;12286:60;:::i;:::-;12279:67;;12351:52;12396:6;12391:3;12384:4;12377:5;12373:16;12351:52;:::i;:::-;12424:29;12446:6;12424:29;:::i;:::-;12419:3;12415:39;12408:46;;12216:243;;;;;:::o;12466:356::-;;12594:38;12626:5;12594:38;:::i;:::-;12644:88;12725:6;12720:3;12644:88;:::i;:::-;12637:95;;12737:52;12782:6;12777:3;12770:4;12763:5;12759:16;12737:52;:::i;:::-;12810:6;12805:3;12801:16;12794:23;;12574:248;;;;;:::o;12852:887::-;;12991:5;12985:12;13025:1;13014:9;13010:17;13038:1;13033:267;;;;13311:1;13306:427;;;;13003:730;;13033:267;13111:4;13107:1;13096:9;13092:17;13088:28;13130:88;13211:6;13206:3;13130:88;:::i;:::-;13123:95;;13256:4;13252:9;13241;13237:25;13232:3;13225:38;13286:6;13281:3;13277:16;13270:23;;13040:260;13033:267;;13306:427;13375:1;13364:9;13360:17;13391:88;13472:6;13467:3;13391:88;:::i;:::-;13384:95;;13501:41;13536:5;13501:41;:::i;:::-;13558:1;13566:130;13580:6;13577:1;13574:13;13566:130;;;13645:7;13639:14;13635:1;13630:3;13626:11;13619:35;13686:1;13677:7;13673:15;13662:26;;13602:4;13599:1;13595:12;13590:17;;13566:130;;;13719:6;13714:3;13710:16;13703:23;;13313:420;;;13003:730;;12961:778;;;;;:::o;13770:818::-;;13887:5;13881:12;13921:1;13910:9;13906:17;13934:1;13929:247;;;;14187:1;14182:400;;;;13899:683;;13929:247;14007:4;14003:1;13992:9;13988:17;13984:28;14026:70;14089:6;14084:3;14026:70;:::i;:::-;14019:77;;14134:4;14130:9;14119;14115:25;14110:3;14103:38;14164:4;14159:3;14155:14;14148:21;;13936:240;13929:247;;14182:400;14251:1;14240:9;14236:17;14267:70;14330:6;14325:3;14267:70;:::i;:::-;14260:77;;14359:37;14390:5;14359:37;:::i;:::-;14412:1;14420:130;14434:6;14431:1;14428:13;14420:130;;;14499:7;14493:14;14489:1;14484:3;14480:11;14473:35;14540:1;14531:7;14527:15;14516:26;;14456:4;14453:1;14449:12;14444:17;;14420:130;;;14573:1;14568:3;14564:11;14557:18;;14189:393;;;13899:683;;13857:731;;;;;:::o;14619:879::-;;14754:5;14748:12;14788:1;14777:9;14773:17;14801:1;14796:267;;;;15074:1;15069:423;;;;14766:726;;14796:267;14874:4;14870:1;14859:9;14855:17;14851:28;14893:88;14974:6;14969:3;14893:88;:::i;:::-;14886:95;;15019:4;15015:9;15004;15000:25;14995:3;14988:38;15049:6;15044:3;15040:16;15033:23;;14803:260;14796:267;;15069:423;15138:1;15127:9;15123:17;15154:88;15235:6;15230:3;15154:88;:::i;:::-;15147:95;;15264:37;15295:5;15264:37;:::i;:::-;15317:1;15325:130;15339:6;15336:1;15333:13;15325:130;;;15404:7;15398:14;15394:1;15389:3;15385:11;15378:35;15445:1;15436:7;15432:15;15421:26;;15361:4;15358:1;15354:12;15349:17;;15325:130;;;15478:6;15473:3;15469:16;15462:23;;15076:416;;;14766:726;;14724:774;;;;;:::o;15506:327::-;;15608:39;15641:5;15608:39;:::i;:::-;15659:61;15713:6;15708:3;15659:61;:::i;:::-;15652:68;;15725:52;15770:6;15765:3;15758:4;15751:5;15747:16;15725:52;:::i;:::-;15798:29;15820:6;15798:29;:::i;:::-;15793:3;15789:39;15782:46;;15588:245;;;;;:::o;15840:347::-;;15952:39;15985:5;15952:39;:::i;:::-;16003:71;16067:6;16062:3;16003:71;:::i;:::-;15996:78;;16079:52;16124:6;16119:3;16112:4;16105:5;16101:16;16079:52;:::i;:::-;16152:29;16174:6;16152:29;:::i;:::-;16147:3;16143:39;16136:46;;15932:255;;;;;:::o;16219:823::-;;16338:5;16332:12;16372:1;16361:9;16357:17;16385:1;16380:248;;;;16639:1;16634:402;;;;16350:686;;16380:248;16458:4;16454:1;16443:9;16439:17;16435:28;16477:71;16541:6;16536:3;16477:71;:::i;:::-;16470:78;;16586:4;16582:9;16571;16567:25;16562:3;16555:38;16616:4;16611:3;16607:14;16600:21;;16387:241;16380:248;;16634:402;16703:1;16692:9;16688:17;16719:71;16783:6;16778:3;16719:71;:::i;:::-;16712:78;;16812:38;16844:5;16812:38;:::i;:::-;16866:1;16874:130;16888:6;16885:1;16882:13;16874:130;;;16953:7;16947:14;16943:1;16938:3;16934:11;16927:35;16994:1;16985:7;16981:15;16970:26;;16910:4;16907:1;16903:12;16898:17;;16874:130;;;17027:1;17022:3;17018:11;17011:18;;16641:395;;;16350:686;;16308:734;;;;;:::o;17051:327::-;;17211:67;17275:2;17270:3;17211:67;:::i;:::-;17204:74;;17311:29;17307:1;17302:3;17298:11;17291:50;17369:2;17364:3;17360:12;17353:19;;17197:181;;;:::o;17387:330::-;;17547:67;17611:2;17606:3;17547:67;:::i;:::-;17540:74;;17647:32;17643:1;17638:3;17634:11;17627:53;17708:2;17703:3;17699:12;17692:19;;17533:184;;;:::o;17726:441::-;;17886:67;17950:2;17945:3;17886:67;:::i;:::-;17879:74;;17986:34;17982:1;17977:3;17973:11;17966:55;18055:34;18050:2;18045:3;18041:12;18034:56;18124:5;18119:2;18114:3;18110:12;18103:27;18158:2;18153:3;18149:12;18142:19;;17872:295;;;:::o;18176:389::-;;18336:67;18400:2;18395:3;18336:67;:::i;:::-;18329:74;;18436:34;18432:1;18427:3;18423:11;18416:55;18505:22;18500:2;18495:3;18491:12;18484:44;18556:2;18551:3;18547:12;18540:19;;18322:243;;;:::o;18574:439::-;;18734:67;18798:2;18793:3;18734:67;:::i;:::-;18727:74;;18834:34;18830:1;18825:3;18821:11;18814:55;18903:34;18898:2;18893:3;18889:12;18882:56;18972:3;18967:2;18962:3;18958:12;18951:25;19004:2;18999:3;18995:12;18988:19;;18720:293;;;:::o;19022:380::-;;19182:67;19246:2;19241:3;19182:67;:::i;:::-;19175:74;;19282:34;19278:1;19273:3;19269:11;19262:55;19351:13;19346:2;19341:3;19337:12;19330:35;19393:2;19388:3;19384:12;19377:19;;19168:234;;;:::o;19411:384::-;;19571:67;19635:2;19630:3;19571:67;:::i;:::-;19564:74;;19671:34;19667:1;19662:3;19658:11;19651:55;19740:17;19735:2;19730:3;19726:12;19719:39;19786:2;19781:3;19777:12;19770:19;;19557:238;;;:::o;19804:381::-;;19964:67;20028:2;20023:3;19964:67;:::i;:::-;19957:74;;20064:34;20060:1;20055:3;20051:11;20044:55;20133:14;20128:2;20123:3;20119:12;20112:36;20176:2;20171:3;20167:12;20160:19;;19950:235;;;:::o;20193:103::-;20266:24;20284:5;20266:24;:::i;:::-;20261:3;20254:37;20248:48;;:::o;20303:113::-;20386:24;20404:5;20386:24;:::i;:::-;20381:3;20374:37;20368:48;;:::o;20423:399::-;;20592:73;20661:3;20652:6;20592:73;:::i;:::-;20687:1;20682:3;20678:11;20671:18;;20707:90;20793:3;20784:6;20707:90;:::i;:::-;20700:97;;20814:3;20807:10;;20580:242;;;;;:::o;20829:271::-;;20982:93;21071:3;21062:6;20982:93;:::i;:::-;20975:100;;21092:3;21085:10;;20963:137;;;;:::o;21107:273::-;;21261:94;21351:3;21342:6;21261:94;:::i;:::-;21254:101;;21372:3;21365:10;;21242:138;;;;:::o;21387:222::-;;21514:2;21503:9;21499:18;21491:26;;21528:71;21596:1;21585:9;21581:17;21572:6;21528:71;:::i;:::-;21485:124;;;;:::o;21616:238::-;;21751:2;21740:9;21736:18;21728:26;;21765:79;21841:1;21830:9;21826:17;21817:6;21765:79;:::i;:::-;21722:132;;;;:::o;21861:349::-;;22024:2;22013:9;22009:18;22001:26;;22038:79;22114:1;22103:9;22099:17;22090:6;22038:79;:::i;:::-;22128:72;22196:2;22185:9;22181:18;22172:6;22128:72;:::i;:::-;21995:215;;;;;:::o;22217:432::-;;22394:2;22383:9;22379:18;22371:26;;22408:71;22476:1;22465:9;22461:17;22452:6;22408:71;:::i;:::-;22490:72;22558:2;22547:9;22543:18;22534:6;22490:72;:::i;:::-;22573:66;22635:2;22624:9;22620:18;22611:6;22573:66;:::i;:::-;22365:284;;;;;;:::o;22656:1224::-;;23105:3;23094:9;23090:19;23082:27;;23156:9;23150:4;23146:20;23142:1;23131:9;23127:17;23120:47;23181:108;23284:4;23275:6;23181:108;:::i;:::-;23173:116;;23337:9;23331:4;23327:20;23322:2;23311:9;23307:18;23300:48;23362:108;23465:4;23456:6;23362:108;:::i;:::-;23354:116;;23518:9;23512:4;23508:20;23503:2;23492:9;23488:18;23481:48;23543:128;23666:4;23657:6;23543:128;:::i;:::-;23535:136;;23719:9;23713:4;23709:20;23704:2;23693:9;23689:18;23682:48;23744:126;23865:4;23856:6;23744:126;:::i;:::-;23736:134;;23076:804;;;;;;;:::o;23887:310::-;;24034:2;24023:9;24019:18;24011:26;;24084:9;24078:4;24074:20;24070:1;24059:9;24055:17;24048:47;24109:78;24182:4;24173:6;24109:78;:::i;:::-;24101:86;;24005:192;;;;:::o;24204:416::-;;24404:2;24393:9;24389:18;24381:26;;24454:9;24448:4;24444:20;24440:1;24429:9;24425:17;24418:47;24479:131;24605:4;24479:131;:::i;:::-;24471:139;;24375:245;;;:::o;24627:416::-;;24827:2;24816:9;24812:18;24804:26;;24877:9;24871:4;24867:20;24863:1;24852:9;24848:17;24841:47;24902:131;25028:4;24902:131;:::i;:::-;24894:139;;24798:245;;;:::o;25050:416::-;;25250:2;25239:9;25235:18;25227:26;;25300:9;25294:4;25290:20;25286:1;25275:9;25271:17;25264:47;25325:131;25451:4;25325:131;:::i;:::-;25317:139;;25221:245;;;:::o;25473:416::-;;25673:2;25662:9;25658:18;25650:26;;25723:9;25717:4;25713:20;25709:1;25698:9;25694:17;25687:47;25748:131;25874:4;25748:131;:::i;:::-;25740:139;;25644:245;;;:::o;25896:416::-;;26096:2;26085:9;26081:18;26073:26;;26146:9;26140:4;26136:20;26132:1;26121:9;26117:17;26110:47;26171:131;26297:4;26171:131;:::i;:::-;26163:139;;26067:245;;;:::o;26319:416::-;;26519:2;26508:9;26504:18;26496:26;;26569:9;26563:4;26559:20;26555:1;26544:9;26540:17;26533:47;26594:131;26720:4;26594:131;:::i;:::-;26586:139;;26490:245;;;:::o;26742:416::-;;26942:2;26931:9;26927:18;26919:26;;26992:9;26986:4;26982:20;26978:1;26967:9;26963:17;26956:47;27017:131;27143:4;27017:131;:::i;:::-;27009:139;;26913:245;;;:::o;27165:416::-;;27365:2;27354:9;27350:18;27342:26;;27415:9;27409:4;27405:20;27401:1;27390:9;27386:17;27379:47;27440:131;27566:4;27440:131;:::i;:::-;27432:139;;27336:245;;;:::o;27588:222::-;;27715:2;27704:9;27700:18;27692:26;;27729:71;27797:1;27786:9;27782:17;27773:6;27729:71;:::i;:::-;27686:124;;;;:::o;27817:1664::-;;28378:3;28367:9;28363:19;28355:27;;28393:71;28461:1;28450:9;28446:17;28437:6;28393:71;:::i;:::-;28475:80;28551:2;28540:9;28536:18;28527:6;28475:80;:::i;:::-;28603:9;28597:4;28593:20;28588:2;28577:9;28573:18;28566:48;28628:108;28731:4;28722:6;28628:108;:::i;:::-;28620:116;;28784:9;28778:4;28774:20;28769:2;28758:9;28754:18;28747:48;28809:108;28912:4;28903:6;28809:108;:::i;:::-;28801:116;;28966:9;28960:4;28956:20;28950:3;28939:9;28935:19;28928:49;28991:128;29114:4;29105:6;28991:128;:::i;:::-;28983:136;;29168:9;29162:4;29158:20;29152:3;29141:9;29137:19;29130:49;29193:126;29314:4;29305:6;29193:126;:::i;:::-;29185:134;;29368:9;29362:4;29358:20;29352:3;29341:9;29337:19;29330:49;29393:78;29466:4;29457:6;29393:78;:::i;:::-;29385:86;;28349:1132;;;;;;;;;;:::o;29488:868::-;;29771:3;29760:9;29756:19;29748:27;;29786:71;29854:1;29843:9;29839:17;29830:6;29786:71;:::i;:::-;29868:72;29936:2;29925:9;29921:18;29912:6;29868:72;:::i;:::-;29951;30019:2;30008:9;30004:18;29995:6;29951:72;:::i;:::-;30034;30102:2;30091:9;30087:18;30078:6;30034:72;:::i;:::-;30117:67;30179:3;30168:9;30164:19;30155:6;30117:67;:::i;:::-;30195;30257:3;30246:9;30242:19;30233:6;30195:67;:::i;:::-;30273:73;30341:3;30330:9;30326:19;30317:6;30273:73;:::i;:::-;29742:614;;;;;;;;;;:::o;30363:604::-;;30578:2;30567:9;30563:18;30555:26;;30592:71;30660:1;30649:9;30645:17;30636:6;30592:71;:::i;:::-;30711:9;30705:4;30701:20;30696:2;30685:9;30681:18;30674:48;30736:75;30806:4;30797:6;30736:75;:::i;:::-;30728:83;;30859:9;30853:4;30849:20;30844:2;30833:9;30829:18;30822:48;30884:73;30952:4;30943:6;30884:73;:::i;:::-;30876:81;;30549:418;;;;;;:::o;30974:256::-;;31036:2;31030:9;31020:19;;31074:4;31066:6;31062:17;31173:6;31161:10;31158:22;31137:18;31125:10;31122:34;31119:62;31116:2;;;31194:1;31191;31184:12;31116:2;31214:10;31210:2;31203:22;31014:216;;;;:::o;31237:304::-;;31396:18;31388:6;31385:30;31382:2;;;31428:1;31425;31418:12;31382:2;31463:4;31455:6;31451:17;31443:25;;31526:4;31520;31516:15;31508:23;;31319:222;;;:::o;31548:313::-;;31716:18;31708:6;31705:30;31702:2;;;31748:1;31745;31738:12;31702:2;31783:4;31775:6;31771:17;31763:25;;31846:4;31840;31836:15;31828:23;;31639:222;;;:::o;31868:314::-;;32037:18;32029:6;32026:30;32023:2;;;32069:1;32066;32059:12;32023:2;32104:4;32096:6;32092:17;32084:25;;32167:4;32161;32157:15;32149:23;;31960:222;;;:::o;32189:304::-;;32348:18;32340:6;32337:30;32334:2;;;32380:1;32377;32370:12;32334:2;32415:4;32407:6;32403:17;32395:25;;32478:4;32472;32468:15;32460:23;;32271:222;;;:::o;32500:321::-;;32643:18;32635:6;32632:30;32629:2;;;32675:1;32672;32665:12;32629:2;32742:4;32738:9;32731:4;32723:6;32719:17;32715:33;32707:41;;32806:4;32800;32796:15;32788:23;;32566:255;;;:::o;32828:322::-;;32972:18;32964:6;32961:30;32958:2;;;33004:1;33001;32994:12;32958:2;33071:4;33067:9;33060:4;33052:6;33048:17;33044:33;33036:41;;33135:4;33129;33125:15;33117:23;;32895:255;;;:::o;33157:151::-;;33243:3;33235:11;;33281:4;33276:3;33272:14;33264:22;;33229:79;;;:::o;33315:160::-;;33410:3;33402:11;;33448:4;33443:3;33439:14;33431:22;;33396:79;;;:::o;33482:161::-;;33578:3;33570:11;;33616:4;33611:3;33607:14;33599:22;;33564:79;;;:::o;33650:151::-;;33736:3;33728:11;;33774:4;33769:3;33765:14;33757:22;;33722:79;;;:::o;33808:157::-;;33875:3;33867:11;;33912:3;33909:1;33902:14;33944:4;33941:1;33931:18;33923:26;;33861:104;;;:::o;33972:161::-;;34043:3;34035:11;;34080:3;34077:1;34070:14;34112:4;34109:1;34099:18;34091:26;;34029:104;;;:::o;34140:158::-;;34208:3;34200:11;;34245:3;34242:1;34235:14;34277:4;34274:1;34264:18;34256:26;;34194:104;;;:::o;34305:137::-;;34414:5;34408:12;34398:22;;34379:63;;;:::o;34449:146::-;;34567:5;34561:12;34551:22;;34532:63;;;:::o;34602:147::-;;34721:5;34715:12;34705:22;;34686:63;;;:::o;34756:137::-;;34865:5;34859:12;34849:22;;34830:63;;;:::o;34900:121::-;;34993:5;34987:12;34977:22;;34958:63;;;:::o;35028:122::-;;35122:5;35116:12;35106:22;;35087:63;;;:::o;35157:108::-;;35255:4;35250:3;35246:14;35238:22;;35232:33;;;:::o;35272:117::-;;35379:4;35374:3;35370:14;35362:22;;35356:33;;;:::o;35396:118::-;;35504:4;35499:3;35495:14;35487:22;;35481:33;;;:::o;35521:108::-;;35619:4;35614:3;35610:14;35602:22;;35596:33;;;:::o;35637:178::-;;35767:6;35762:3;35755:19;35804:4;35799:3;35795:14;35780:29;;35748:67;;;;:::o;35824:187::-;;35963:6;35958:3;35951:19;36000:4;35995:3;35991:14;35976:29;;35944:67;;;;:::o;36020:188::-;;36160:6;36155:3;36148:19;36197:4;36192:3;36188:14;36173:29;;36141:67;;;;:::o;36217:178::-;;36347:6;36342:3;36335:19;36384:4;36379:3;36375:14;36360:29;;36328:67;;;;:::o;36404:152::-;;36508:6;36503:3;36496:19;36545:4;36540:3;36536:14;36521:29;;36489:67;;;;:::o;36565:162::-;;36679:6;36674:3;36667:19;36716:4;36711:3;36707:14;36692:29;;36660:67;;;;:::o;36736:144::-;;36871:3;36856:18;;36849:31;;;;:::o;36889:153::-;;36994:6;36989:3;36982:19;37031:4;37026:3;37022:14;37007:29;;36975:67;;;;:::o;37051:163::-;;37166:6;37161:3;37154:19;37203:4;37198:3;37194:14;37179:29;;37147:67;;;;:::o;37222:91::-;;37284:24;37302:5;37284:24;:::i;:::-;37273:35;;37267:46;;;:::o;37320:85::-;;37393:5;37386:13;37379:21;37368:32;;37362:43;;;:::o;37412:144::-;;37484:66;37477:5;37473:78;37462:89;;37456:100;;;:::o;37563:121::-;;37636:42;37629:5;37625:54;37614:65;;37608:76;;;:::o;37691:72::-;;37753:5;37742:16;;37736:27;;;:::o;37770:129::-;;37857:37;37888:5;37857:37;:::i;:::-;37844:50;;37838:61;;;:::o;37906:121::-;;37985:37;38016:5;37985:37;:::i;:::-;37972:50;;37966:61;;;:::o;38034:108::-;;38113:24;38131:5;38113:24;:::i;:::-;38100:37;;38094:48;;;:::o;38150:145::-;38231:6;38226:3;38221;38208:30;38287:1;38278:6;38273:3;38269:16;38262:27;38201:94;;;:::o;38304:268::-;38369:1;38376:101;38390:6;38387:1;38384:13;38376:101;;;38466:1;38461:3;38457:11;38451:18;38447:1;38442:3;38438:11;38431:39;38412:2;38409:1;38405:10;38400:15;;38376:101;;;38492:6;38489:1;38486:13;38483:2;;;38557:1;38548:6;38543:3;38539:16;38532:27;38483:2;38353:219;;;;:::o;38580:73::-;;38643:5;38632:16;;38626:27;;;:::o;38660:97::-;;38748:2;38744:7;38739:2;38732:5;38728:14;38724:28;38714:38;;38708:49;;;:::o;38765:117::-;38834:24;38852:5;38834:24;:::i;:::-;38827:5;38824:35;38814:2;;38873:1;38870;38863:12;38814:2;38808:74;:::o;38889:111::-;38955:21;38970:5;38955:21;:::i;:::-;38948:5;38945:32;38935:2;;38991:1;38988;38981:12;38935:2;38929:71;:::o;39007:117::-;39076:24;39094:5;39076:24;:::i;:::-;39069:5;39066:35;39056:2;;39115:1;39112;39105:12;39056:2;39050:74;:::o

Swarm Source

ipfs://5932756c73a4b02aeef6ac52c3926a27421a882ed211c9ed8a0a4acb5f339199
Loading...
Loading
Loading...
Loading
[ 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.