ETH Price: $3,476.36 (-1.15%)
Gas: 4 Gwei

Token

Ascended VX (AscendedVX)
 

Overview

Max Total Supply

2,767 AscendedVX

Holders

202

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 AscendedVX
0xe3ec7347f7a2031be31c84c279159db18627b224
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:
AscendedVX

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-11
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/*
1. Cost 50 $AURA per mint
2. Dont need to hold ascended
3. Yes is random
4. No yield from VX
*/

/* ERC721I - ERC721I (ERC721 0xInuarashi Edition) - Gas Optimized
    Open Source: with the efforts of the [0x Collective] <3 */

contract ERC721I {

    string public name; string public symbol;
    string internal baseTokenURI; string internal baseTokenURI_EXT;
    constructor(string memory name_, string memory symbol_) {
        name = name_; symbol = symbol_; 
    }

    uint256 public totalSupply; 
    mapping(uint256 => address) public ownerOf; 
    mapping(address => uint256) public balanceOf; 

    mapping(uint256 => address) public getApproved; 
    mapping(address => mapping(address => bool)) public isApprovedForAll; 

    // Events
    event Transfer(address indexed from, address indexed to, 
    uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, 
    uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, 
    bool approved);

    // // internal write functions
    // mint
    function _mint(address to_, uint256 tokenId_) internal virtual {
        require(to_ != address(0x0), 
            "ERC721I: _mint() Mint to Zero Address");
        require(ownerOf[tokenId_] == address(0x0), 
            "ERC721I: _mint() Token to Mint Already Exists!");

        balanceOf[to_]++;
        ownerOf[tokenId_] = to_;

        emit Transfer(address(0x0), to_, tokenId_);
    }

    // transfer
    function _transfer(address from_, address to_, uint256 tokenId_) internal virtual {
        require(from_ == ownerOf[tokenId_], 
            "ERC721I: _transfer() Transfer Not Owner of Token!");
        require(to_ != address(0x0), 
            "ERC721I: _transfer() Transfer to Zero Address!");

        // checks if there is an approved address clears it if there is
        if (getApproved[tokenId_] != address(0x0)) { 
            _approve(address(0x0), tokenId_); 
        } 

        ownerOf[tokenId_] = to_; 
        balanceOf[from_]--;
        balanceOf[to_]++;

        emit Transfer(from_, to_, tokenId_);
    }

    // approve
    function _approve(address to_, uint256 tokenId_) internal virtual {
        if (getApproved[tokenId_] != to_) {
            getApproved[tokenId_] = to_;
            emit Approval(ownerOf[tokenId_], to_, tokenId_);
        }
    }
    function _setApprovalForAll(address owner_, address operator_, bool approved_)
    internal virtual {
        require(owner_ != operator_, 
            "ERC721I: _setApprovalForAll() Owner must not be the Operator!");
        isApprovedForAll[owner_][operator_] = approved_;
        emit ApprovalForAll(owner_, operator_, approved_);
    }

    // token uri
    function _setBaseTokenURI(string memory uri_) internal virtual {
        baseTokenURI = uri_;
    }
    function _setBaseTokenURI_EXT(string memory ext_) internal virtual {
        baseTokenURI_EXT = ext_;
    }

    // // Internal View Functions
    // Embedded Libraries
    function _toString(uint256 value_) internal pure returns (string memory) {
        if (value_ == 0) { return "0"; }
        uint256 _iterate = value_; uint256 _digits;
        while (_iterate != 0) { _digits++; _iterate /= 10; } // get digits in value_
        bytes memory _buffer = new bytes(_digits);
        while (value_ != 0) { _digits--; _buffer[_digits] = bytes1(uint8(
            48 + uint256(value_ % 10 ))); value_ /= 10; } // create bytes of value_
        return string(_buffer); // return string converted bytes of value_
    }

    // Functional Views
    function _isApprovedOrOwner(address spender_, uint256 tokenId_) internal 
    view virtual returns (bool) {
        require(ownerOf[tokenId_] != address(0x0), 
            "ERC721I: _isApprovedOrOwner() Owner is Zero Address!");
        address _owner = ownerOf[tokenId_];
        return (spender_ == _owner 
            || spender_ == getApproved[tokenId_] 
            || isApprovedForAll[_owner][spender_]);
    }
    function _exists(uint256 tokenId_) internal view virtual returns (bool) {
        return ownerOf[tokenId_] != address(0x0);
    }

    // // public write functions
    function approve(address to_, uint256 tokenId_) public virtual {
        address _owner = ownerOf[tokenId_];
        require(to_ != _owner, 
            "ERC721I: approve() Cannot approve yourself!");
        require(msg.sender == _owner || isApprovedForAll[_owner][msg.sender],
            "ERC721I: Caller not owner or Approved!");
        _approve(to_, tokenId_);
    }
    function setApprovalForAll(address operator_, bool approved_) public virtual {
        _setApprovalForAll(msg.sender, operator_, approved_);
    }

    function transferFrom(address from_, address to_, uint256 tokenId_) 
    public virtual {
        require(_isApprovedOrOwner(msg.sender, tokenId_), 
            "ERC721I: transferFrom() _isApprovedOrOwner = false!");
        _transfer(from_, to_, tokenId_);
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_, 
    bytes memory data_) public virtual {
        transferFrom(from_, to_, tokenId_);
        if (to_.code.length != 0) {
            (, bytes memory _returned) = to_.staticcall(abi.encodeWithSelector(
                0x150b7a02, msg.sender, from_, tokenId_, data_));
            bytes4 _selector = abi.decode(_returned, (bytes4));
            require(_selector == 0x150b7a02, 
                "ERC721I: safeTransferFrom() to_ not ERC721Receivable!");
        }
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_) 
    public virtual {
        safeTransferFrom(from_, to_, tokenId_, "");
    }

    // 0xInuarashi Custom Functions
    function multiTransferFrom(address from_, address to_, 
    uint256[] memory tokenIds_) public virtual {
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            transferFrom(from_, to_, tokenIds_[i]);
        }
    }
    function multiSafeTransferFrom(address from_, address to_, 
    uint256[] memory tokenIds_, bytes memory data_) public virtual {
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            safeTransferFrom(from_, to_, tokenIds_[i], data_);
        }
    }

    // OZ Standard Stuff
    function supportsInterface(bytes4 interfaceId_) public pure returns (bool) {
        return (interfaceId_ == 0x80ac58cd || interfaceId_ == 0x5b5e139f);
    }

    function tokenURI(uint256 tokenId_) public view virtual returns (string memory) {
        require(ownerOf[tokenId_] != address(0x0), 
            "ERC721I: tokenURI() Token does not exist!");
        return string(abi.encodePacked(
            baseTokenURI, _toString(tokenId_), baseTokenURI_EXT));
    }
    // // public view functions
    // never use these for functions ever, they are expensive af and for view only 
    function walletOfOwner(address address_) public virtual view 
    returns (uint256[] memory) {
        uint256 _balance = balanceOf[address_];
        uint256[] memory _tokens = new uint256[] (_balance);
        uint256 _index;
        uint256 _loopThrough = totalSupply;
        for (uint256 i = 0; i < _loopThrough; i++) {
            if (ownerOf[i] == address(0x0) && _tokens[_balance - 1] == 0) {
                _loopThrough++; 
            }
            if (ownerOf[i] == address_) { 
                _tokens[_index] = i; _index++; 
            }
        }
        return _tokens;
    }

    // not sure when this will ever be needed but it conforms to erc721 enumerable
    function tokenOfOwnerByIndex(address address_, uint256 index_) public 
    virtual view returns (uint256) {
        uint256[] memory _wallet = walletOfOwner(address_);
        return _wallet[index_];
    }
}

abstract contract Ownable {
    address public owner; 
    constructor() { owner = msg.sender; }
    modifier onlyOwner { require(owner == msg.sender, "Not Owner!"); _; }
    function transferOwnership(address new_) external onlyOwner { owner = new_; }
}

interface iERC20 {
    function balanceOf(address wallet_) external view returns (uint256);
    function transferFrom(address from_, address to_, uint256 amount_) external;
}

contract AscendedVX is ERC721I, Ownable {
    constructor() ERC721I("Ascended VX","AscendedVX") {}

    ///// Interfaces /////
    iERC20 public AURA = iERC20(0xBE6a20DAd94b377Af1EfaA229ed0E0B91eb54ac5);
    function setAURA(address aura_) external onlyOwner { AURA = iERC20(aura_); }

    ///// Project Constraints /////
    uint256 public maxTokens = 8888; 

    ///// Costs /////
    uint256 public auraToMint = 50 ether;
    function setAuraToMint(uint256 cost_) external onlyOwner { auraToMint = cost_; }
    address public auraReceiver = 0x000000000000000000000000000000000000dEaD;
    function setAuraReceiver(address receiver_) external onlyOwner { 
        auraReceiver = receiver_; }

    ///// Ownable Administration //////
    function setBaseTokenURI(string calldata uri_) external onlyOwner { 
        _setBaseTokenURI(uri_);
    }
    function setBaseTokenURI_EXT(string calldata ext_) external onlyOwner {
        _setBaseTokenURI_EXT(ext_);
    }

    ///// Pausable Administration (Ownable) /////
    bool public vxMintingPaused; 
    modifier onlyMinting { require(!vxMintingPaused, "VX Minting is Paused!"); _; }
    function setMintingPaused(bool bool_) external onlyOwner {
        vxMintingPaused = bool_; 
    }

    ///// Internal Functions /////
    function _mintMany(address to_, uint256 amount_) internal {
        require(maxTokens >= totalSupply + amount_,
            "Not enough supply remaining!");

        // TokenId starts at 1
        uint256 _startId = totalSupply + 1;

        for (uint256 i = 0; i < amount_; i++) {
            _mint(to_, _startId + i);
        }
        totalSupply += amount_;
    }

    ///// Owner Mint Functions /////
    function ownerMint(address[] calldata tos_, uint256[] calldata amounts_) 
    external onlyOwner {
        require(tos_.length == amounts_.length,
            "Array Length Mismatch!");
        
        for (uint256 i = 0; i < tos_.length; i++) {
            _mintMany(tos_[i], amounts_[i]);
        }
    }

    ///// Aura Mint Functions /////
    function mint(uint256 amount_) external onlyMinting {
        // Maximum amount_ per mint is 20. Hardcode to save 2100 SLOAD gas
        require(amount_ <= 20,
            "You can only mint 20 per tx!");

        // calculate the total AURA cost
        uint256 _totalAuraCost = auraToMint * amount_;

        // msg.sender requires to have >= AURA than cost
        require(AURA.balanceOf(msg.sender) >= _totalAuraCost,
            "You don't have enough $AURA!");

        // transfer it to receiver address
        AURA.transferFrom(msg.sender, auraReceiver, _totalAuraCost);

        // after that, mint the amount to the msg.sender
        _mintMany(msg.sender, amount_);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AURA","outputs":[{"internalType":"contract iERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"auraReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auraToMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"},{"internalType":"bytes","name":"data_","type":"bytes"}],"name":"multiSafeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"multiTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tos_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"},{"internalType":"bytes","name":"data_","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"aura_","type":"address"}],"name":"setAURA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator_","type":"address"},{"internalType":"bool","name":"approved_","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver_","type":"address"}],"name":"setAuraReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"cost_","type":"uint256"}],"name":"setAuraToMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri_","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"ext_","type":"string"}],"name":"setBaseTokenURI_EXT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"}],"name":"setMintingPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId_","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"uint256","name":"index_","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"new_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vxMintingPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}]

608060405273be6a20dad94b377af1efaa229ed0e0b91eb54ac5600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506122b8600b556802b5e3af16b1880000600c5561dead600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000bc57600080fd5b506040518060400160405280600b81526020017f417363656e6465642056580000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f417363656e646564565800000000000000000000000000000000000000000000815250816000908051906020019062000141929190620001a4565b5080600190805190602001906200015a929190620001a4565b50505033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002b9565b828054620001b29062000254565b90600052602060002090601f016020900481019282620001d6576000855562000222565b82601f10620001f157805160ff191683800117855562000222565b8280016001018555821562000222579182015b828111156200022157825182559160200191906001019062000204565b5b50905062000231919062000235565b5090565b5b808211156200025057600081600090555060010162000236565b5090565b600060028204905060018216806200026d57607f821691505b602082108114156200028457620002836200028a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b613f7b80620002c96000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063438b63001161011a578063ad13419d116100ad578063e83157421161007c578063e8315742146105aa578063e8cdedfc146105c8578063e985e9c5146105e6578063f2fde38b14610616578063f487c60214610632576101fb565b8063ad13419d14610526578063b88d4fde14610542578063c87b56dd1461055e578063d5739b481461058e576101fb565b80638da5cb5b116100e95780638da5cb5b146104b257806395d89b41146104d0578063a0712d68146104ee578063a22cb4651461050a576101fb565b8063438b6300146104065780636352211e1461043657806369f7d2f21461046657806370a0823114610482576101fb565b806325313eda1161019257806336b818501161016157806336b81850146103945780633829aea3146103b05780633a3473b6146103ce57806342842e0e146103ea576101fb565b806325313eda1461030c5780632f745c591461032a57806330176e131461035a57806335ccaedf14610376576101fb565b8063095ea7b3116101ce578063095ea7b31461029a57806318160ddd146102b65780631e65210b146102d457806323b872dd146102f0576101fb565b806301ffc9a71461020057806302ffaed11461023057806306fdde031461024c578063081812fc1461026a575b600080fd5b61021a60048036038101906102159190612c4b565b61064e565b60405161022791906132bb565b60405180910390f35b61024a60048036038101906102459190612ca5565b6106b0565b005b610254610791565b60405161026191906132f1565b60405180910390f35b610284600480360381019061027f9190612cf2565b61081f565b60405161029191906131fb565b60405180910390f35b6102b460048036038101906102af9190612b5d565b610852565b005b6102be610a07565b6040516102cb9190613533565b60405180910390f35b6102ee60048036038101906102e991906128cc565b610a0d565b005b61030a60048036038101906103059190612a47565b610ae1565b005b610314610b3a565b60405161032191906131fb565b60405180910390f35b610344600480360381019061033f9190612b5d565b610b60565b6040516103519190613533565b60405180910390f35b610374600480360381019061036f9190612ca5565b610b92565b005b61037e610c73565b60405161038b91906132bb565b60405180910390f35b6103ae60048036038101906103a991906128cc565b610c86565b005b6103b8610d5a565b6040516103c591906132d6565b60405180910390f35b6103e860048036038101906103e391906129a8565b610d80565b005b61040460048036038101906103ff9190612a47565b610dcc565b005b610420600480360381019061041b91906128cc565b610dec565b60405161042d9190613299565b60405180910390f35b610450600480360381019061044b9190612cf2565b610ff1565b60405161045d91906131fb565b60405180910390f35b610480600480360381019061047b9190612b9d565b611024565b005b61049c600480360381019061049791906128cc565b61116e565b6040516104a99190613533565b60405180910390f35b6104ba611186565b6040516104c791906131fb565b60405180910390f35b6104d86111ac565b6040516104e591906132f1565b60405180910390f35b61050860048036038101906105039190612cf2565b61123a565b005b610524600480360381019061051f9190612b1d565b61148e565b005b610540600480360381019061053b9190612c1e565b61149d565b005b61055c60048036038101906105579190612a9a565b61154a565b005b61057860048036038101906105739190612cf2565b6116c4565b60405161058591906132f1565b60405180910390f35b6105a860048036038101906105a39190612cf2565b61179e565b005b6105b2611838565b6040516105bf9190613533565b60405180910390f35b6105d061183e565b6040516105dd9190613533565b60405180910390f35b61060060048036038101906105fb91906128f9565b611844565b60405161060d91906132bb565b60405180910390f35b610630600480360381019061062b91906128cc565b611873565b005b61064c60048036038101906106479190612939565b611947565b005b60006380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106a95750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790613313565b60405180910390fd5b61078d82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611991565b5050565b6000805461079e90613897565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca90613897565b80156108175780601f106107ec57610100808354040283529160200191610817565b820191906000526020600020905b8154815290600101906020018083116107fa57829003601f168201915b505050505081565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f0906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109b95750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90613393565b60405180910390fd5b610a0283836119ab565b505050565b60045481565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9490613313565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610aeb3382611af6565b610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2190613413565b60405180910390fd5b610b35838383611d04565b505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610b6c84610dec565b9050808381518110610b8157610b80613a01565b5b602002602001015191505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1990613313565b60405180910390fd5b610c6f82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611fe4565b5050565b600d60149054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90613313565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005b8251811015610dc557610db28585858481518110610da457610da3613a01565b5b60200260200101518561154a565b8080610dbd906138fa565b915050610d83565b5050505050565b610de78383836040518060200160405280600081525061154a565b505050565b60606000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008167ffffffffffffffff811115610e4e57610e4d613a30565b5b604051908082528060200260200182016040528015610e7c5781602001602082028036833780820191505090505b509050600080600454905060005b81811015610fe457600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610f275750600084600187610f0c919061374d565b81518110610f1d57610f1c613a01565b5b6020026020010151145b15610f3b578180610f37906138fa565b9250505b8673ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610fd15780848481518110610fb657610fb5613a01565b5b6020026020010181815250508280610fcd906138fa565b9350505b8080610fdc906138fa565b915050610e8a565b5082945050505050919050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90613313565b60405180910390fd5b8181905084849050146110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f3906134b3565b60405180910390fd5b60005b84849050811015611167576111548585838181106111205761111f613a01565b5b905060200201602081019061113591906128cc565b84848481811061114857611147613a01565b5b90506020020135611ffe565b808061115f906138fa565b9150506110ff565b5050505050565b60066020528060005260406000206000915090505481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600180546111b990613897565b80601f01602080910402602001604051908101604052809291908181526020018280546111e590613897565b80156112325780601f1061120757610100808354040283529160200191611232565b820191906000526020600020905b81548152906001019060200180831161121557829003601f168201915b505050505081565b600d60149054906101000a900460ff161561128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128190613353565b60405180910390fd5b60148111156112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c5906134d3565b60405180910390fd5b600081600c546112de91906136f3565b905080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161133c91906131fb565b60206040518083038186803b15801561135457600080fd5b505afa158015611368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138c9190612d1f565b10156113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490613373565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161144e93929190613216565b600060405180830381600087803b15801561146857600080fd5b505af115801561147c573d6000803e3d6000fd5b5050505061148a3383611ffe565b5050565b6114993383836120b5565b5050565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490613313565b60405180910390fd5b80600d60146101000a81548160ff02191690831515021790555050565b611555848484610ae1565b60008373ffffffffffffffffffffffffffffffffffffffff163b146116be5760008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040516024016115a9949392919061324d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115f791906131b3565b600060405180830381855afa9150503d8060008114611632576040519150601f19603f3d011682016040523d82523d6000602084013e611637565b606091505b509150506000818060200190518101906116519190612c78565b905063150b7a0260e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b2906133f3565b60405180910390fd5b50505b50505050565b6060600073ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176090613513565b60405180910390fd5b600261177483612222565b6003604051602001611788939291906131ca565b6040516020818303038152906040529050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182590613313565b60405180910390fd5b80600c8190555050565b600b5481565b600c5481565b60086020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa90613313565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60005b815181101561198b57611978848484848151811061196b5761196a613a01565b5b6020026020010151610ae1565b8080611983906138fa565b91505061194a565b50505050565b80600390805190602001906119a792919061259b565b5050565b8173ffffffffffffffffffffffffffffffffffffffff166007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af257816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190613453565b60405180910390fd5b60006005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611c6a57506007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80611cfb5750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b91505092915050565b6005600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9c906133d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0c90613333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8857611e876000826119ab565b5b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611f2a9061386d565b9190505550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611f7f906138fa565b9190505550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b8060029080519060200190611ffa92919061259b565b5050565b8060045461200c919061366c565b600b541015612050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204790613473565b60405180910390fd5b60006001600454612061919061366c565b905060005b828110156120965761208384828461207e919061366c565b612382565b808061208e906138fa565b915050612066565b5081600460008282546120a9919061366c565b92505081905550505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b906134f3565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161221591906132bb565b60405180910390a3505050565b6060600082141561226a576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061237d565b600082905060005b6000821461229c578080612285906138fa565b915050600a8261229591906136c2565b9150612272565b60008167ffffffffffffffff8111156122b8576122b7613a30565b5b6040519080825280601f01601f1916602001820160405280156122ea5781602001600182028036833780820191505090505b5090505b600085146123765781806123019061386d565b925050600a856123119190613943565b603061231d919061366c565b60f81b81838151811061233357612332613a01565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561236f91906136c2565b94506122ee565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e990613433565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248b90613493565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906124e4906138fa565b9190505550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b8280546125a790613897565b90600052602060002090601f0160209004810192826125c95760008555612610565b82601f106125e257805160ff1916838001178555612610565b82800160010185558215612610579182015b8281111561260f5782518255916020019190600101906125f4565b5b50905061261d9190612621565b5090565b5b8082111561263a576000816000905550600101612622565b5090565b600061265161264c84613573565b61354e565b9050808382526020820190508285602086028201111561267457612673613a69565b5b60005b858110156126a4578161268a88826128a2565b845260208401935060208301925050600181019050612677565b5050509392505050565b60006126c16126bc8461359f565b61354e565b9050828152602081018484840111156126dd576126dc613a6e565b5b6126e884828561382b565b509392505050565b6000813590506126ff81613ee9565b92915050565b60008083601f84011261271b5761271a613a64565b5b8235905067ffffffffffffffff81111561273857612737613a5f565b5b60208301915083602082028301111561275457612753613a69565b5b9250929050565b60008083601f84011261277157612770613a64565b5b8235905067ffffffffffffffff81111561278e5761278d613a5f565b5b6020830191508360208202830111156127aa576127a9613a69565b5b9250929050565b600082601f8301126127c6576127c5613a64565b5b81356127d684826020860161263e565b91505092915050565b6000813590506127ee81613f00565b92915050565b60008135905061280381613f17565b92915050565b60008151905061281881613f17565b92915050565b600082601f83011261283357612832613a64565b5b81356128438482602086016126ae565b91505092915050565b60008083601f84011261286257612861613a64565b5b8235905067ffffffffffffffff81111561287f5761287e613a5f565b5b60208301915083600182028301111561289b5761289a613a69565b5b9250929050565b6000813590506128b181613f2e565b92915050565b6000815190506128c681613f2e565b92915050565b6000602082840312156128e2576128e1613a78565b5b60006128f0848285016126f0565b91505092915050565b600080604083850312156129105761290f613a78565b5b600061291e858286016126f0565b925050602061292f858286016126f0565b9150509250929050565b60008060006060848603121561295257612951613a78565b5b6000612960868287016126f0565b9350506020612971868287016126f0565b925050604084013567ffffffffffffffff81111561299257612991613a73565b5b61299e868287016127b1565b9150509250925092565b600080600080608085870312156129c2576129c1613a78565b5b60006129d0878288016126f0565b94505060206129e1878288016126f0565b935050604085013567ffffffffffffffff811115612a0257612a01613a73565b5b612a0e878288016127b1565b925050606085013567ffffffffffffffff811115612a2f57612a2e613a73565b5b612a3b8782880161281e565b91505092959194509250565b600080600060608486031215612a6057612a5f613a78565b5b6000612a6e868287016126f0565b9350506020612a7f868287016126f0565b9250506040612a90868287016128a2565b9150509250925092565b60008060008060808587031215612ab457612ab3613a78565b5b6000612ac2878288016126f0565b9450506020612ad3878288016126f0565b9350506040612ae4878288016128a2565b925050606085013567ffffffffffffffff811115612b0557612b04613a73565b5b612b118782880161281e565b91505092959194509250565b60008060408385031215612b3457612b33613a78565b5b6000612b42858286016126f0565b9250506020612b53858286016127df565b9150509250929050565b60008060408385031215612b7457612b73613a78565b5b6000612b82858286016126f0565b9250506020612b93858286016128a2565b9150509250929050565b60008060008060408587031215612bb757612bb6613a78565b5b600085013567ffffffffffffffff811115612bd557612bd4613a73565b5b612be187828801612705565b9450945050602085013567ffffffffffffffff811115612c0457612c03613a73565b5b612c108782880161275b565b925092505092959194509250565b600060208284031215612c3457612c33613a78565b5b6000612c42848285016127df565b91505092915050565b600060208284031215612c6157612c60613a78565b5b6000612c6f848285016127f4565b91505092915050565b600060208284031215612c8e57612c8d613a78565b5b6000612c9c84828501612809565b91505092915050565b60008060208385031215612cbc57612cbb613a78565b5b600083013567ffffffffffffffff811115612cda57612cd9613a73565b5b612ce68582860161284c565b92509250509250929050565b600060208284031215612d0857612d07613a78565b5b6000612d16848285016128a2565b91505092915050565b600060208284031215612d3557612d34613a78565b5b6000612d43848285016128b7565b91505092915050565b6000612d588383613195565b60208301905092915050565b612d6d81613781565b82525050565b6000612d7e826135f5565b612d888185613623565b9350612d93836135d0565b8060005b83811015612dc4578151612dab8882612d4c565b9750612db683613616565b925050600181019050612d97565b5085935050505092915050565b612dda81613793565b82525050565b6000612deb82613600565b612df58185613634565b9350612e0581856020860161383a565b612e0e81613a7d565b840191505092915050565b6000612e2482613600565b612e2e8185613645565b9350612e3e81856020860161383a565b80840191505092915050565b612e53816137f5565b82525050565b6000612e648261360b565b612e6e8185613650565b9350612e7e81856020860161383a565b612e8781613a7d565b840191505092915050565b6000612e9d8261360b565b612ea78185613661565b9350612eb781856020860161383a565b80840191505092915050565b60008154612ed081613897565b612eda8186613661565b94506001821660008114612ef55760018114612f0657612f39565b60ff19831686528186019350612f39565b612f0f856135e0565b60005b83811015612f3157815481890152600182019150602081019050612f12565b838801955050505b50505092915050565b6000612f4f600a83613650565b9150612f5a82613a8e565b602082019050919050565b6000612f72602e83613650565b9150612f7d82613ab7565b604082019050919050565b6000612f95601583613650565b9150612fa082613b06565b602082019050919050565b6000612fb8601c83613650565b9150612fc382613b2f565b602082019050919050565b6000612fdb602683613650565b9150612fe682613b58565b604082019050919050565b6000612ffe602b83613650565b915061300982613ba7565b604082019050919050565b6000613021603183613650565b915061302c82613bf6565b604082019050919050565b6000613044603583613650565b915061304f82613c45565b604082019050919050565b6000613067603383613650565b915061307282613c94565b604082019050919050565b600061308a602583613650565b915061309582613ce3565b604082019050919050565b60006130ad603483613650565b91506130b882613d32565b604082019050919050565b60006130d0601c83613650565b91506130db82613d81565b602082019050919050565b60006130f3602e83613650565b91506130fe82613daa565b604082019050919050565b6000613116601683613650565b915061312182613df9565b602082019050919050565b6000613139601c83613650565b915061314482613e22565b602082019050919050565b600061315c603d83613650565b915061316782613e4b565b604082019050919050565b600061317f602983613650565b915061318a82613e9a565b604082019050919050565b61319e816137eb565b82525050565b6131ad816137eb565b82525050565b60006131bf8284612e19565b915081905092915050565b60006131d68286612ec3565b91506131e28285612e92565b91506131ee8284612ec3565b9150819050949350505050565b60006020820190506132106000830184612d64565b92915050565b600060608201905061322b6000830186612d64565b6132386020830185612d64565b61324560408301846131a4565b949350505050565b60006080820190506132626000830187612d64565b61326f6020830186612d64565b61327c60408301856131a4565b818103606083015261328e8184612de0565b905095945050505050565b600060208201905081810360008301526132b38184612d73565b905092915050565b60006020820190506132d06000830184612dd1565b92915050565b60006020820190506132eb6000830184612e4a565b92915050565b6000602082019050818103600083015261330b8184612e59565b905092915050565b6000602082019050818103600083015261332c81612f42565b9050919050565b6000602082019050818103600083015261334c81612f65565b9050919050565b6000602082019050818103600083015261336c81612f88565b9050919050565b6000602082019050818103600083015261338c81612fab565b9050919050565b600060208201905081810360008301526133ac81612fce565b9050919050565b600060208201905081810360008301526133cc81612ff1565b9050919050565b600060208201905081810360008301526133ec81613014565b9050919050565b6000602082019050818103600083015261340c81613037565b9050919050565b6000602082019050818103600083015261342c8161305a565b9050919050565b6000602082019050818103600083015261344c8161307d565b9050919050565b6000602082019050818103600083015261346c816130a0565b9050919050565b6000602082019050818103600083015261348c816130c3565b9050919050565b600060208201905081810360008301526134ac816130e6565b9050919050565b600060208201905081810360008301526134cc81613109565b9050919050565b600060208201905081810360008301526134ec8161312c565b9050919050565b6000602082019050818103600083015261350c8161314f565b9050919050565b6000602082019050818103600083015261352c81613172565b9050919050565b600060208201905061354860008301846131a4565b92915050565b6000613558613569565b905061356482826138c9565b919050565b6000604051905090565b600067ffffffffffffffff82111561358e5761358d613a30565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156135ba576135b9613a30565b5b6135c382613a7d565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613677826137eb565b9150613682836137eb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136b7576136b6613974565b5b828201905092915050565b60006136cd826137eb565b91506136d8836137eb565b9250826136e8576136e76139a3565b5b828204905092915050565b60006136fe826137eb565b9150613709836137eb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561374257613741613974565b5b828202905092915050565b6000613758826137eb565b9150613763836137eb565b92508282101561377657613775613974565b5b828203905092915050565b600061378c826137cb565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061380082613807565b9050919050565b600061381282613819565b9050919050565b6000613824826137cb565b9050919050565b82818337600083830152505050565b60005b8381101561385857808201518184015260208101905061383d565b83811115613867576000848401525b50505050565b6000613878826137eb565b9150600082141561388c5761388b613974565b5b600182039050919050565b600060028204905060018216806138af57607f821691505b602082108114156138c3576138c26139d2565b5b50919050565b6138d282613a7d565b810181811067ffffffffffffffff821117156138f1576138f0613a30565b5b80604052505050565b6000613905826137eb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561393857613937613974565b5b600182019050919050565b600061394e826137eb565b9150613959836137eb565b925082613969576139686139a3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e6f74204f776e65722100000000000000000000000000000000000000000000600082015250565b7f455243373231493a205f7472616e736665722829205472616e7366657220746f60008201527f205a65726f204164647265737321000000000000000000000000000000000000602082015250565b7f5658204d696e74696e6720697320506175736564210000000000000000000000600082015250565b7f596f7520646f6e2774206861766520656e6f7567682024415552412100000000600082015250565b7f455243373231493a2043616c6c6572206e6f74206f776e6572206f722041707060008201527f726f766564210000000000000000000000000000000000000000000000000000602082015250565b7f455243373231493a20617070726f766528292043616e6e6f7420617070726f7660008201527f6520796f757273656c6621000000000000000000000000000000000000000000602082015250565b7f455243373231493a205f7472616e736665722829205472616e73666572204e6f60008201527f74204f776e6572206f6620546f6b656e21000000000000000000000000000000602082015250565b7f455243373231493a20736166655472616e7366657246726f6d282920746f5f2060008201527f6e6f742045524337323152656365697661626c65210000000000000000000000602082015250565b7f455243373231493a207472616e7366657246726f6d2829205f6973417070726f60008201527f7665644f724f776e6572203d2066616c73652100000000000000000000000000602082015250565b7f455243373231493a205f6d696e742829204d696e7420746f205a65726f20416460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231493a205f6973417070726f7665644f724f776e65722829204f7760008201527f6e6572206973205a65726f204164647265737321000000000000000000000000602082015250565b7f4e6f7420656e6f75676820737570706c792072656d61696e696e672100000000600082015250565b7f455243373231493a205f6d696e74282920546f6b656e20746f204d696e74204160008201527f6c72656164792045786973747321000000000000000000000000000000000000602082015250565b7f4172726179204c656e677468204d69736d617463682100000000000000000000600082015250565b7f596f752063616e206f6e6c79206d696e74203230207065722074782100000000600082015250565b7f455243373231493a205f736574417070726f76616c466f72416c6c2829204f7760008201527f6e6572206d757374206e6f7420626520746865204f70657261746f7221000000602082015250565b7f455243373231493a20746f6b656e555249282920546f6b656e20646f6573206e60008201527f6f74206578697374210000000000000000000000000000000000000000000000602082015250565b613ef281613781565b8114613efd57600080fd5b50565b613f0981613793565b8114613f1457600080fd5b50565b613f208161379f565b8114613f2b57600080fd5b50565b613f37816137eb565b8114613f4257600080fd5b5056fea2646970667358221220a0d931c6c794c45e16a6b02a233a562eb892a2c776c23fba1d6e542c6d7c402764736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063438b63001161011a578063ad13419d116100ad578063e83157421161007c578063e8315742146105aa578063e8cdedfc146105c8578063e985e9c5146105e6578063f2fde38b14610616578063f487c60214610632576101fb565b8063ad13419d14610526578063b88d4fde14610542578063c87b56dd1461055e578063d5739b481461058e576101fb565b80638da5cb5b116100e95780638da5cb5b146104b257806395d89b41146104d0578063a0712d68146104ee578063a22cb4651461050a576101fb565b8063438b6300146104065780636352211e1461043657806369f7d2f21461046657806370a0823114610482576101fb565b806325313eda1161019257806336b818501161016157806336b81850146103945780633829aea3146103b05780633a3473b6146103ce57806342842e0e146103ea576101fb565b806325313eda1461030c5780632f745c591461032a57806330176e131461035a57806335ccaedf14610376576101fb565b8063095ea7b3116101ce578063095ea7b31461029a57806318160ddd146102b65780631e65210b146102d457806323b872dd146102f0576101fb565b806301ffc9a71461020057806302ffaed11461023057806306fdde031461024c578063081812fc1461026a575b600080fd5b61021a60048036038101906102159190612c4b565b61064e565b60405161022791906132bb565b60405180910390f35b61024a60048036038101906102459190612ca5565b6106b0565b005b610254610791565b60405161026191906132f1565b60405180910390f35b610284600480360381019061027f9190612cf2565b61081f565b60405161029191906131fb565b60405180910390f35b6102b460048036038101906102af9190612b5d565b610852565b005b6102be610a07565b6040516102cb9190613533565b60405180910390f35b6102ee60048036038101906102e991906128cc565b610a0d565b005b61030a60048036038101906103059190612a47565b610ae1565b005b610314610b3a565b60405161032191906131fb565b60405180910390f35b610344600480360381019061033f9190612b5d565b610b60565b6040516103519190613533565b60405180910390f35b610374600480360381019061036f9190612ca5565b610b92565b005b61037e610c73565b60405161038b91906132bb565b60405180910390f35b6103ae60048036038101906103a991906128cc565b610c86565b005b6103b8610d5a565b6040516103c591906132d6565b60405180910390f35b6103e860048036038101906103e391906129a8565b610d80565b005b61040460048036038101906103ff9190612a47565b610dcc565b005b610420600480360381019061041b91906128cc565b610dec565b60405161042d9190613299565b60405180910390f35b610450600480360381019061044b9190612cf2565b610ff1565b60405161045d91906131fb565b60405180910390f35b610480600480360381019061047b9190612b9d565b611024565b005b61049c600480360381019061049791906128cc565b61116e565b6040516104a99190613533565b60405180910390f35b6104ba611186565b6040516104c791906131fb565b60405180910390f35b6104d86111ac565b6040516104e591906132f1565b60405180910390f35b61050860048036038101906105039190612cf2565b61123a565b005b610524600480360381019061051f9190612b1d565b61148e565b005b610540600480360381019061053b9190612c1e565b61149d565b005b61055c60048036038101906105579190612a9a565b61154a565b005b61057860048036038101906105739190612cf2565b6116c4565b60405161058591906132f1565b60405180910390f35b6105a860048036038101906105a39190612cf2565b61179e565b005b6105b2611838565b6040516105bf9190613533565b60405180910390f35b6105d061183e565b6040516105dd9190613533565b60405180910390f35b61060060048036038101906105fb91906128f9565b611844565b60405161060d91906132bb565b60405180910390f35b610630600480360381019061062b91906128cc565b611873565b005b61064c60048036038101906106479190612939565b611947565b005b60006380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106a95750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790613313565b60405180910390fd5b61078d82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611991565b5050565b6000805461079e90613897565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca90613897565b80156108175780601f106107ec57610100808354040283529160200191610817565b820191906000526020600020905b8154815290600101906020018083116107fa57829003601f168201915b505050505081565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f0906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109b95750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90613393565b60405180910390fd5b610a0283836119ab565b505050565b60045481565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9490613313565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610aeb3382611af6565b610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2190613413565b60405180910390fd5b610b35838383611d04565b505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610b6c84610dec565b9050808381518110610b8157610b80613a01565b5b602002602001015191505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1990613313565b60405180910390fd5b610c6f82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611fe4565b5050565b600d60149054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90613313565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005b8251811015610dc557610db28585858481518110610da457610da3613a01565b5b60200260200101518561154a565b8080610dbd906138fa565b915050610d83565b5050505050565b610de78383836040518060200160405280600081525061154a565b505050565b60606000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008167ffffffffffffffff811115610e4e57610e4d613a30565b5b604051908082528060200260200182016040528015610e7c5781602001602082028036833780820191505090505b509050600080600454905060005b81811015610fe457600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610f275750600084600187610f0c919061374d565b81518110610f1d57610f1c613a01565b5b6020026020010151145b15610f3b578180610f37906138fa565b9250505b8673ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610fd15780848481518110610fb657610fb5613a01565b5b6020026020010181815250508280610fcd906138fa565b9350505b8080610fdc906138fa565b915050610e8a565b5082945050505050919050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90613313565b60405180910390fd5b8181905084849050146110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f3906134b3565b60405180910390fd5b60005b84849050811015611167576111548585838181106111205761111f613a01565b5b905060200201602081019061113591906128cc565b84848481811061114857611147613a01565b5b90506020020135611ffe565b808061115f906138fa565b9150506110ff565b5050505050565b60066020528060005260406000206000915090505481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600180546111b990613897565b80601f01602080910402602001604051908101604052809291908181526020018280546111e590613897565b80156112325780601f1061120757610100808354040283529160200191611232565b820191906000526020600020905b81548152906001019060200180831161121557829003601f168201915b505050505081565b600d60149054906101000a900460ff161561128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128190613353565b60405180910390fd5b60148111156112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c5906134d3565b60405180910390fd5b600081600c546112de91906136f3565b905080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161133c91906131fb565b60206040518083038186803b15801561135457600080fd5b505afa158015611368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138c9190612d1f565b10156113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490613373565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161144e93929190613216565b600060405180830381600087803b15801561146857600080fd5b505af115801561147c573d6000803e3d6000fd5b5050505061148a3383611ffe565b5050565b6114993383836120b5565b5050565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490613313565b60405180910390fd5b80600d60146101000a81548160ff02191690831515021790555050565b611555848484610ae1565b60008373ffffffffffffffffffffffffffffffffffffffff163b146116be5760008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040516024016115a9949392919061324d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115f791906131b3565b600060405180830381855afa9150503d8060008114611632576040519150601f19603f3d011682016040523d82523d6000602084013e611637565b606091505b509150506000818060200190518101906116519190612c78565b905063150b7a0260e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b2906133f3565b60405180910390fd5b50505b50505050565b6060600073ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176090613513565b60405180910390fd5b600261177483612222565b6003604051602001611788939291906131ca565b6040516020818303038152906040529050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182590613313565b60405180910390fd5b80600c8190555050565b600b5481565b600c5481565b60086020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa90613313565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60005b815181101561198b57611978848484848151811061196b5761196a613a01565b5b6020026020010151610ae1565b8080611983906138fa565b91505061194a565b50505050565b80600390805190602001906119a792919061259b565b5050565b8173ffffffffffffffffffffffffffffffffffffffff166007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af257816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190613453565b60405180910390fd5b60006005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611c6a57506007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80611cfb5750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b91505092915050565b6005600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9c906133d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0c90613333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8857611e876000826119ab565b5b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611f2a9061386d565b9190505550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611f7f906138fa565b9190505550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b8060029080519060200190611ffa92919061259b565b5050565b8060045461200c919061366c565b600b541015612050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204790613473565b60405180910390fd5b60006001600454612061919061366c565b905060005b828110156120965761208384828461207e919061366c565b612382565b808061208e906138fa565b915050612066565b5081600460008282546120a9919061366c565b92505081905550505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b906134f3565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161221591906132bb565b60405180910390a3505050565b6060600082141561226a576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061237d565b600082905060005b6000821461229c578080612285906138fa565b915050600a8261229591906136c2565b9150612272565b60008167ffffffffffffffff8111156122b8576122b7613a30565b5b6040519080825280601f01601f1916602001820160405280156122ea5781602001600182028036833780820191505090505b5090505b600085146123765781806123019061386d565b925050600a856123119190613943565b603061231d919061366c565b60f81b81838151811061233357612332613a01565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561236f91906136c2565b94506122ee565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e990613433565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248b90613493565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906124e4906138fa565b9190505550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b8280546125a790613897565b90600052602060002090601f0160209004810192826125c95760008555612610565b82601f106125e257805160ff1916838001178555612610565b82800160010185558215612610579182015b8281111561260f5782518255916020019190600101906125f4565b5b50905061261d9190612621565b5090565b5b8082111561263a576000816000905550600101612622565b5090565b600061265161264c84613573565b61354e565b9050808382526020820190508285602086028201111561267457612673613a69565b5b60005b858110156126a4578161268a88826128a2565b845260208401935060208301925050600181019050612677565b5050509392505050565b60006126c16126bc8461359f565b61354e565b9050828152602081018484840111156126dd576126dc613a6e565b5b6126e884828561382b565b509392505050565b6000813590506126ff81613ee9565b92915050565b60008083601f84011261271b5761271a613a64565b5b8235905067ffffffffffffffff81111561273857612737613a5f565b5b60208301915083602082028301111561275457612753613a69565b5b9250929050565b60008083601f84011261277157612770613a64565b5b8235905067ffffffffffffffff81111561278e5761278d613a5f565b5b6020830191508360208202830111156127aa576127a9613a69565b5b9250929050565b600082601f8301126127c6576127c5613a64565b5b81356127d684826020860161263e565b91505092915050565b6000813590506127ee81613f00565b92915050565b60008135905061280381613f17565b92915050565b60008151905061281881613f17565b92915050565b600082601f83011261283357612832613a64565b5b81356128438482602086016126ae565b91505092915050565b60008083601f84011261286257612861613a64565b5b8235905067ffffffffffffffff81111561287f5761287e613a5f565b5b60208301915083600182028301111561289b5761289a613a69565b5b9250929050565b6000813590506128b181613f2e565b92915050565b6000815190506128c681613f2e565b92915050565b6000602082840312156128e2576128e1613a78565b5b60006128f0848285016126f0565b91505092915050565b600080604083850312156129105761290f613a78565b5b600061291e858286016126f0565b925050602061292f858286016126f0565b9150509250929050565b60008060006060848603121561295257612951613a78565b5b6000612960868287016126f0565b9350506020612971868287016126f0565b925050604084013567ffffffffffffffff81111561299257612991613a73565b5b61299e868287016127b1565b9150509250925092565b600080600080608085870312156129c2576129c1613a78565b5b60006129d0878288016126f0565b94505060206129e1878288016126f0565b935050604085013567ffffffffffffffff811115612a0257612a01613a73565b5b612a0e878288016127b1565b925050606085013567ffffffffffffffff811115612a2f57612a2e613a73565b5b612a3b8782880161281e565b91505092959194509250565b600080600060608486031215612a6057612a5f613a78565b5b6000612a6e868287016126f0565b9350506020612a7f868287016126f0565b9250506040612a90868287016128a2565b9150509250925092565b60008060008060808587031215612ab457612ab3613a78565b5b6000612ac2878288016126f0565b9450506020612ad3878288016126f0565b9350506040612ae4878288016128a2565b925050606085013567ffffffffffffffff811115612b0557612b04613a73565b5b612b118782880161281e565b91505092959194509250565b60008060408385031215612b3457612b33613a78565b5b6000612b42858286016126f0565b9250506020612b53858286016127df565b9150509250929050565b60008060408385031215612b7457612b73613a78565b5b6000612b82858286016126f0565b9250506020612b93858286016128a2565b9150509250929050565b60008060008060408587031215612bb757612bb6613a78565b5b600085013567ffffffffffffffff811115612bd557612bd4613a73565b5b612be187828801612705565b9450945050602085013567ffffffffffffffff811115612c0457612c03613a73565b5b612c108782880161275b565b925092505092959194509250565b600060208284031215612c3457612c33613a78565b5b6000612c42848285016127df565b91505092915050565b600060208284031215612c6157612c60613a78565b5b6000612c6f848285016127f4565b91505092915050565b600060208284031215612c8e57612c8d613a78565b5b6000612c9c84828501612809565b91505092915050565b60008060208385031215612cbc57612cbb613a78565b5b600083013567ffffffffffffffff811115612cda57612cd9613a73565b5b612ce68582860161284c565b92509250509250929050565b600060208284031215612d0857612d07613a78565b5b6000612d16848285016128a2565b91505092915050565b600060208284031215612d3557612d34613a78565b5b6000612d43848285016128b7565b91505092915050565b6000612d588383613195565b60208301905092915050565b612d6d81613781565b82525050565b6000612d7e826135f5565b612d888185613623565b9350612d93836135d0565b8060005b83811015612dc4578151612dab8882612d4c565b9750612db683613616565b925050600181019050612d97565b5085935050505092915050565b612dda81613793565b82525050565b6000612deb82613600565b612df58185613634565b9350612e0581856020860161383a565b612e0e81613a7d565b840191505092915050565b6000612e2482613600565b612e2e8185613645565b9350612e3e81856020860161383a565b80840191505092915050565b612e53816137f5565b82525050565b6000612e648261360b565b612e6e8185613650565b9350612e7e81856020860161383a565b612e8781613a7d565b840191505092915050565b6000612e9d8261360b565b612ea78185613661565b9350612eb781856020860161383a565b80840191505092915050565b60008154612ed081613897565b612eda8186613661565b94506001821660008114612ef55760018114612f0657612f39565b60ff19831686528186019350612f39565b612f0f856135e0565b60005b83811015612f3157815481890152600182019150602081019050612f12565b838801955050505b50505092915050565b6000612f4f600a83613650565b9150612f5a82613a8e565b602082019050919050565b6000612f72602e83613650565b9150612f7d82613ab7565b604082019050919050565b6000612f95601583613650565b9150612fa082613b06565b602082019050919050565b6000612fb8601c83613650565b9150612fc382613b2f565b602082019050919050565b6000612fdb602683613650565b9150612fe682613b58565b604082019050919050565b6000612ffe602b83613650565b915061300982613ba7565b604082019050919050565b6000613021603183613650565b915061302c82613bf6565b604082019050919050565b6000613044603583613650565b915061304f82613c45565b604082019050919050565b6000613067603383613650565b915061307282613c94565b604082019050919050565b600061308a602583613650565b915061309582613ce3565b604082019050919050565b60006130ad603483613650565b91506130b882613d32565b604082019050919050565b60006130d0601c83613650565b91506130db82613d81565b602082019050919050565b60006130f3602e83613650565b91506130fe82613daa565b604082019050919050565b6000613116601683613650565b915061312182613df9565b602082019050919050565b6000613139601c83613650565b915061314482613e22565b602082019050919050565b600061315c603d83613650565b915061316782613e4b565b604082019050919050565b600061317f602983613650565b915061318a82613e9a565b604082019050919050565b61319e816137eb565b82525050565b6131ad816137eb565b82525050565b60006131bf8284612e19565b915081905092915050565b60006131d68286612ec3565b91506131e28285612e92565b91506131ee8284612ec3565b9150819050949350505050565b60006020820190506132106000830184612d64565b92915050565b600060608201905061322b6000830186612d64565b6132386020830185612d64565b61324560408301846131a4565b949350505050565b60006080820190506132626000830187612d64565b61326f6020830186612d64565b61327c60408301856131a4565b818103606083015261328e8184612de0565b905095945050505050565b600060208201905081810360008301526132b38184612d73565b905092915050565b60006020820190506132d06000830184612dd1565b92915050565b60006020820190506132eb6000830184612e4a565b92915050565b6000602082019050818103600083015261330b8184612e59565b905092915050565b6000602082019050818103600083015261332c81612f42565b9050919050565b6000602082019050818103600083015261334c81612f65565b9050919050565b6000602082019050818103600083015261336c81612f88565b9050919050565b6000602082019050818103600083015261338c81612fab565b9050919050565b600060208201905081810360008301526133ac81612fce565b9050919050565b600060208201905081810360008301526133cc81612ff1565b9050919050565b600060208201905081810360008301526133ec81613014565b9050919050565b6000602082019050818103600083015261340c81613037565b9050919050565b6000602082019050818103600083015261342c8161305a565b9050919050565b6000602082019050818103600083015261344c8161307d565b9050919050565b6000602082019050818103600083015261346c816130a0565b9050919050565b6000602082019050818103600083015261348c816130c3565b9050919050565b600060208201905081810360008301526134ac816130e6565b9050919050565b600060208201905081810360008301526134cc81613109565b9050919050565b600060208201905081810360008301526134ec8161312c565b9050919050565b6000602082019050818103600083015261350c8161314f565b9050919050565b6000602082019050818103600083015261352c81613172565b9050919050565b600060208201905061354860008301846131a4565b92915050565b6000613558613569565b905061356482826138c9565b919050565b6000604051905090565b600067ffffffffffffffff82111561358e5761358d613a30565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156135ba576135b9613a30565b5b6135c382613a7d565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613677826137eb565b9150613682836137eb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136b7576136b6613974565b5b828201905092915050565b60006136cd826137eb565b91506136d8836137eb565b9250826136e8576136e76139a3565b5b828204905092915050565b60006136fe826137eb565b9150613709836137eb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561374257613741613974565b5b828202905092915050565b6000613758826137eb565b9150613763836137eb565b92508282101561377657613775613974565b5b828203905092915050565b600061378c826137cb565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061380082613807565b9050919050565b600061381282613819565b9050919050565b6000613824826137cb565b9050919050565b82818337600083830152505050565b60005b8381101561385857808201518184015260208101905061383d565b83811115613867576000848401525b50505050565b6000613878826137eb565b9150600082141561388c5761388b613974565b5b600182039050919050565b600060028204905060018216806138af57607f821691505b602082108114156138c3576138c26139d2565b5b50919050565b6138d282613a7d565b810181811067ffffffffffffffff821117156138f1576138f0613a30565b5b80604052505050565b6000613905826137eb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561393857613937613974565b5b600182019050919050565b600061394e826137eb565b9150613959836137eb565b925082613969576139686139a3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e6f74204f776e65722100000000000000000000000000000000000000000000600082015250565b7f455243373231493a205f7472616e736665722829205472616e7366657220746f60008201527f205a65726f204164647265737321000000000000000000000000000000000000602082015250565b7f5658204d696e74696e6720697320506175736564210000000000000000000000600082015250565b7f596f7520646f6e2774206861766520656e6f7567682024415552412100000000600082015250565b7f455243373231493a2043616c6c6572206e6f74206f776e6572206f722041707060008201527f726f766564210000000000000000000000000000000000000000000000000000602082015250565b7f455243373231493a20617070726f766528292043616e6e6f7420617070726f7660008201527f6520796f757273656c6621000000000000000000000000000000000000000000602082015250565b7f455243373231493a205f7472616e736665722829205472616e73666572204e6f60008201527f74204f776e6572206f6620546f6b656e21000000000000000000000000000000602082015250565b7f455243373231493a20736166655472616e7366657246726f6d282920746f5f2060008201527f6e6f742045524337323152656365697661626c65210000000000000000000000602082015250565b7f455243373231493a207472616e7366657246726f6d2829205f6973417070726f60008201527f7665644f724f776e6572203d2066616c73652100000000000000000000000000602082015250565b7f455243373231493a205f6d696e742829204d696e7420746f205a65726f20416460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231493a205f6973417070726f7665644f724f776e65722829204f7760008201527f6e6572206973205a65726f204164647265737321000000000000000000000000602082015250565b7f4e6f7420656e6f75676820737570706c792072656d61696e696e672100000000600082015250565b7f455243373231493a205f6d696e74282920546f6b656e20746f204d696e74204160008201527f6c72656164792045786973747321000000000000000000000000000000000000602082015250565b7f4172726179204c656e677468204d69736d617463682100000000000000000000600082015250565b7f596f752063616e206f6e6c79206d696e74203230207065722074782100000000600082015250565b7f455243373231493a205f736574417070726f76616c466f72416c6c2829204f7760008201527f6e6572206d757374206e6f7420626520746865204f70657261746f7221000000602082015250565b7f455243373231493a20746f6b656e555249282920546f6b656e20646f6573206e60008201527f6f74206578697374210000000000000000000000000000000000000000000000602082015250565b613ef281613781565b8114613efd57600080fd5b50565b613f0981613793565b8114613f1457600080fd5b50565b613f208161379f565b8114613f2b57600080fd5b50565b613f37816137eb565b8114613f4257600080fd5b5056fea2646970667358221220a0d931c6c794c45e16a6b02a233a562eb892a2c776c23fba1d6e542c6d7c402764736f6c63430008070033

Deployed Bytecode Sourcemap

8424:2796:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6465:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9295:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;326:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;694:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4353:379;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;556:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8637:76;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4894:268;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8951:72;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7764:209;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9181:108;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9469:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9030:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8559:71;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6162:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5723:154;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7065:607;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;590:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10157:315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;640:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8013:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;346;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10517:700;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4738:148;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9589:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5168:549;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6632:309;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8865:80;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8758:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8822:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;748:68;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8159:77;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5922:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6465:159;6534:4;6575:10;6559:26;;:12;:26;;;;:56;;;;6605:10;6589:26;;:12;:26;;;;6559:56;6551:65;;6465:159;;;:::o;9295:115::-;8122:10;8113:19;;:5;;;;;;;;;;;:19;;;8105:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;9376:26:::1;9397:4;;9376:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;:26::i;:::-;9295:115:::0;;:::o;326:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;694:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;4353:379::-;4427:14;4444:7;:17;4452:8;4444:17;;;;;;;;;;;;;;;;;;;;;4427:34;;4487:6;4480:13;;:3;:13;;;;4472:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;4588:6;4574:20;;:10;:20;;;:60;;;;4598:16;:24;4615:6;4598:24;;;;;;;;;;;;;;;:36;4623:10;4598:36;;;;;;;;;;;;;;;;;;;;;;;;;4574:60;4566:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;4701:23;4710:3;4715:8;4701;:23::i;:::-;4416:316;4353:379;;:::o;556:26::-;;;;:::o;8637:76::-;8122:10;8113:19;;:5;;;;;;;;;;;:19;;;8105:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8704:5:::1;8690:4;;:20;;;;;;;;;;;;;;;;;;8637:76:::0;:::o;4894:268::-;5002:40;5021:10;5033:8;5002:18;:40::i;:::-;4994:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;5123:31;5133:5;5140:3;5145:8;5123:9;:31::i;:::-;4894:268;;;:::o;8951:72::-;;;;;;;;;;;;;:::o;7764:209::-;7862:7;7882:24;7909:23;7923:8;7909:13;:23::i;:::-;7882:50;;7950:7;7958:6;7950:15;;;;;;;;:::i;:::-;;;;;;;;7943:22;;;7764:209;;;;:::o;9181:108::-;8122:10;8113:19;;:5;;;;;;;;;;;:19;;;8105:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;9259:22:::1;9276:4;;9259:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:16;:22::i;:::-;9181:108:::0;;:::o;9469:27::-;;;;;;;;;;;;;:::o;9030:102::-;8122:10;8113:19;;:5;;;;;;;;;;;:19;;;8105:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;9120:9:::1;9105:12;;:24;;;;;;;;;;;;;;;;;;9030:102:::0;:::o;8559:71::-;;;;;;;;;;;;;:::o;6162:269::-;6306:9;6301:123;6325:9;:16;6321:1;:20;6301:123;;;6363:49;6380:5;6387:3;6392:9;6402:1;6392:12;;;;;;;;:::i;:::-;;;;;;;;6406:5;6363:16;:49::i;:::-;6343:3;;;;;:::i;:::-;;;;6301:123;;;;6162:269;;;;:::o;5723:154::-;5827:42;5844:5;5851:3;5856:8;5827:42;;;;;;;;;;;;:16;:42::i;:::-;5723:154;;;:::o;7065:607::-;7141:16;7170;7189:9;:19;7199:8;7189:19;;;;;;;;;;;;;;;;7170:38;;7219:24;7261:8;7246:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7219:51;;7281:14;7306:20;7329:11;;7306:34;;7356:9;7351:289;7375:12;7371:1;:16;7351:289;;;7435:3;7413:26;;:7;:10;7421:1;7413:10;;;;;;;;;;;;;;;;;;;;;:26;;;:56;;;;;7468:1;7443:7;7462:1;7451:8;:12;;;;:::i;:::-;7443:21;;;;;;;;:::i;:::-;;;;;;;;:26;7413:56;7409:112;;;7490:14;;;;;:::i;:::-;;;;7409:112;7553:8;7539:22;;:7;:10;7547:1;7539:10;;;;;;;;;;;;;;;;;;;;;:22;;;7535:94;;;7601:1;7583:7;7591:6;7583:15;;;;;;;;:::i;:::-;;;;;;;:19;;;;;7604:8;;;;;:::i;:::-;;;;7535:94;7389:3;;;;;:::i;:::-;;;;7351:289;;;;7657:7;7650:14;;;;;;7065:607;;;:::o;590:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10157:315::-;8122:10;8113:19;;:5;;;;;;;;;;;:19;;;8105:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;10289:8:::1;;:15;;10274:4;;:11;;:30;10266:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10370:9;10365:100;10389:4;;:11;;10385:1;:15;10365:100;;;10422:31;10432:4;;10437:1;10432:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10441:8;;10450:1;10441:11;;;;;;;:::i;:::-;;;;;;;;10422:9;:31::i;:::-;10402:3;;;;;:::i;:::-;;;;10365:100;;;;10157:315:::0;;;;:::o;640:44::-;;;;;;;;;;;;;;;;;:::o;8013:20::-;;;;;;;;;;;;;:::o;346:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10517:700::-;9536:15;;;;;;;;;;;9535:16;9527:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;10675:2:::1;10664:7;:13;;10656:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10778:22;10816:7;10803:10;;:20;;;;:::i;:::-;10778:45;;10932:14;10902:4;;;;;;;;;;;:14;;;10917:10;10902:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;10894:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11049:4;;;;;;;;;;;:17;;;11067:10;11079:12;;;;;;;;;;;11093:14;11049:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11179:30;11189:10;11201:7;11179:9;:30::i;:::-;10569:648;10517:700:::0;:::o;4738:148::-;4826:52;4845:10;4857:9;4868;4826:18;:52::i;:::-;4738:148;;:::o;9589:100::-;8122:10;8113:19;;:5;;;;;;;;;;;:19;;;8105:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;9675:5:::1;9657:15;;:23;;;;;;;;;;;;;;;;;;9589:100:::0;:::o;5168:549::-;5292:34;5305:5;5312:3;5317:8;5292:12;:34::i;:::-;5360:1;5341:3;:15;;;:20;5337:373;;5381:22;5407:3;:14;;5463:10;5475;5487:5;5494:8;5504:5;5422:88;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5407:104;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5378:133;;;5526:16;5556:9;5545:31;;;;;;;;;;;;:::i;:::-;5526:50;;5612:10;5599:23;;:9;:23;;;;5591:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;5363:347;;5337:373;5168:549;;;;:::o;6632:309::-;6697:13;6760:3;6731:33;;:7;:17;6739:8;6731:17;;;;;;;;;;;;;;;;;;;;;:33;;;;6723:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;6880:12;6894:19;6904:8;6894:9;:19::i;:::-;6915:16;6849:83;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6835:98;;6632:309;;;:::o;8865:80::-;8122:10;8113:19;;:5;;;;;;;;;;;:19;;;8105:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8937:5:::1;8924:10;:18;;;;8865:80:::0;:::o;8758:31::-;;;;:::o;8822:36::-;;;;:::o;748:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8159:77::-;8122:10;8113:19;;:5;;;;;;;;;;;:19;;;8105:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8229:4:::1;8221:5;;:12;;;;;;;;;;;;;;;;;;8159:77:::0;:::o;5922:234::-;6042:9;6037:112;6061:9;:16;6057:1;:20;6037:112;;;6099:38;6112:5;6119:3;6124:9;6134:1;6124:12;;;;;;;;:::i;:::-;;;;;;;;6099;:38::i;:::-;6079:3;;;;;:::i;:::-;;;;6037:112;;;;5922:234;;;:::o;2988:109::-;3085:4;3066:16;:23;;;;;;;;;;;;:::i;:::-;;2988:109;:::o;2270:234::-;2376:3;2351:28;;:11;:21;2363:8;2351:21;;;;;;;;;;;;;;;;;;;;;:28;;;2347:150;;2420:3;2396:11;:21;2408:8;2396:21;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2476:8;2471:3;2443:42;;2452:7;:17;2460:8;2452:17;;;;;;;;;;;;;;;;;;;;;2443:42;;;;;;;;;;;;2347:150;2270:234;;:::o;3750:424::-;3851:4;3905:3;3876:33;;:7;:17;3884:8;3876:17;;;;;;;;;;;;;;;;;;;;;:33;;;;3868:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;3991:14;4008:7;:17;4016:8;4008:17;;;;;;;;;;;;;;;;;;;;;3991:34;;4056:6;4044:18;;:8;:18;;;:69;;;;4092:11;:21;4104:8;4092:21;;;;;;;;;;;;;;;;;;;;;4080:33;;:8;:33;;;4044:69;:121;;;;4131:16;:24;4148:6;4131:24;;;;;;;;;;;;;;;:34;4156:8;4131:34;;;;;;;;;;;;;;;;;;;;;;;;;4044:121;4036:130;;;3750:424;;;;:::o;1609:637::-;1719:7;:17;1727:8;1719:17;;;;;;;;;;;;;;;;;;;;;1710:26;;:5;:26;;;1702:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;1838:3;1823:19;;:3;:19;;;;1815:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;2030:3;1997:37;;:11;:21;2009:8;1997:21;;;;;;;;;;;;;;;;;;;;;:37;;;1993:104;;2052:32;2069:3;2075:8;2052;:32::i;:::-;1993:104;2130:3;2110:7;:17;2118:8;2110:17;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;2145:9;:16;2155:5;2145:16;;;;;;;;;;;;;;;;:18;;;;;;;;;:::i;:::-;;;;;;2174:9;:14;2184:3;2174:14;;;;;;;;;;;;;;;;:16;;;;;;;;;:::i;:::-;;;;;;2229:8;2224:3;2208:30;;2217:5;2208:30;;;;;;;;;;;;1609:637;;;:::o;2881:101::-;2970:4;2955:12;:19;;;;;;;;;;;;:::i;:::-;;2881:101;:::o;9733:378::-;9837:7;9823:11;;:21;;;;:::i;:::-;9810:9;;:34;;9802:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;9935:16;9968:1;9954:11;;:15;;;;:::i;:::-;9935:34;;9987:9;9982:89;10006:7;10002:1;:11;9982:89;;;10035:24;10041:3;10057:1;10046:8;:12;;;;:::i;:::-;10035:5;:24::i;:::-;10015:3;;;;;:::i;:::-;;;;9982:89;;;;10096:7;10081:11;;:22;;;;;;;:::i;:::-;;;;;;;;9791:320;9733:378;;:::o;2510:345::-;2640:9;2630:19;;:6;:19;;;;2622:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;2778:9;2740:16;:24;2757:6;2740:24;;;;;;;;;;;;;;;:35;2765:9;2740:35;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;2826:9;2803:44;;2818:6;2803:44;;;2837:9;2803:44;;;;;;:::i;:::-;;;;;;;;2510:345;;;:::o;3167:550::-;3225:13;3265:1;3255:6;:11;3251:32;;;3270:10;;;;;;;;;;;;;;;;;;;;;3251:32;3293:16;3312:6;3293:25;;3320:15;3346:52;3365:1;3353:8;:13;3346:52;;3370:9;;;;;:::i;:::-;;;;3393:2;3381:14;;;;;:::i;:::-;;;3346:52;;;3432:20;3465:7;3455:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3432:41;;3484:124;3501:1;3491:6;:11;3484:124;;3506:9;;;;;:::i;:::-;;;;3585:2;3576:6;:11;;;;:::i;:::-;3563:2;:26;;;;:::i;:::-;3536:55;;3517:7;3525;3517:16;;;;;;;;:::i;:::-;;;;;:74;;;;;;;;;;;3603:2;3593:12;;;;;:::i;:::-;;;3484:124;;;3658:7;3644:22;;;;;3167:550;;;;:::o;1184:400::-;1281:3;1266:19;;:3;:19;;;;1258:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;1389:3;1360:33;;:7;:17;1368:8;1360:17;;;;;;;;;;;;;;;;;;;;;:33;;;1352:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;1471:9;:14;1481:3;1471:14;;;;;;;;;;;;;;;;:16;;;;;;;;;:::i;:::-;;;;;;1518:3;1498:7;:17;1506:8;1498:17;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1567:8;1562:3;1539:37;;1556:3;1539:37;;;;;;;;;;;;1184:400;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:139::-;1214:5;1252:6;1239:20;1230:29;;1268:33;1295:5;1268:33;:::i;:::-;1168:139;;;;:::o;1330:568::-;1403:8;1413:6;1463:3;1456:4;1448:6;1444:17;1440:27;1430:122;;1471:79;;:::i;:::-;1430:122;1584:6;1571:20;1561:30;;1614:18;1606:6;1603:30;1600:117;;;1636:79;;:::i;:::-;1600:117;1750:4;1742:6;1738:17;1726:29;;1804:3;1796:4;1788:6;1784:17;1774:8;1770:32;1767:41;1764:128;;;1811:79;;:::i;:::-;1764:128;1330:568;;;;;:::o;1921:::-;1994:8;2004:6;2054:3;2047:4;2039:6;2035:17;2031:27;2021:122;;2062:79;;:::i;:::-;2021:122;2175:6;2162:20;2152:30;;2205:18;2197:6;2194:30;2191:117;;;2227:79;;:::i;:::-;2191:117;2341:4;2333:6;2329:17;2317:29;;2395:3;2387:4;2379:6;2375:17;2365:8;2361:32;2358:41;2355:128;;;2402:79;;:::i;:::-;2355:128;1921:568;;;;;:::o;2512:370::-;2583:5;2632:3;2625:4;2617:6;2613:17;2609:27;2599:122;;2640:79;;:::i;:::-;2599:122;2757:6;2744:20;2782:94;2872:3;2864:6;2857:4;2849:6;2845:17;2782:94;:::i;:::-;2773:103;;2589:293;2512:370;;;;:::o;2888:133::-;2931:5;2969:6;2956:20;2947:29;;2985:30;3009:5;2985:30;:::i;:::-;2888:133;;;;:::o;3027:137::-;3072:5;3110:6;3097:20;3088:29;;3126:32;3152:5;3126:32;:::i;:::-;3027:137;;;;:::o;3170:141::-;3226:5;3257:6;3251:13;3242:22;;3273:32;3299:5;3273:32;:::i;:::-;3170:141;;;;:::o;3330:338::-;3385:5;3434:3;3427:4;3419:6;3415:17;3411:27;3401:122;;3442:79;;:::i;:::-;3401:122;3559:6;3546:20;3584:78;3658:3;3650:6;3643:4;3635:6;3631:17;3584:78;:::i;:::-;3575:87;;3391:277;3330:338;;;;:::o;3688:553::-;3746:8;3756:6;3806:3;3799:4;3791:6;3787:17;3783:27;3773:122;;3814:79;;:::i;:::-;3773:122;3927:6;3914:20;3904:30;;3957:18;3949:6;3946:30;3943:117;;;3979:79;;:::i;:::-;3943:117;4093:4;4085:6;4081:17;4069:29;;4147:3;4139:4;4131:6;4127:17;4117:8;4113:32;4110:41;4107:128;;;4154:79;;:::i;:::-;4107:128;3688:553;;;;;:::o;4247:139::-;4293:5;4331:6;4318:20;4309:29;;4347:33;4374:5;4347:33;:::i;:::-;4247:139;;;;:::o;4392:143::-;4449:5;4480:6;4474:13;4465:22;;4496:33;4523:5;4496:33;:::i;:::-;4392:143;;;;:::o;4541:329::-;4600:6;4649:2;4637:9;4628:7;4624:23;4620:32;4617:119;;;4655:79;;:::i;:::-;4617:119;4775:1;4800:53;4845:7;4836:6;4825:9;4821:22;4800:53;:::i;:::-;4790:63;;4746:117;4541:329;;;;:::o;4876:474::-;4944:6;4952;5001:2;4989:9;4980:7;4976:23;4972:32;4969:119;;;5007:79;;:::i;:::-;4969:119;5127:1;5152:53;5197:7;5188:6;5177:9;5173:22;5152:53;:::i;:::-;5142:63;;5098:117;5254:2;5280:53;5325:7;5316:6;5305:9;5301:22;5280:53;:::i;:::-;5270:63;;5225:118;4876:474;;;;;:::o;5356:829::-;5458:6;5466;5474;5523:2;5511:9;5502:7;5498:23;5494:32;5491:119;;;5529:79;;:::i;:::-;5491:119;5649:1;5674:53;5719:7;5710:6;5699:9;5695:22;5674:53;:::i;:::-;5664:63;;5620:117;5776:2;5802:53;5847:7;5838:6;5827:9;5823:22;5802:53;:::i;:::-;5792:63;;5747:118;5932:2;5921:9;5917:18;5904:32;5963:18;5955:6;5952:30;5949:117;;;5985:79;;:::i;:::-;5949:117;6090:78;6160:7;6151:6;6140:9;6136:22;6090:78;:::i;:::-;6080:88;;5875:303;5356:829;;;;;:::o;6191:1153::-;6311:6;6319;6327;6335;6384:3;6372:9;6363:7;6359:23;6355:33;6352:120;;;6391:79;;:::i;:::-;6352:120;6511:1;6536:53;6581:7;6572:6;6561:9;6557:22;6536:53;:::i;:::-;6526:63;;6482:117;6638:2;6664:53;6709:7;6700:6;6689:9;6685:22;6664:53;:::i;:::-;6654:63;;6609:118;6794:2;6783:9;6779:18;6766:32;6825:18;6817:6;6814:30;6811:117;;;6847:79;;:::i;:::-;6811:117;6952:78;7022:7;7013:6;7002:9;6998:22;6952:78;:::i;:::-;6942:88;;6737:303;7107:2;7096:9;7092:18;7079:32;7138:18;7130:6;7127:30;7124:117;;;7160:79;;:::i;:::-;7124:117;7265:62;7319:7;7310:6;7299:9;7295:22;7265:62;:::i;:::-;7255:72;;7050:287;6191:1153;;;;;;;:::o;7350:619::-;7427:6;7435;7443;7492:2;7480:9;7471:7;7467:23;7463:32;7460:119;;;7498:79;;:::i;:::-;7460:119;7618:1;7643:53;7688:7;7679:6;7668:9;7664:22;7643:53;:::i;:::-;7633:63;;7589:117;7745:2;7771:53;7816:7;7807:6;7796:9;7792:22;7771:53;:::i;:::-;7761:63;;7716:118;7873:2;7899:53;7944:7;7935:6;7924:9;7920:22;7899:53;:::i;:::-;7889:63;;7844:118;7350:619;;;;;:::o;7975:943::-;8070:6;8078;8086;8094;8143:3;8131:9;8122:7;8118:23;8114:33;8111:120;;;8150:79;;:::i;:::-;8111:120;8270:1;8295:53;8340:7;8331:6;8320:9;8316:22;8295:53;:::i;:::-;8285:63;;8241:117;8397:2;8423:53;8468:7;8459:6;8448:9;8444:22;8423:53;:::i;:::-;8413:63;;8368:118;8525:2;8551:53;8596:7;8587:6;8576:9;8572:22;8551:53;:::i;:::-;8541:63;;8496:118;8681:2;8670:9;8666:18;8653:32;8712:18;8704:6;8701:30;8698:117;;;8734:79;;:::i;:::-;8698:117;8839:62;8893:7;8884:6;8873:9;8869:22;8839:62;:::i;:::-;8829:72;;8624:287;7975:943;;;;;;;:::o;8924:468::-;8989:6;8997;9046:2;9034:9;9025:7;9021:23;9017:32;9014:119;;;9052:79;;:::i;:::-;9014:119;9172:1;9197:53;9242:7;9233:6;9222:9;9218:22;9197:53;:::i;:::-;9187:63;;9143:117;9299:2;9325:50;9367:7;9358:6;9347:9;9343:22;9325:50;:::i;:::-;9315:60;;9270:115;8924:468;;;;;:::o;9398:474::-;9466:6;9474;9523:2;9511:9;9502:7;9498:23;9494:32;9491:119;;;9529:79;;:::i;:::-;9491:119;9649:1;9674:53;9719:7;9710:6;9699:9;9695:22;9674:53;:::i;:::-;9664:63;;9620:117;9776:2;9802:53;9847:7;9838:6;9827:9;9823:22;9802:53;:::i;:::-;9792:63;;9747:118;9398:474;;;;;:::o;9878:934::-;10000:6;10008;10016;10024;10073:2;10061:9;10052:7;10048:23;10044:32;10041:119;;;10079:79;;:::i;:::-;10041:119;10227:1;10216:9;10212:17;10199:31;10257:18;10249:6;10246:30;10243:117;;;10279:79;;:::i;:::-;10243:117;10392:80;10464:7;10455:6;10444:9;10440:22;10392:80;:::i;:::-;10374:98;;;;10170:312;10549:2;10538:9;10534:18;10521:32;10580:18;10572:6;10569:30;10566:117;;;10602:79;;:::i;:::-;10566:117;10715:80;10787:7;10778:6;10767:9;10763:22;10715:80;:::i;:::-;10697:98;;;;10492:313;9878:934;;;;;;;:::o;10818:323::-;10874:6;10923:2;10911:9;10902:7;10898:23;10894:32;10891:119;;;10929:79;;:::i;:::-;10891:119;11049:1;11074:50;11116:7;11107:6;11096:9;11092:22;11074:50;:::i;:::-;11064:60;;11020:114;10818:323;;;;:::o;11147:327::-;11205:6;11254:2;11242:9;11233:7;11229:23;11225:32;11222:119;;;11260:79;;:::i;:::-;11222:119;11380:1;11405:52;11449:7;11440:6;11429:9;11425:22;11405:52;:::i;:::-;11395:62;;11351:116;11147:327;;;;:::o;11480:349::-;11549:6;11598:2;11586:9;11577:7;11573:23;11569:32;11566:119;;;11604:79;;:::i;:::-;11566:119;11724:1;11749:63;11804:7;11795:6;11784:9;11780:22;11749:63;:::i;:::-;11739:73;;11695:127;11480:349;;;;:::o;11835:529::-;11906:6;11914;11963:2;11951:9;11942:7;11938:23;11934:32;11931:119;;;11969:79;;:::i;:::-;11931:119;12117:1;12106:9;12102:17;12089:31;12147:18;12139:6;12136:30;12133:117;;;12169:79;;:::i;:::-;12133:117;12282:65;12339:7;12330:6;12319:9;12315:22;12282:65;:::i;:::-;12264:83;;;;12060:297;11835:529;;;;;:::o;12370:329::-;12429:6;12478:2;12466:9;12457:7;12453:23;12449:32;12446:119;;;12484:79;;:::i;:::-;12446:119;12604:1;12629:53;12674:7;12665:6;12654:9;12650:22;12629:53;:::i;:::-;12619:63;;12575:117;12370:329;;;;:::o;12705:351::-;12775:6;12824:2;12812:9;12803:7;12799:23;12795:32;12792:119;;;12830:79;;:::i;:::-;12792:119;12950:1;12975:64;13031:7;13022:6;13011:9;13007:22;12975:64;:::i;:::-;12965:74;;12921:128;12705:351;;;;:::o;13062:179::-;13131:10;13152:46;13194:3;13186:6;13152:46;:::i;:::-;13230:4;13225:3;13221:14;13207:28;;13062:179;;;;:::o;13247:118::-;13334:24;13352:5;13334:24;:::i;:::-;13329:3;13322:37;13247:118;;:::o;13401:732::-;13520:3;13549:54;13597:5;13549:54;:::i;:::-;13619:86;13698:6;13693:3;13619:86;:::i;:::-;13612:93;;13729:56;13779:5;13729:56;:::i;:::-;13808:7;13839:1;13824:284;13849:6;13846:1;13843:13;13824:284;;;13925:6;13919:13;13952:63;14011:3;13996:13;13952:63;:::i;:::-;13945:70;;14038:60;14091:6;14038:60;:::i;:::-;14028:70;;13884:224;13871:1;13868;13864:9;13859:14;;13824:284;;;13828:14;14124:3;14117:10;;13525:608;;;13401:732;;;;:::o;14139:109::-;14220:21;14235:5;14220:21;:::i;:::-;14215:3;14208:34;14139:109;;:::o;14254:360::-;14340:3;14368:38;14400:5;14368:38;:::i;:::-;14422:70;14485:6;14480:3;14422:70;:::i;:::-;14415:77;;14501:52;14546:6;14541:3;14534:4;14527:5;14523:16;14501:52;:::i;:::-;14578:29;14600:6;14578:29;:::i;:::-;14573:3;14569:39;14562:46;;14344:270;14254:360;;;;:::o;14620:373::-;14724:3;14752:38;14784:5;14752:38;:::i;:::-;14806:88;14887:6;14882:3;14806:88;:::i;:::-;14799:95;;14903:52;14948:6;14943:3;14936:4;14929:5;14925:16;14903:52;:::i;:::-;14980:6;14975:3;14971:16;14964:23;;14728:265;14620:373;;;;:::o;14999:159::-;15100:51;15145:5;15100:51;:::i;:::-;15095:3;15088:64;14999:159;;:::o;15164:364::-;15252:3;15280:39;15313:5;15280:39;:::i;:::-;15335:71;15399:6;15394:3;15335:71;:::i;:::-;15328:78;;15415:52;15460:6;15455:3;15448:4;15441:5;15437:16;15415:52;:::i;:::-;15492:29;15514:6;15492:29;:::i;:::-;15487:3;15483:39;15476:46;;15256:272;15164:364;;;;:::o;15534:377::-;15640:3;15668:39;15701:5;15668:39;:::i;:::-;15723:89;15805:6;15800:3;15723:89;:::i;:::-;15716:96;;15821:52;15866:6;15861:3;15854:4;15847:5;15843:16;15821:52;:::i;:::-;15898:6;15893:3;15889:16;15882:23;;15644:267;15534:377;;;;:::o;15941:845::-;16044:3;16081:5;16075:12;16110:36;16136:9;16110:36;:::i;:::-;16162:89;16244:6;16239:3;16162:89;:::i;:::-;16155:96;;16282:1;16271:9;16267:17;16298:1;16293:137;;;;16444:1;16439:341;;;;16260:520;;16293:137;16377:4;16373:9;16362;16358:25;16353:3;16346:38;16413:6;16408:3;16404:16;16397:23;;16293:137;;16439:341;16506:38;16538:5;16506:38;:::i;:::-;16566:1;16580:154;16594:6;16591:1;16588:13;16580:154;;;16668:7;16662:14;16658:1;16653:3;16649:11;16642:35;16718:1;16709:7;16705:15;16694:26;;16616:4;16613:1;16609:12;16604:17;;16580:154;;;16763:6;16758:3;16754:16;16747:23;;16446:334;;16260:520;;16048:738;;15941:845;;;;:::o;16792:366::-;16934:3;16955:67;17019:2;17014:3;16955:67;:::i;:::-;16948:74;;17031:93;17120:3;17031:93;:::i;:::-;17149:2;17144:3;17140:12;17133:19;;16792:366;;;:::o;17164:::-;17306:3;17327:67;17391:2;17386:3;17327:67;:::i;:::-;17320:74;;17403:93;17492:3;17403:93;:::i;:::-;17521:2;17516:3;17512:12;17505:19;;17164:366;;;:::o;17536:::-;17678:3;17699:67;17763:2;17758:3;17699:67;:::i;:::-;17692:74;;17775:93;17864:3;17775:93;:::i;:::-;17893:2;17888:3;17884:12;17877:19;;17536:366;;;:::o;17908:::-;18050:3;18071:67;18135:2;18130:3;18071:67;:::i;:::-;18064:74;;18147:93;18236:3;18147:93;:::i;:::-;18265:2;18260:3;18256:12;18249:19;;17908:366;;;:::o;18280:::-;18422:3;18443:67;18507:2;18502:3;18443:67;:::i;:::-;18436:74;;18519:93;18608:3;18519:93;:::i;:::-;18637:2;18632:3;18628:12;18621:19;;18280:366;;;:::o;18652:::-;18794:3;18815:67;18879:2;18874:3;18815:67;:::i;:::-;18808:74;;18891:93;18980:3;18891:93;:::i;:::-;19009:2;19004:3;19000:12;18993:19;;18652:366;;;:::o;19024:::-;19166:3;19187:67;19251:2;19246:3;19187:67;:::i;:::-;19180:74;;19263:93;19352:3;19263:93;:::i;:::-;19381:2;19376:3;19372:12;19365:19;;19024:366;;;:::o;19396:::-;19538:3;19559:67;19623:2;19618:3;19559:67;:::i;:::-;19552:74;;19635:93;19724:3;19635:93;:::i;:::-;19753:2;19748:3;19744:12;19737:19;;19396:366;;;:::o;19768:::-;19910:3;19931:67;19995:2;19990:3;19931:67;:::i;:::-;19924:74;;20007:93;20096:3;20007:93;:::i;:::-;20125:2;20120:3;20116:12;20109:19;;19768:366;;;:::o;20140:::-;20282:3;20303:67;20367:2;20362:3;20303:67;:::i;:::-;20296:74;;20379:93;20468:3;20379:93;:::i;:::-;20497:2;20492:3;20488:12;20481:19;;20140:366;;;:::o;20512:::-;20654:3;20675:67;20739:2;20734:3;20675:67;:::i;:::-;20668:74;;20751:93;20840:3;20751:93;:::i;:::-;20869:2;20864:3;20860:12;20853:19;;20512:366;;;:::o;20884:::-;21026:3;21047:67;21111:2;21106:3;21047:67;:::i;:::-;21040:74;;21123:93;21212:3;21123:93;:::i;:::-;21241:2;21236:3;21232:12;21225:19;;20884:366;;;:::o;21256:::-;21398:3;21419:67;21483:2;21478:3;21419:67;:::i;:::-;21412:74;;21495:93;21584:3;21495:93;:::i;:::-;21613:2;21608:3;21604:12;21597:19;;21256:366;;;:::o;21628:::-;21770:3;21791:67;21855:2;21850:3;21791:67;:::i;:::-;21784:74;;21867:93;21956:3;21867:93;:::i;:::-;21985:2;21980:3;21976:12;21969:19;;21628:366;;;:::o;22000:::-;22142:3;22163:67;22227:2;22222:3;22163:67;:::i;:::-;22156:74;;22239:93;22328:3;22239:93;:::i;:::-;22357:2;22352:3;22348:12;22341:19;;22000:366;;;:::o;22372:::-;22514:3;22535:67;22599:2;22594:3;22535:67;:::i;:::-;22528:74;;22611:93;22700:3;22611:93;:::i;:::-;22729:2;22724:3;22720:12;22713:19;;22372:366;;;:::o;22744:::-;22886:3;22907:67;22971:2;22966:3;22907:67;:::i;:::-;22900:74;;22983:93;23072:3;22983:93;:::i;:::-;23101:2;23096:3;23092:12;23085:19;;22744:366;;;:::o;23116:108::-;23193:24;23211:5;23193:24;:::i;:::-;23188:3;23181:37;23116:108;;:::o;23230:118::-;23317:24;23335:5;23317:24;:::i;:::-;23312:3;23305:37;23230:118;;:::o;23354:271::-;23484:3;23506:93;23595:3;23586:6;23506:93;:::i;:::-;23499:100;;23616:3;23609:10;;23354:271;;;;:::o;23631:583::-;23853:3;23875:92;23963:3;23954:6;23875:92;:::i;:::-;23868:99;;23984:95;24075:3;24066:6;23984:95;:::i;:::-;23977:102;;24096:92;24184:3;24175:6;24096:92;:::i;:::-;24089:99;;24205:3;24198:10;;23631:583;;;;;;:::o;24220:222::-;24313:4;24351:2;24340:9;24336:18;24328:26;;24364:71;24432:1;24421:9;24417:17;24408:6;24364:71;:::i;:::-;24220:222;;;;:::o;24448:442::-;24597:4;24635:2;24624:9;24620:18;24612:26;;24648:71;24716:1;24705:9;24701:17;24692:6;24648:71;:::i;:::-;24729:72;24797:2;24786:9;24782:18;24773:6;24729:72;:::i;:::-;24811;24879:2;24868:9;24864:18;24855:6;24811:72;:::i;:::-;24448:442;;;;;;:::o;24896:640::-;25091:4;25129:3;25118:9;25114:19;25106:27;;25143:71;25211:1;25200:9;25196:17;25187:6;25143:71;:::i;:::-;25224:72;25292:2;25281:9;25277:18;25268:6;25224:72;:::i;:::-;25306;25374:2;25363:9;25359:18;25350:6;25306:72;:::i;:::-;25425:9;25419:4;25415:20;25410:2;25399:9;25395:18;25388:48;25453:76;25524:4;25515:6;25453:76;:::i;:::-;25445:84;;24896:640;;;;;;;:::o;25542:373::-;25685:4;25723:2;25712:9;25708:18;25700:26;;25772:9;25766:4;25762:20;25758:1;25747:9;25743:17;25736:47;25800:108;25903:4;25894:6;25800:108;:::i;:::-;25792:116;;25542:373;;;;:::o;25921:210::-;26008:4;26046:2;26035:9;26031:18;26023:26;;26059:65;26121:1;26110:9;26106:17;26097:6;26059:65;:::i;:::-;25921:210;;;;:::o;26137:250::-;26244:4;26282:2;26271:9;26267:18;26259:26;;26295:85;26377:1;26366:9;26362:17;26353:6;26295:85;:::i;:::-;26137:250;;;;:::o;26393:313::-;26506:4;26544:2;26533:9;26529:18;26521:26;;26593:9;26587:4;26583:20;26579:1;26568:9;26564:17;26557:47;26621:78;26694:4;26685:6;26621:78;:::i;:::-;26613:86;;26393:313;;;;:::o;26712:419::-;26878:4;26916:2;26905:9;26901:18;26893:26;;26965:9;26959:4;26955:20;26951:1;26940:9;26936:17;26929:47;26993:131;27119:4;26993:131;:::i;:::-;26985:139;;26712:419;;;:::o;27137:::-;27303:4;27341:2;27330:9;27326:18;27318:26;;27390:9;27384:4;27380:20;27376:1;27365:9;27361:17;27354:47;27418:131;27544:4;27418:131;:::i;:::-;27410:139;;27137:419;;;:::o;27562:::-;27728:4;27766:2;27755:9;27751:18;27743:26;;27815:9;27809:4;27805:20;27801:1;27790:9;27786:17;27779:47;27843:131;27969:4;27843:131;:::i;:::-;27835:139;;27562:419;;;:::o;27987:::-;28153:4;28191:2;28180:9;28176:18;28168:26;;28240:9;28234:4;28230:20;28226:1;28215:9;28211:17;28204:47;28268:131;28394:4;28268:131;:::i;:::-;28260:139;;27987:419;;;:::o;28412:::-;28578:4;28616:2;28605:9;28601:18;28593:26;;28665:9;28659:4;28655:20;28651:1;28640:9;28636:17;28629:47;28693:131;28819:4;28693:131;:::i;:::-;28685:139;;28412:419;;;:::o;28837:::-;29003:4;29041:2;29030:9;29026:18;29018:26;;29090:9;29084:4;29080:20;29076:1;29065:9;29061:17;29054:47;29118:131;29244:4;29118:131;:::i;:::-;29110:139;;28837:419;;;:::o;29262:::-;29428:4;29466:2;29455:9;29451:18;29443:26;;29515:9;29509:4;29505:20;29501:1;29490:9;29486:17;29479:47;29543:131;29669:4;29543:131;:::i;:::-;29535:139;;29262:419;;;:::o;29687:::-;29853:4;29891:2;29880:9;29876:18;29868:26;;29940:9;29934:4;29930:20;29926:1;29915:9;29911:17;29904:47;29968:131;30094:4;29968:131;:::i;:::-;29960:139;;29687:419;;;:::o;30112:::-;30278:4;30316:2;30305:9;30301:18;30293:26;;30365:9;30359:4;30355:20;30351:1;30340:9;30336:17;30329:47;30393:131;30519:4;30393:131;:::i;:::-;30385:139;;30112:419;;;:::o;30537:::-;30703:4;30741:2;30730:9;30726:18;30718:26;;30790:9;30784:4;30780:20;30776:1;30765:9;30761:17;30754:47;30818:131;30944:4;30818:131;:::i;:::-;30810:139;;30537:419;;;:::o;30962:::-;31128:4;31166:2;31155:9;31151:18;31143:26;;31215:9;31209:4;31205:20;31201:1;31190:9;31186:17;31179:47;31243:131;31369:4;31243:131;:::i;:::-;31235:139;;30962:419;;;:::o;31387:::-;31553:4;31591:2;31580:9;31576:18;31568:26;;31640:9;31634:4;31630:20;31626:1;31615:9;31611:17;31604:47;31668:131;31794:4;31668:131;:::i;:::-;31660:139;;31387:419;;;:::o;31812:::-;31978:4;32016:2;32005:9;32001:18;31993:26;;32065:9;32059:4;32055:20;32051:1;32040:9;32036:17;32029:47;32093:131;32219:4;32093:131;:::i;:::-;32085:139;;31812:419;;;:::o;32237:::-;32403:4;32441:2;32430:9;32426:18;32418:26;;32490:9;32484:4;32480:20;32476:1;32465:9;32461:17;32454:47;32518:131;32644:4;32518:131;:::i;:::-;32510:139;;32237:419;;;:::o;32662:::-;32828:4;32866:2;32855:9;32851:18;32843:26;;32915:9;32909:4;32905:20;32901:1;32890:9;32886:17;32879:47;32943:131;33069:4;32943:131;:::i;:::-;32935:139;;32662:419;;;:::o;33087:::-;33253:4;33291:2;33280:9;33276:18;33268:26;;33340:9;33334:4;33330:20;33326:1;33315:9;33311:17;33304:47;33368:131;33494:4;33368:131;:::i;:::-;33360:139;;33087:419;;;:::o;33512:::-;33678:4;33716:2;33705:9;33701:18;33693:26;;33765:9;33759:4;33755:20;33751:1;33740:9;33736:17;33729:47;33793:131;33919:4;33793:131;:::i;:::-;33785:139;;33512:419;;;:::o;33937:222::-;34030:4;34068:2;34057:9;34053:18;34045:26;;34081:71;34149:1;34138:9;34134:17;34125:6;34081:71;:::i;:::-;33937:222;;;;:::o;34165:129::-;34199:6;34226:20;;:::i;:::-;34216:30;;34255:33;34283:4;34275:6;34255:33;:::i;:::-;34165:129;;;:::o;34300:75::-;34333:6;34366:2;34360:9;34350:19;;34300:75;:::o;34381:311::-;34458:4;34548:18;34540:6;34537:30;34534:56;;;34570:18;;:::i;:::-;34534:56;34620:4;34612:6;34608:17;34600:25;;34680:4;34674;34670:15;34662:23;;34381:311;;;:::o;34698:307::-;34759:4;34849:18;34841:6;34838:30;34835:56;;;34871:18;;:::i;:::-;34835:56;34909:29;34931:6;34909:29;:::i;:::-;34901:37;;34993:4;34987;34983:15;34975:23;;34698:307;;;:::o;35011:132::-;35078:4;35101:3;35093:11;;35131:4;35126:3;35122:14;35114:22;;35011:132;;;:::o;35149:141::-;35198:4;35221:3;35213:11;;35244:3;35241:1;35234:14;35278:4;35275:1;35265:18;35257:26;;35149:141;;;:::o;35296:114::-;35363:6;35397:5;35391:12;35381:22;;35296:114;;;:::o;35416:98::-;35467:6;35501:5;35495:12;35485:22;;35416:98;;;:::o;35520:99::-;35572:6;35606:5;35600:12;35590:22;;35520:99;;;:::o;35625:113::-;35695:4;35727;35722:3;35718:14;35710:22;;35625:113;;;:::o;35744:184::-;35843:11;35877:6;35872:3;35865:19;35917:4;35912:3;35908:14;35893:29;;35744:184;;;;:::o;35934:168::-;36017:11;36051:6;36046:3;36039:19;36091:4;36086:3;36082:14;36067:29;;35934:168;;;;:::o;36108:147::-;36209:11;36246:3;36231:18;;36108:147;;;;:::o;36261:169::-;36345:11;36379:6;36374:3;36367:19;36419:4;36414:3;36410:14;36395:29;;36261:169;;;;:::o;36436:148::-;36538:11;36575:3;36560:18;;36436:148;;;;:::o;36590:305::-;36630:3;36649:20;36667:1;36649:20;:::i;:::-;36644:25;;36683:20;36701:1;36683:20;:::i;:::-;36678:25;;36837:1;36769:66;36765:74;36762:1;36759:81;36756:107;;;36843:18;;:::i;:::-;36756:107;36887:1;36884;36880:9;36873:16;;36590:305;;;;:::o;36901:185::-;36941:1;36958:20;36976:1;36958:20;:::i;:::-;36953:25;;36992:20;37010:1;36992:20;:::i;:::-;36987:25;;37031:1;37021:35;;37036:18;;:::i;:::-;37021:35;37078:1;37075;37071:9;37066:14;;36901:185;;;;:::o;37092:348::-;37132:7;37155:20;37173:1;37155:20;:::i;:::-;37150:25;;37189:20;37207:1;37189:20;:::i;:::-;37184:25;;37377:1;37309:66;37305:74;37302:1;37299:81;37294:1;37287:9;37280:17;37276:105;37273:131;;;37384:18;;:::i;:::-;37273:131;37432:1;37429;37425:9;37414:20;;37092:348;;;;:::o;37446:191::-;37486:4;37506:20;37524:1;37506:20;:::i;:::-;37501:25;;37540:20;37558:1;37540:20;:::i;:::-;37535:25;;37579:1;37576;37573:8;37570:34;;;37584:18;;:::i;:::-;37570:34;37629:1;37626;37622:9;37614:17;;37446:191;;;;:::o;37643:96::-;37680:7;37709:24;37727:5;37709:24;:::i;:::-;37698:35;;37643:96;;;:::o;37745:90::-;37779:7;37822:5;37815:13;37808:21;37797:32;;37745:90;;;:::o;37841:149::-;37877:7;37917:66;37910:5;37906:78;37895:89;;37841:149;;;:::o;37996:126::-;38033:7;38073:42;38066:5;38062:54;38051:65;;37996:126;;;:::o;38128:77::-;38165:7;38194:5;38183:16;;38128:77;;;:::o;38211:140::-;38275:9;38308:37;38339:5;38308:37;:::i;:::-;38295:50;;38211:140;;;:::o;38357:126::-;38407:9;38440:37;38471:5;38440:37;:::i;:::-;38427:50;;38357:126;;;:::o;38489:113::-;38539:9;38572:24;38590:5;38572:24;:::i;:::-;38559:37;;38489:113;;;:::o;38608:154::-;38692:6;38687:3;38682;38669:30;38754:1;38745:6;38740:3;38736:16;38729:27;38608:154;;;:::o;38768:307::-;38836:1;38846:113;38860:6;38857:1;38854:13;38846:113;;;38945:1;38940:3;38936:11;38930:18;38926:1;38921:3;38917:11;38910:39;38882:2;38879:1;38875:10;38870:15;;38846:113;;;38977:6;38974:1;38971:13;38968:101;;;39057:1;39048:6;39043:3;39039:16;39032:27;38968:101;38817:258;38768:307;;;:::o;39081:171::-;39120:3;39143:24;39161:5;39143:24;:::i;:::-;39134:33;;39189:4;39182:5;39179:15;39176:41;;;39197:18;;:::i;:::-;39176:41;39244:1;39237:5;39233:13;39226:20;;39081:171;;;:::o;39258:320::-;39302:6;39339:1;39333:4;39329:12;39319:22;;39386:1;39380:4;39376:12;39407:18;39397:81;;39463:4;39455:6;39451:17;39441:27;;39397:81;39525:2;39517:6;39514:14;39494:18;39491:38;39488:84;;;39544:18;;:::i;:::-;39488:84;39309:269;39258:320;;;:::o;39584:281::-;39667:27;39689:4;39667:27;:::i;:::-;39659:6;39655:40;39797:6;39785:10;39782:22;39761:18;39749:10;39746:34;39743:62;39740:88;;;39808:18;;:::i;:::-;39740:88;39848:10;39844:2;39837:22;39627:238;39584:281;;:::o;39871:233::-;39910:3;39933:24;39951:5;39933:24;:::i;:::-;39924:33;;39979:66;39972:5;39969:77;39966:103;;;40049:18;;:::i;:::-;39966:103;40096:1;40089:5;40085:13;40078:20;;39871:233;;;:::o;40110:176::-;40142:1;40159:20;40177:1;40159:20;:::i;:::-;40154:25;;40193:20;40211:1;40193:20;:::i;:::-;40188:25;;40232:1;40222:35;;40237:18;;:::i;:::-;40222:35;40278:1;40275;40271:9;40266:14;;40110:176;;;;:::o;40292:180::-;40340:77;40337:1;40330:88;40437:4;40434:1;40427:15;40461:4;40458:1;40451:15;40478:180;40526:77;40523:1;40516:88;40623:4;40620:1;40613:15;40647:4;40644:1;40637:15;40664:180;40712:77;40709:1;40702:88;40809:4;40806:1;40799:15;40833:4;40830:1;40823:15;40850:180;40898:77;40895:1;40888:88;40995:4;40992:1;40985:15;41019:4;41016:1;41009:15;41036:180;41084:77;41081:1;41074:88;41181:4;41178:1;41171:15;41205:4;41202:1;41195:15;41222:117;41331:1;41328;41321:12;41345:117;41454:1;41451;41444:12;41468:117;41577:1;41574;41567:12;41591:117;41700:1;41697;41690:12;41714:117;41823:1;41820;41813:12;41837:117;41946:1;41943;41936:12;41960:102;42001:6;42052:2;42048:7;42043:2;42036:5;42032:14;42028:28;42018:38;;41960:102;;;:::o;42068:160::-;42208:12;42204:1;42196:6;42192:14;42185:36;42068:160;:::o;42234:233::-;42374:34;42370:1;42362:6;42358:14;42351:58;42443:16;42438:2;42430:6;42426:15;42419:41;42234:233;:::o;42473:171::-;42613:23;42609:1;42601:6;42597:14;42590:47;42473:171;:::o;42650:178::-;42790:30;42786:1;42778:6;42774:14;42767:54;42650:178;:::o;42834:225::-;42974:34;42970:1;42962:6;42958:14;42951:58;43043:8;43038:2;43030:6;43026:15;43019:33;42834:225;:::o;43065:230::-;43205:34;43201:1;43193:6;43189:14;43182:58;43274:13;43269:2;43261:6;43257:15;43250:38;43065:230;:::o;43301:236::-;43441:34;43437:1;43429:6;43425:14;43418:58;43510:19;43505:2;43497:6;43493:15;43486:44;43301:236;:::o;43543:240::-;43683:34;43679:1;43671:6;43667:14;43660:58;43752:23;43747:2;43739:6;43735:15;43728:48;43543:240;:::o;43789:238::-;43929:34;43925:1;43917:6;43913:14;43906:58;43998:21;43993:2;43985:6;43981:15;43974:46;43789:238;:::o;44033:224::-;44173:34;44169:1;44161:6;44157:14;44150:58;44242:7;44237:2;44229:6;44225:15;44218:32;44033:224;:::o;44263:239::-;44403:34;44399:1;44391:6;44387:14;44380:58;44472:22;44467:2;44459:6;44455:15;44448:47;44263:239;:::o;44508:178::-;44648:30;44644:1;44636:6;44632:14;44625:54;44508:178;:::o;44692:233::-;44832:34;44828:1;44820:6;44816:14;44809:58;44901:16;44896:2;44888:6;44884:15;44877:41;44692:233;:::o;44931:172::-;45071:24;45067:1;45059:6;45055:14;45048:48;44931:172;:::o;45109:178::-;45249:30;45245:1;45237:6;45233:14;45226:54;45109:178;:::o;45293:248::-;45433:34;45429:1;45421:6;45417:14;45410:58;45502:31;45497:2;45489:6;45485:15;45478:56;45293:248;:::o;45547:228::-;45687:34;45683:1;45675:6;45671:14;45664:58;45756:11;45751:2;45743:6;45739:15;45732:36;45547:228;:::o;45781:122::-;45854:24;45872:5;45854:24;:::i;:::-;45847:5;45844:35;45834:63;;45893:1;45890;45883:12;45834:63;45781:122;:::o;45909:116::-;45979:21;45994:5;45979:21;:::i;:::-;45972:5;45969:32;45959:60;;46015:1;46012;46005:12;45959:60;45909:116;:::o;46031:120::-;46103:23;46120:5;46103:23;:::i;:::-;46096:5;46093:34;46083:62;;46141:1;46138;46131:12;46083:62;46031:120;:::o;46157:122::-;46230:24;46248:5;46230:24;:::i;:::-;46223:5;46220:35;46210:63;;46269:1;46266;46259:12;46210:63;46157:122;:::o

Swarm Source

ipfs://a0d931c6c794c45e16a6b02a233a562eb892a2c776c23fba1d6e542c6d7c4027
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.