ETH Price: $3,342.66 (-0.89%)
Gas: 7.8 Gwei

Token

Space Yetis (YETI)
 

Overview

Max Total Supply

3,333 YETI

Holders

1,062

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
7 YETI
0xf17AE88F4B5270b437b4A390387F9e90ad5F91Ee
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:
SpaceYetis

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-24
*/

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

/*  ERC721I - ERC721I (ERC721 0xInuarashi Edition) - Gas Optimized
    Contributors: 0xInuarashi (Message to Martians, Anonymice), 0xBasset (Ether Orcs) */

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 Mint(address indexed to, uint256 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!");

        // ERC721I Starts Here
        ownerOf[tokenId_] = to_;
        balanceOf[to_]++;
        totalSupply++; 
        // ERC721I Ends Here

        emit Transfer(address(0x0), to_, tokenId_);
        emit Mint(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!");

        // ERC721I Starts Here
        // 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_]++;
        // ERC721I Ends Here

        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 (this will be an issue in the future for interfaces)
    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;
    }
}

abstract contract MerkleWhitelist {
    bytes32 internal _merkleRoot;
    function _setMerkleRoot(bytes32 merkleRoot_) internal virtual {
        _merkleRoot = merkleRoot_;
    }
    function isWhitelisted(address address_, bytes32[] memory proof_) public view returns (bool) {
        bytes32 _leaf = keccak256(abi.encodePacked(address_));
        for (uint256 i = 0; i < proof_.length; i++) {
            _leaf = _leaf < proof_[i] ? keccak256(abi.encodePacked(_leaf, proof_[i])) : keccak256(abi.encodePacked(proof_[i], _leaf));
        }
        return _leaf == _merkleRoot;
    }
}

abstract contract Security {
    // Prevent Smart Contracts
    modifier onlySender {
        require(msg.sender == tx.origin, "No Smart Contracts!"); _; }
}

abstract contract Ownable {
    address public owner;
    event OwnershipTransferred(address indexed oldOwner_, address indexed newOwner_);
    constructor() { owner = msg.sender; }
    modifier onlyOwner {
        require(owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function _transferOwnership(address newOwner_) internal virtual {
        address _oldOwner = owner;
        owner = newOwner_;
        emit OwnershipTransferred(_oldOwner, newOwner_);    
    }
    function transferOwnership(address newOwner_) public virtual onlyOwner {
        require(newOwner_ != address(0x0), "Ownable: new owner is the zero address!");
        _transferOwnership(newOwner_);
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0x0));
    }
}

// Open0x Payable Governance Module by 0xInuarashi
// This abstract contract utilizes for loops in order to iterate things in order to be modular
// It is not the most gas-effective implementation. 
// We sacrified gas-effectiveness for Modularity instead.
abstract contract PayableGovernance is Ownable {
    // Special Access
    address _payableGovernanceSetter;
    constructor() payable { _payableGovernanceSetter = msg.sender; }
    modifier onlyPayableGovernanceSetter {
        require(msg.sender == _payableGovernanceSetter, "PayableGovernance: Caller is not Setter!"); _; }
    function reouncePayableGovernancePermissions() public onlyPayableGovernanceSetter {
        _payableGovernanceSetter = address(0x0); }

    // Receivable Fallback
    event Received(address from, uint amount);
    receive() external payable { emit Received(msg.sender, msg.value); }

    // Required Variables
    address payable[] internal _payableGovernanceAddresses;
    uint256[] internal _payableGovernanceShares;    
    mapping(address => bool) public addressToEmergencyUnlocked;

    // Withdraw Functionality
    function _withdraw(address payable address_, uint256 amount_) internal {
        (bool success, ) = payable(address_).call{value: amount_}("");
        require(success, "Transfer failed");
    }

    // Governance Functions
    function setPayableGovernanceShareholders(address payable[] memory addresses_, uint256[] memory shares_) public onlyPayableGovernanceSetter {
        require(_payableGovernanceAddresses.length == 0 && _payableGovernanceShares.length == 0, "Payable Governance already set! To set again, reset first!");
        require(addresses_.length == shares_.length, "Address and Shares length mismatch!");
        uint256 _totalShares;
        for (uint256 i = 0; i < addresses_.length; i++) {
            _totalShares += shares_[i];
            _payableGovernanceAddresses.push(addresses_[i]);
            _payableGovernanceShares.push(shares_[i]);
        }
        require(_totalShares == 1000, "Total Shares is not 1000!");
    }
    function resetPayableGovernanceShareholders() public onlyPayableGovernanceSetter {
        while (_payableGovernanceAddresses.length != 0) {
            _payableGovernanceAddresses.pop(); }
        while (_payableGovernanceShares.length != 0) {
            _payableGovernanceShares.pop(); }
    }

    // Governance View Functions
    function balance() public view returns (uint256) {
        return address(this).balance;
    }
    function payableGovernanceAddresses() public view returns (address payable[] memory) {
        return _payableGovernanceAddresses;
    }
    function payableGovernanceShares() public view returns (uint256[] memory) {
        return _payableGovernanceShares;
    }

    // Withdraw Functions
    function withdrawEther() public onlyOwner {
        // require that there has been payable governance set.
        require(_payableGovernanceAddresses.length > 0 && _payableGovernanceShares.length > 0, "Payable governance not set yet!");
         // this should never happen
        require(_payableGovernanceAddresses.length == _payableGovernanceShares.length, "Payable governance length mismatch!");
        
        // now, we check that the governance shares equal to 1000.
        uint256 _totalPayableShares;
        for (uint256 i = 0; i < _payableGovernanceShares.length; i++) {
            _totalPayableShares += _payableGovernanceShares[i]; }
        require(_totalPayableShares == 1000, "Payable Governance Shares is not 1000!");
        
        // // now, we start the withdrawal process if all conditionals pass
        // store current balance in local memory
        uint256 _totalETH = address(this).balance; 

        // withdraw loop for payable governance
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            uint256 _ethToWithdraw = ((_totalETH * _payableGovernanceShares[i]) / 1000);
            _withdraw(_payableGovernanceAddresses[i], _ethToWithdraw);
        }
    }

    function viewWithdrawAmounts() public view onlyOwner returns (uint256[] memory) {
        // require that there has been payable governance set.
        require(_payableGovernanceAddresses.length > 0 && _payableGovernanceShares.length > 0, "Payable governance not set yet!");
         // this should never happen
        require(_payableGovernanceAddresses.length == _payableGovernanceShares.length, "Payable governance length mismatch!");
        
        // now, we check that the governance shares equal to 1000.
        uint256 _totalPayableShares;
        for (uint256 i = 0; i < _payableGovernanceShares.length; i++) {
            _totalPayableShares += _payableGovernanceShares[i]; }
        require(_totalPayableShares == 1000, "Payable Governance Shares is not 1000!");
        
        // // now, we start the array creation process if all conditionals pass
        // store current balance in local memory and instantiate array for input
        uint256 _totalETH = address(this).balance; 
        uint256[] memory _withdrawals = new uint256[] (_payableGovernanceAddresses.length + 2);

        // array creation loop for payable governance values 
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            _withdrawals[i] = ( (_totalETH * _payableGovernanceShares[i]) / 1000 );
        }
        
        // push two last array spots as total eth and added eths of withdrawals
        _withdrawals[_payableGovernanceAddresses.length] = _totalETH;
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            _withdrawals[_payableGovernanceAddresses.length + 1] += _withdrawals[i]; }

        // return the final array data
        return _withdrawals;
    }

    // Shareholder Governance
    modifier onlyShareholder {
        bool _isShareholder;
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            if (msg.sender == _payableGovernanceAddresses[i]) {
                _isShareholder = true;
            }
        }
        require(_isShareholder, "You are not a shareholder!");
        _;
    }
    function unlockEmergencyFunctionsAsShareholder() public onlyShareholder {
        addressToEmergencyUnlocked[msg.sender] = true;
    }

    // Emergency Functions
    modifier onlyEmergency {
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            require(addressToEmergencyUnlocked[_payableGovernanceAddresses[i]], "Emergency Functions are not unlocked!");
        }
        _;
    }
    function emergencyWithdrawEther() public onlyOwner onlyEmergency {
        _withdraw(payable(msg.sender), address(this).balance);
    }
}

abstract contract PublicMint {
    // Public Minting
    bool public _publicMint; uint256 public _publicMintTime;
    function _setPublicMint(bool bool_, uint256 time_) internal {
        _publicMint = bool_; _publicMintTime = time_; }
    modifier publicMintEnabled { 
        require(_publicMint && _publicMintTime <= block.timestamp, 
            "Public Mint is not enabled yet!"); _; }
    function publicMintStatus() external view returns (bool) {
        return _publicMint && _publicMintTime <= block.timestamp; }
}

abstract contract WhitelistMint {
    // Whitelist Minting
    bool internal _whitelistMint; uint256 public _whitelistMintTime;
    function _setWhitelistMint(bool bool_, uint256 time_) internal {
        _whitelistMint = bool_; _whitelistMintTime = time_; }
    modifier whitelistMintEnabled {
        require(_whitelistMint && _whitelistMintTime <= block.timestamp, 
            "Whitelist Mint is not enabled yet!"); _; } 
    function whitelistMintStatus() external view returns (bool) {
        return _whitelistMint && _whitelistMintTime <= block.timestamp; }
}

abstract contract SatelliteMint {
    // Satellite Minting
    bool internal _satelliteMintEnabled; uint256 public _satelliteMintTime;
    function _setSatelliteMint(bool bool_, uint256 time_) internal {
        _satelliteMintEnabled = bool_; _satelliteMintTime = time_; }
    modifier satelliteMintEnabled {
        require(_satelliteMintEnabled && _satelliteMintTime <= block.timestamp, 
            "Satellite Mint is not enabled yet!"); _; } 
    function satelliteMintStatus() external view returns (bool) {
        return _satelliteMintEnabled && _satelliteMintTime <= block.timestamp; }
}

abstract contract SatelliteReceiver {
    // DO NOT CHANGE THIS
    address public satelliteStationAddress = 0x69F7f7053024cd5923A11718F3A28cC62F2AF3a7;
    uint256 public SSTokensMinted = 0;

    // YOU CAN CONFIGURE THIS YOURSELF
    address public SSTokenReceiver = 0x05b19Db67f83850fd79FDd308eaEDAA8fd9d8381;
    address public SSTokenAddress = 0x984b6968132DA160122ddfddcc4461C995741513;
    uint256 public SSTokensPerMint = 20 ether;
    uint256 public SSTokensAvailable = 25;
    uint256 public SSMintsPerAddress = 1;
    
    mapping(address => uint256) public SSAddressToMints;

    function _satelliteMint(uint256 amount_) internal {
        require(msg.sender == satelliteStationAddress, "_satelliteMint: msg.sender is not Satellite Station!");
        require(SSTokensAvailable >= SSTokensMinted + amount_, "_satelliteMint: amount_ requested over maximum avaialble tokens!");
        require(SSMintsPerAddress >= SSAddressToMints[tx.origin] + amount_, "_satelliteMint: amount exceeds mints available per address!");

        SSAddressToMints[tx.origin] += amount_;
        SSTokensMinted += amount_;
    }
}

interface iPlasma {
    function updateReward(address address_) external;
}

contract SpaceYetis is ERC721I, MerkleWhitelist, Security, Ownable, SatelliteReceiver, SatelliteMint, PayableGovernance, PublicMint, WhitelistMint {
    constructor() ERC721I("Space Yetis", "YETI") {}

    // General NFT Variables
    uint256 public maxSupply = 3333;
    uint256 public mintPrice = 0.08 ether;
    uint256 public publicMaxMintsPerTx = 5;

    // Token Yield Variables
    address public plasmaAddress;
    iPlasma public Plasma;
    function setPlasma(address address_) external onlyOwner { plasmaAddress = address_; Plasma = iPlasma(address_); }

    // Contract Administration
    function setMerkleRoot(bytes32 merkleRoot_) external onlyOwner { _setMerkleRoot(merkleRoot_); }
    function setMintPrice(uint256 mintPrice_) external onlyOwner { mintPrice = mintPrice_; }
    function setMaxSupply(uint256 supply_) external onlyOwner { maxSupply = supply_; }

    function setSatelliteMint(bool bool_, uint256 time_) external onlyOwner { _setSatelliteMint(bool_, time_); }
    function setWhitelisMint(bool bool_, uint256 time_) external onlyOwner { _setWhitelistMint(bool_, time_); }
    function setPublicMint(bool bool_, uint256 time_) external onlyOwner { _setPublicMint(bool_, time_); }
    
    // Internal Functions
    function _mintMany(address to_, uint256 amount_) internal {
        require(maxSupply >= totalSupply + amount_, "_mintMany: amount exceeds maxSupply");
        for (uint256 i = 0; i < amount_; i++) {
            _mint(to_, (totalSupply + 1)); // iterate from 1
        }
        Plasma.updateReward(to_);
    }

    // Onwer Mint
    function ownerMintMany(address[] memory tos_, uint256[] memory amounts_) external onlyOwner {
        require(tos_.length == amounts_.length, "ownerMintMany: array length mismatch!");
        for (uint256 i = 0; i < tos_.length; i++) { 
            _mintMany(tos_[i], amounts_[i]); 
        }
    }

    // Satellite Mint
    function satelliteMint(uint256 amount_) external satelliteMintEnabled {
        require(SSMintsPerAddress >= amount_, "Over maximum mints per address for Satellite Mints!");
        _satelliteMint(amount_);
        _mintMany(tx.origin, amount_);
    }

    // Whitelist Mint
    uint256 public maxMintsPerWL = 3;
    mapping(address => uint256) public addressToWLMinted; 
    
    function whitelistMint(uint256 amount_, bytes32[] memory proof_) external payable onlySender whitelistMintEnabled {
        require(isWhitelisted(msg.sender, proof_), "You are not whitelisted!");
        require(maxMintsPerWL >= amount_, "Maximum 3 mints per tx for whitelist!");
        require(maxMintsPerWL >= addressToWLMinted[msg.sender] + amount_, "Amount exceeds available for whitelist!");
        require(msg.value == mintPrice * amount_, "Invalid value sent!");

        addressToWLMinted[msg.sender] += amount_;

        _mintMany(msg.sender, amount_);
    }

    // Public Mint
    function mint(uint256 amount_) external payable onlySender publicMintEnabled {
        require(publicMaxMintsPerTx >= amount_, "Maximum 5 mints per tx!");
        require(msg.value == mintPrice * amount_, "Invalid value sent!");
        _mintMany(msg.sender, amount_);
    }

    // Token Overrides for Transfer-Hook token yield
    function __yieldTransferHook(address from_, address to_) internal {
        Plasma.updateReward(from_); 
        Plasma.updateReward(to_); 
    }
    function transferFrom(address from_, address to_, uint256 tokenId_) public override {
        __yieldTransferHook(from_, to_);
        ERC721I.transferFrom(from_, to_, tokenId_);
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_, bytes memory data_) public override {
        __yieldTransferHook(from_, to_);
        ERC721I.safeTransferFrom(from_, to_, tokenId_, data_);
    }

    // TokenURI Stuffs
    function setBaseTokenURI(string memory uri_) external onlyOwner {
        _setBaseTokenURI(uri_);
    }
    function setBaseTokenURI_EXT(string memory ext_) external onlyOwner {
        _setBaseTokenURI_EXT(ext_);
    }
}

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":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner_","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner_","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Received","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":"Plasma","outputs":[{"internalType":"contract iPlasma","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"SSAddressToMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SSMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SSTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SSTokenReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SSTokensAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SSTokensMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SSTokensPerMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_publicMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_publicMintTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_satelliteMintTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_whitelistMintTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToEmergencyUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToWLMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"balance","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":[],"name":"emergencyWithdrawEther","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"bytes32[]","name":"proof_","type":"bytes32[]"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintsPerWL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","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":"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":"ownerMintMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"payableGovernanceAddresses","outputs":[{"internalType":"address payable[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"payableGovernanceShares","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"plasmaAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicMaxMintsPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicMintStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reouncePayableGovernancePermissions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetPayableGovernanceShareholders","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"amount_","type":"uint256"}],"name":"satelliteMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"satelliteMintStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"satelliteStationAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator_","type":"address"},{"internalType":"bool","name":"approved_","type":"bool"}],"name":"setApprovalForAll","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":"uint256","name":"supply_","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintPrice_","type":"uint256"}],"name":"setMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable[]","name":"addresses_","type":"address[]"},{"internalType":"uint256[]","name":"shares_","type":"uint256[]"}],"name":"setPayableGovernanceShareholders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setPlasma","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"},{"internalType":"uint256","name":"time_","type":"uint256"}],"name":"setPublicMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"},{"internalType":"uint256","name":"time_","type":"uint256"}],"name":"setSatelliteMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"},{"internalType":"uint256","name":"time_","type":"uint256"}],"name":"setWhitelisMint","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":"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":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockEmergencyFunctionsAsShareholder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewWithdrawAmounts","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes32[]","name":"proof_","type":"bytes32[]"}],"name":"whitelistMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"whitelistMintStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b80546001600160a01b03199081167369f7f7053024cd5923a11718f3a28cc62f2af3a7179091556000600c55600d805482167305b19db67f83850fd79fdd308eaedaa8fd9d8381179055600e805490911673984b6968132da160122ddfddcc4461c9957415131790556801158e460913d00000600f5560196010556001601155610d05601d5567011c37937e080000601e556005601f556003602255348015620000af57600080fd5b50604080518082018252600b81526a537061636520596574697360a81b6020808301918252835180850190945260048452635945544960e01b908401528151919291620000ff9160009162000140565b5080516200011590600190602084019062000140565b5050600a8054336001600160a01b031991821681179092556015805490911690911790555062000223565b8280546200014e90620001e6565b90600052602060002090601f016020900481019282620001725760008555620001bd565b82601f106200018d57805160ff1916838001178555620001bd565b82800160010185558215620001bd579182015b82811115620001bd578251825591602001919060010190620001a0565b50620001cb929150620001cf565b5090565b5b80821115620001cb5760008155600101620001d0565b600181811c90821680620001fb57607f821691505b602082108114156200021d57634e487b7160e01b600052602260045260246000fd5b50919050565b613d4080620002336000396000f3fe6080604052600436106103e85760003560e01c80637c45f3df11610208578063c87b56dd11610118578063dc92f8f0116100ab578063f487c6021161007a578063f487c60214610ba3578063f4a0a52814610bc3578063f66ac73014610be3578063faf5fd4414610c03578063fc1b857114610c1957600080fd5b8063dc92f8f014610b11578063e47fa66e14610b26578063e985e9c514610b48578063f2fde38b14610b8357600080fd5b8063d311c80d116100e7578063d311c80d14610aba578063d5abeb0114610ad0578063d663595914610ae6578063d9d2b4cd14610afc57600080fd5b8063c87b56dd14610a5c578063cb9fe58614610a7c578063d04d3f8214610a91578063d2cab05614610aa757600080fd5b8063a0712d681161019b578063acdb4d9f1161016a578063acdb4d9f146109d3578063b4f9431e146109f3578063b69ef8a814610a09578063b88d4fde14610a1c578063c1f730a414610a3c57600080fd5b8063a0712d6814610975578063a22cb46514610988578063a26b1ab1146109a8578063a91f8835146109be57600080fd5b80638da5cb5b116101d75780638da5cb5b1461090a5780639514857d1461092a57806395d89b411461094a5780639970cc291461095f57600080fd5b80637c45f3df146108955780637cb64759146108b55780637ece7fa6146108d55780638b2998f8146108f557600080fd5b806342842e0e116103035780636817c76c1161029657806370a082311161026557806370a08231146107fe578063715018a61461082b57806371ba36121461084057806371cf94a6146108605780637362377b1461088057600080fd5b80636817c76c1461077b5780636e770abe146107915780636e9d287b146107be5780636f8b44b0146107de57600080fd5b80634ee09efb116102d25780634ee09efb146106fb578063524c7ff8146107105780635a23dd99146107255780636352211e1461074557600080fd5b806342842e0e14610679578063438b6300146106995780634959f0f5146106c65780634be66f3e146106db57600080fd5b8063185eb6ec1161037b57806323b872dd1161034a57806323b872dd14610604578063262023701461062457806330176e13146106395780633a3473b61461065957600080fd5b8063185eb6ec14610584578063213cc76c1461059a57806321d7b649146105ba57806323af3126146105d457600080fd5b8063095ea7b3116103b7578063095ea7b3146104f35780630e6aeab0146105135780630edc92e61461054e57806318160ddd1461056e57600080fd5b806301ffc9a71461042c57806302ffaed11461046157806306fdde0314610483578063081812fc146104a557600080fd5b3661042757604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561043857600080fd5b5061044c61044736600461376d565b610c2f565b60405190151581526020015b60405180910390f35b34801561046d57600080fd5b5061048161047c3660046137a7565b610c66565b005b34801561048f57600080fd5b50610498610ca5565b60405161045891906139f6565b3480156104b157600080fd5b506104db6104c0366004613754565b6007602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610458565b3480156104ff57600080fd5b5061048161050e3660046135b4565b610d33565b34801561051f57600080fd5b5061054061052e366004613351565b60126020526000908152604090205481565b604051908152602001610458565b34801561055a57600080fd5b50600b546104db906001600160a01b031681565b34801561057a57600080fd5b5061054060045481565b34801561059057600080fd5b5061054060105481565b3480156105a657600080fd5b506104816105b5366004613738565b610e57565b3480156105c657600080fd5b5060195461044c9060ff1681565b3480156105e057600080fd5b5061044c6105ef366004613351565b60186020526000908152604090205460ff1681565b34801561061057600080fd5b5061048161061f366004613490565b610e9c565b34801561063057600080fd5b5061044c610eb1565b34801561064557600080fd5b506104816106543660046137a7565b610ecd565b34801561066557600080fd5b50610481610674366004613408565b610f00565b34801561068557600080fd5b50610481610694366004613490565b610f4a565b3480156106a557600080fd5b506106b96106b4366004613351565b610f65565b60405161045891906139be565b3480156106d257600080fd5b5061048161109c565b3480156106e757600080fd5b506104816106f63660046135e0565b61113c565b34801561070757600080fd5b5061044c61121f565b34801561071c57600080fd5b506106b961123a565b34801561073157600080fd5b5061044c610740366004613530565b6114bc565b34801561075157600080fd5b506104db610760366004613754565b6005602052600090815260409020546001600160a01b031681565b34801561078757600080fd5b50610540601e5481565b34801561079d57600080fd5b506105406107ac366004613351565b60236020526000908152604090205481565b3480156107ca57600080fd5b506104816107d936600461369e565b6115e0565b3480156107ea57600080fd5b506104816107f9366004613754565b611806565b34801561080a57600080fd5b50610540610819366004613351565b60066020526000908152604090205481565b34801561083757600080fd5b50610481611835565b34801561084c57600080fd5b506021546104db906001600160a01b031681565b34801561086c57600080fd5b506020546104db906001600160a01b031681565b34801561088c57600080fd5b50610481611869565b3480156108a157600080fd5b506104816108b0366004613351565b611a0d565b3480156108c157600080fd5b506104816108d0366004613754565b611a63565b3480156108e157600080fd5b50600d546104db906001600160a01b031681565b34801561090157600080fd5b506106b9611a96565b34801561091657600080fd5b50600a546104db906001600160a01b031681565b34801561093657600080fd5b50610481610945366004613754565b611aee565b34801561095657600080fd5b50610498611bda565b34801561096b57600080fd5b5061054060225481565b610481610983366004613754565b611be7565b34801561099457600080fd5b506104816109a336600461357f565b611d3a565b3480156109b457600080fd5b50610540600f5481565b3480156109ca57600080fd5b50610481611d45565b3480156109df57600080fd5b50600e546104db906001600160a01b031681565b3480156109ff57600080fd5b5061054060115481565b348015610a1557600080fd5b5047610540565b348015610a2857600080fd5b50610481610a373660046134d1565b611d81565b348015610a4857600080fd5b50610481610a57366004613738565b611d9d565b348015610a6857600080fd5b50610498610a77366004613754565b611dde565b348015610a8857600080fd5b5061044c611e8c565b348015610a9d57600080fd5b50610540601f5481565b610481610ab53660046137ef565b611ea7565b348015610ac657600080fd5b50610540601c5481565b348015610adc57600080fd5b50610540601d5481565b348015610af257600080fd5b50610540601a5481565b348015610b0857600080fd5b5061048161210a565b348015610b1d57600080fd5b506104816121c9565b348015610b3257600080fd5b50610b3b6122b6565b6040516104589190613971565b348015610b5457600080fd5b5061044c610b6336600461336e565b600860209081526000928352604080842090915290825290205460ff1681565b348015610b8f57600080fd5b50610481610b9e366004613351565b612317565b348015610baf57600080fd5b50610481610bbe3660046133a7565b6123b0565b348015610bcf57600080fd5b50610481610bde366004613754565b6123f2565b348015610bef57600080fd5b50610481610bfe366004613738565b612421565b348015610c0f57600080fd5b5061054060145481565b348015610c2557600080fd5b50610540600c5481565b60006380ac58cd60e01b6001600160e01b031983161480610c605750635b5e139f60e01b6001600160e01b03198316145b92915050565b600a546001600160a01b03163314610c995760405162461bcd60e51b8152600401610c9090613a94565b60405180910390fd5b610ca281612462565b50565b60008054610cb290613c07565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde90613c07565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b505050505081565b6000818152600560205260409020546001600160a01b03908116908316811415610db35760405162461bcd60e51b815260206004820152602b60248201527f455243373231493a20617070726f766528292043616e6e6f7420617070726f7660448201526a6520796f757273656c662160a81b6064820152608401610c90565b336001600160a01b0382161480610ded57506001600160a01b038116600090815260086020908152604080832033845290915290205460ff165b610e485760405162461bcd60e51b815260206004820152602660248201527f455243373231493a2043616c6c6572206e6f74206f776e6572206f7220417070604482015265726f7665642160d01b6064820152608401610c90565b610e528383612475565b505050565b600a546001600160a01b03163314610e815760405162461bcd60e51b8152600401610c9090613a94565b6013805460ff191683151517905560148190555050565b5050565b610ea683836124fd565b610e528383836125c0565b60195460009060ff168015610ec8575042601a5411155b905090565b600a546001600160a01b03163314610ef75760405162461bcd60e51b8152600401610c9090613a94565b610ca28161263d565b60005b8251811015610f4357610f318585858481518110610f2357610f23613cb3565b602002602001015185611d81565b80610f3b81613c42565b915050610f03565b5050505050565b610e5283838360405180602001604052806000815250611d81565b6001600160a01b038116600090815260066020526040812054606091816001600160401b03811115610f9957610f99613cc9565b604051908082528060200260200182016040528015610fc2578160200160208202803683370190505b50600454909150600090815b81811015611091576000818152600560205260409020546001600160a01b031615801561101e575083611002600187613bad565b8151811061101257611012613cb3565b60200260200101516000145b15611031578161102d81613c42565b9250505b6000818152600560205260409020546001600160a01b038881169116141561107f578084848151811061106657611066613cb3565b60209081029190910101528261107b81613c42565b9350505b8061108981613c42565b915050610fce565b509195945050505050565b6015546001600160a01b031633146110c65760405162461bcd60e51b8152600401610c9090613a09565b601654156111065760168054806110df576110df613c9d565b600082815260209020810160001990810180546001600160a01b03191690550190556110c6565b6017541561113a57601780548061111f5761111f613c9d565b60019003818190600052602060002001600090559055611106565b565b600a546001600160a01b031633146111665760405162461bcd60e51b8152600401610c9090613a94565b80518251146111c55760405162461bcd60e51b815260206004820152602560248201527f6f776e65724d696e744d616e793a206172726179206c656e677468206d69736d604482015264617463682160d81b6064820152608401610c90565b60005b8251811015610e525761120d8382815181106111e6576111e6613cb3565b602002602001015183838151811061120057611200613cb3565b6020026020010151612650565b8061121781613c42565b9150506111c8565b60135460009060ff168015610ec85750426014541115905090565b600a546060906001600160a01b031633146112675760405162461bcd60e51b8152600401610c9090613a94565b60165415801590611279575060175415155b6112c55760405162461bcd60e51b815260206004820152601f60248201527f50617961626c6520676f7665726e616e6365206e6f74207365742079657421006044820152606401610c90565b601754601654146112e85760405162461bcd60e51b8152600401610c9090613a51565b6000805b601754811015611333576017818154811061130957611309613cb3565b90600052602060002001548261131f9190613b62565b91508061132b81613c42565b9150506112ec565b50806103e8146113555760405162461bcd60e51b8152600401610c9090613ac9565b6016544790600090611368906002613b62565b6001600160401b0381111561137f5761137f613cc9565b6040519080825280602002602001820160405280156113a8578160200160208202803683370190505b50905060005b60165481101561141d576103e8601782815481106113ce576113ce613cb3565b9060005260206000200154846113e49190613b8e565b6113ee9190613b7a565b82828151811061140057611400613cb3565b60209081029190910101528061141581613c42565b9150506113ae565b50601654815183918391811061143557611435613cb3565b60200260200101818152505060005b6016548110156114b45781818151811061146057611460613cb3565b602002602001015182601680549050600161147b9190613b62565b8151811061148b5761148b613cb3565b6020026020010181815161149f9190613b62565b905250806114ac81613c42565b915050611444565b509250505090565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060005b83518110156115d45783818151811061151657611516613cb3565b602002602001015182106115745783818151811061153657611536613cb3565b602002602001015182604051602001611559929190918252602082015260400190565b604051602081830303815290604052805190602001206115c0565b8184828151811061158757611587613cb3565b60200260200101516040516020016115a9929190918252602082015260400190565b604051602081830303815290604052805190602001205b9150806115cc81613c42565b9150506114fb565b50600954149392505050565b6015546001600160a01b0316331461160a5760405162461bcd60e51b8152600401610c9090613a09565b60165415801561161a5750601754155b61168c5760405162461bcd60e51b815260206004820152603a60248201527f50617961626c6520476f7665726e616e636520616c726561647920736574212060448201527f546f2073657420616761696e2c207265736574206669727374210000000000006064820152608401610c90565b80518251146116e95760405162461bcd60e51b815260206004820152602360248201527f4164647265737320616e6420536861726573206c656e677468206d69736d617460448201526263682160e81b6064820152608401610c90565b6000805b83518110156117b45782818151811061170857611708613cb3565b60200260200101518261171b9190613b62565b9150601684828151811061173157611731613cb3565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055825160179084908390811061178357611783613cb3565b60209081029190910181015182546001810184556000938452919092200155806117ac81613c42565b9150506116ed565b50806103e814610e525760405162461bcd60e51b815260206004820152601960248201527f546f74616c20536861726573206973206e6f74203130303021000000000000006044820152606401610c90565b600a546001600160a01b031633146118305760405162461bcd60e51b8152600401610c9090613a94565b601d55565b600a546001600160a01b0316331461185f5760405162461bcd60e51b8152600401610c9090613a94565b61113a6000612723565b600a546001600160a01b031633146118935760405162461bcd60e51b8152600401610c9090613a94565b601654158015906118a5575060175415155b6118f15760405162461bcd60e51b815260206004820152601f60248201527f50617961626c6520676f7665726e616e6365206e6f74207365742079657421006044820152606401610c90565b601754601654146119145760405162461bcd60e51b8152600401610c9090613a51565b6000805b60175481101561195f576017818154811061193557611935613cb3565b90600052602060002001548261194b9190613b62565b91508061195781613c42565b915050611918565b50806103e8146119815760405162461bcd60e51b8152600401610c9090613ac9565b4760005b601654811015610e525760006103e8601783815481106119a7576119a7613cb3565b9060005260206000200154846119bd9190613b8e565b6119c79190613b7a565b90506119fa601683815481106119df576119df613cb3565b6000918252602090912001546001600160a01b031682612775565b5080611a0581613c42565b915050611985565b600a546001600160a01b03163314611a375760405162461bcd60e51b8152600401610c9090613a94565b602080546001600160a01b039092166001600160a01b0319928316811790915560218054909216179055565b600a546001600160a01b03163314611a8d5760405162461bcd60e51b8152600401610c9090613a94565b610ca281600955565b60606017805480602002602001604051908101604052809291908181526020018280548015611ae457602002820191906000526020600020905b815481526020019060010190808311611ad0575b5050505050905090565b60135460ff168015611b0257504260145411155b611b595760405162461bcd60e51b815260206004820152602260248201527f536174656c6c697465204d696e74206973206e6f7420656e61626c6564207965604482015261742160f01b6064820152608401610c90565b806011541015611bc75760405162461bcd60e51b815260206004820152603360248201527f4f766572206d6178696d756d206d696e747320706572206164647265737320666044820152726f7220536174656c6c697465204d696e74732160681b6064820152608401610c90565b611bd08161280a565b610ca23282612650565b60018054610cb290613c07565b333214611c2c5760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b6044820152606401610c90565b60195460ff168015611c40575042601a5411155b611c8c5760405162461bcd60e51b815260206004820152601f60248201527f5075626c6963204d696e74206973206e6f7420656e61626c65642079657421006044820152606401610c90565b80601f541015611cde5760405162461bcd60e51b815260206004820152601760248201527f4d6178696d756d2035206d696e747320706572207478210000000000000000006044820152606401610c90565b80601e54611cec9190613b8e565b3414611d305760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642076616c75652073656e742160681b6044820152606401610c90565b610ca23382612650565b610e983383836129da565b6015546001600160a01b03163314611d6f5760405162461bcd60e51b8152600401610c9090613a09565b601580546001600160a01b0319169055565b611d8b84846124fd565b611d9784848484612acf565b50505050565b600a546001600160a01b03163314611dc75760405162461bcd60e51b8152600401610c9090613a94565b6019805460ff1916831515179055601a8190555050565b6000818152600560205260409020546060906001600160a01b0316611e575760405162461bcd60e51b815260206004820152602960248201527f455243373231493a20746f6b656e555249282920546f6b656e20646f6573206e6044820152686f742065786973742160b81b6064820152608401610c90565b6002611e6283612c25565b6003604051602001611e7693929190613901565b6040516020818303038152906040529050919050565b601b5460009060ff168015610ec8575042601c541115905090565b333214611eec5760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b6044820152606401610c90565b601b5460ff168015611f00575042601c5411155b611f575760405162461bcd60e51b815260206004820152602260248201527f57686974656c697374204d696e74206973206e6f7420656e61626c6564207965604482015261742160f01b6064820152608401610c90565b611f6133826114bc565b611fad5760405162461bcd60e51b815260206004820152601860248201527f596f7520617265206e6f742077686974656c69737465642100000000000000006044820152606401610c90565b81602254101561200d5760405162461bcd60e51b815260206004820152602560248201527f4d6178696d756d2033206d696e74732070657220747820666f722077686974656044820152646c6973742160d81b6064820152608401610c90565b33600090815260236020526040902054612028908390613b62565b60225410156120895760405162461bcd60e51b815260206004820152602760248201527f416d6f756e74206578636565647320617661696c61626c6520666f722077686960448201526674656c6973742160c81b6064820152608401610c90565b81601e546120979190613b8e565b34146120db5760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642076616c75652073656e742160681b6044820152606401610c90565b33600090815260236020526040812080548492906120fa908490613b62565b90915550610e9890503383612650565b6000805b60165481101561215e576016818154811061212b5761212b613cb3565b6000918252602090912001546001600160a01b031633141561214c57600191505b8061215681613c42565b91505061210e565b50806121ac5760405162461bcd60e51b815260206004820152601a60248201527f596f7520617265206e6f742061207368617265686f6c646572210000000000006044820152606401610c90565b50336000908152601860205260409020805460ff19166001179055565b600a546001600160a01b031633146121f35760405162461bcd60e51b8152600401610c9090613a94565b60005b6016548110156122ab57601860006016838154811061221757612217613cb3565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff166122995760405162461bcd60e51b815260206004820152602560248201527f456d657267656e63792046756e6374696f6e7320617265206e6f7420756e6c6f604482015264636b65642160d81b6064820152608401610c90565b806122a381613c42565b9150506121f6565b5061113a3347612775565b60606016805480602002602001604051908101604052809291908181526020018280548015611ae457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116122f0575050505050905090565b600a546001600160a01b031633146123415760405162461bcd60e51b8152600401610c9090613a94565b6001600160a01b0381166123a75760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b6064820152608401610c90565b610ca281612723565b60005b8151811015611d97576123e084848484815181106123d3576123d3613cb3565b6020026020010151610e9c565b806123ea81613c42565b9150506123b3565b600a546001600160a01b0316331461241c5760405162461bcd60e51b8152600401610c9090613a94565b601e55565b600a546001600160a01b0316331461244b5760405162461bcd60e51b8152600401610c9090613a94565b601b805460ff1916831515179055601c8190555050565b8051610e989060039060208401906131b3565b6000818152600760205260409020546001600160a01b03838116911614610e9857600081815260076020908152604080832080546001600160a01b0319166001600160a01b038781169182179092556005909352818420549151859492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b60215460405163632447c960e01b81526001600160a01b0384811660048301529091169063632447c990602401600060405180830381600087803b15801561254457600080fd5b505af1158015612558573d6000803e3d6000fd5b505060215460405163632447c960e01b81526001600160a01b038581166004830152909116925063632447c991506024015b600060405180830381600087803b1580156125a457600080fd5b505af11580156125b8573d6000803e3d6000fd5b505050505050565b6125ca3382612d2b565b6126325760405162461bcd60e51b815260206004820152603360248201527f455243373231493a207472616e7366657246726f6d2829205f6973417070726f6044820152727665644f724f776e6572203d2066616c73652160681b6064820152608401610c90565b610e52838383612e26565b8051610e989060029060208401906131b3565b8060045461265e9190613b62565b601d5410156126bb5760405162461bcd60e51b815260206004820152602360248201527f5f6d696e744d616e793a20616d6f756e742065786365656473206d6178537570604482015262706c7960e81b6064820152608401610c90565b60005b818110156126f0576126de8360045460016126d99190613b62565b612ff8565b806126e881613c42565b9150506126be565b5060215460405163632447c960e01b81526001600160a01b0384811660048301529091169063632447c99060240161258a565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146127c2576040519150601f19603f3d011682016040523d82523d6000602084013e6127c7565b606091505b5050905080610e525760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610c90565b600b546001600160a01b031633146128815760405162461bcd60e51b815260206004820152603460248201527f5f736174656c6c6974654d696e743a206d73672e73656e646572206973206e6f6044820152737420536174656c6c6974652053746174696f6e2160601b6064820152608401610c90565b80600c5461288f9190613b62565b6010541015612908576040805162461bcd60e51b81526020600482015260248101919091527f5f736174656c6c6974654d696e743a20616d6f756e745f20726571756573746560448201527f64206f766572206d6178696d756d2061766169616c626c6520746f6b656e73216064820152608401610c90565b32600090815260126020526040902054612923908290613b62565b601154101561299a5760405162461bcd60e51b815260206004820152603b60248201527f5f736174656c6c6974654d696e743a20616d6f756e742065786365656473206d60448201527f696e747320617661696c61626c652070657220616464726573732100000000006064820152608401610c90565b32600090815260126020526040812080548392906129b9908490613b62565b9250508190555080600c60008282546129d29190613b62565b909155505050565b816001600160a01b0316836001600160a01b03161415612a625760405162461bcd60e51b815260206004820152603d60248201527f455243373231493a205f736574417070726f76616c466f72416c6c2829204f7760448201527f6e6572206d757374206e6f7420626520746865204f70657261746f72210000006064820152608401610c90565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612ada848484610e9c565b6001600160a01b0383163b15611d97576000836001600160a01b031663150b7a0233878686604051602401612b129493929190613934565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612b4b91906138e5565b600060405180830381855afa9150503d8060008114612b86576040519150601f19603f3d011682016040523d82523d6000602084013e612b8b565b606091505b50915050600081806020019051810190612ba5919061378a565b9050630a85bd0160e11b6001600160e01b03198216146125b85760405162461bcd60e51b815260206004820152603560248201527f455243373231493a20736166655472616e7366657246726f6d282920746f5f206044820152746e6f742045524337323152656365697661626c652160581b6064820152608401610c90565b606081612c495750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612c735780612c5d81613c42565b9150612c6c9050600a83613b7a565b9150612c4d565b6000816001600160401b03811115612c8d57612c8d613cc9565b6040519080825280601f01601f191660200182016040528015612cb7576020820181803683370190505b5090505b8415612d235781612ccb81613bf0565b9250612cda9050600a86613c5d565b612ce5906030613b62565b60f81b818381518110612cfa57612cfa613cb3565b60200101906001600160f81b031916908160001a905350612d1c600a86613b7a565b9450612cbb565b949350505050565b6000818152600560205260408120546001600160a01b0316612dac5760405162461bcd60e51b815260206004820152603460248201527f455243373231493a205f6973417070726f7665644f724f776e65722829204f776044820152736e6572206973205a65726f20416464726573732160601b6064820152608401610c90565b6000828152600560205260409020546001600160a01b03908116908416811480612def57506000838152600760205260409020546001600160a01b038581169116145b80612d2357506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff16949350505050565b6000818152600560205260409020546001600160a01b03848116911614612ea95760405162461bcd60e51b815260206004820152603160248201527f455243373231493a205f7472616e736665722829205472616e73666572204e6f60448201527074204f776e6572206f6620546f6b656e2160781b6064820152608401610c90565b6001600160a01b038216612f165760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f7472616e736665722829205472616e7366657220746f60448201526d205a65726f20416464726573732160901b6064820152608401610c90565b6000818152600760205260409020546001600160a01b031615612f3e57612f3e600082612475565b600081815260056020908152604080832080546001600160a01b0319166001600160a01b03878116919091179091558616835260069091528120805491612f8483613bf0565b90915550506001600160a01b0382166000908152600660205260408120805491612fad83613c42565b919050555080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001600160a01b03821661305c5760405162461bcd60e51b815260206004820152602560248201527f455243373231493a205f6d696e742829204d696e7420746f205a65726f204164604482015264647265737360d81b6064820152608401610c90565b6000818152600560205260409020546001600160a01b0316156130d85760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f6d696e74282920546f6b656e20746f204d696e74204160448201526d6c7265616479204578697374732160901b6064820152608401610c90565b600081815260056020908152604080832080546001600160a01b0319166001600160a01b03871690811790915583526006909152812080549161311a83613c42565b90915550506004805490600061312f83613c42565b909155505060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516131a791815260200190565b60405180910390a25050565b8280546131bf90613c07565b90600052602060002090601f0160209004810192826131e15760008555613227565b82601f106131fa57805160ff1916838001178555613227565b82800160010185558215613227579182015b8281111561322757825182559160200191906001019061320c565b50613233929150613237565b5090565b5b808211156132335760008155600101613238565b60006001600160401b0383111561326557613265613cc9565b613278601f8401601f1916602001613b0f565b905082815283838301111561328c57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126132b457600080fd5b813560206132c96132c483613b3f565b613b0f565b80838252828201915082860187848660051b89010111156132e957600080fd5b60005b85811015613308578135845292840192908401906001016132ec565b5090979650505050505050565b8035801515811461332557600080fd5b919050565b600082601f83011261333b57600080fd5b61334a8383356020850161324c565b9392505050565b60006020828403121561336357600080fd5b813561334a81613cdf565b6000806040838503121561338157600080fd5b823561338c81613cdf565b9150602083013561339c81613cdf565b809150509250929050565b6000806000606084860312156133bc57600080fd5b83356133c781613cdf565b925060208401356133d781613cdf565b915060408401356001600160401b038111156133f257600080fd5b6133fe868287016132a3565b9150509250925092565b6000806000806080858703121561341e57600080fd5b843561342981613cdf565b9350602085013561343981613cdf565b925060408501356001600160401b038082111561345557600080fd5b613461888389016132a3565b9350606087013591508082111561347757600080fd5b506134848782880161332a565b91505092959194509250565b6000806000606084860312156134a557600080fd5b83356134b081613cdf565b925060208401356134c081613cdf565b929592945050506040919091013590565b600080600080608085870312156134e757600080fd5b84356134f281613cdf565b9350602085013561350281613cdf565b92506040850135915060608501356001600160401b0381111561352457600080fd5b6134848782880161332a565b6000806040838503121561354357600080fd5b823561354e81613cdf565b915060208301356001600160401b0381111561356957600080fd5b613575858286016132a3565b9150509250929050565b6000806040838503121561359257600080fd5b823561359d81613cdf565b91506135ab60208401613315565b90509250929050565b600080604083850312156135c757600080fd5b82356135d281613cdf565b946020939093013593505050565b600080604083850312156135f357600080fd5b82356001600160401b038082111561360a57600080fd5b818501915085601f83011261361e57600080fd5b8135602061362e6132c483613b3f565b8083825282820191508286018a848660051b890101111561364e57600080fd5b600096505b8487101561367a57803561366681613cdf565b835260019690960195918301918301613653565b509650508601359250508082111561369157600080fd5b50613575858286016132a3565b600080604083850312156136b157600080fd5b82356001600160401b03808211156136c857600080fd5b818501915085601f8301126136dc57600080fd5b813560206136ec6132c483613b3f565b8083825282820191508286018a848660051b890101111561370c57600080fd5b600096505b8487101561367a57803561372481613cdf565b835260019690960195918301918301613711565b6000806040838503121561374b57600080fd5b6135d283613315565b60006020828403121561376657600080fd5b5035919050565b60006020828403121561377f57600080fd5b813561334a81613cf4565b60006020828403121561379c57600080fd5b815161334a81613cf4565b6000602082840312156137b957600080fd5b81356001600160401b038111156137cf57600080fd5b8201601f810184136137e057600080fd5b612d238482356020840161324c565b6000806040838503121561380257600080fd5b8235915060208301356001600160401b0381111561356957600080fd5b60008151808452613837816020860160208601613bc4565b601f01601f19169290920160200192915050565b8054600090600181811c908083168061386557607f831692505b602080841082141561388757634e487b7160e01b600052602260045260246000fd5b81801561389b57600181146138ac576138d9565b60ff198616895284890196506138d9565b60008881526020902060005b868110156138d15781548b8201529085019083016138b8565b505084890196505b50505050505092915050565b600082516138f7818460208701613bc4565b9190910192915050565b600061390d828661384b565b845161391d818360208901613bc4565b6139298183018661384b565b979650505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906139679083018461381f565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156139b25783516001600160a01b03168352928401929184019160010161398d565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156139b2578351835292840192918401916001016139da565b60208152600061334a602083018461381f565b60208082526028908201527f50617961626c65476f7665726e616e63653a2043616c6c6572206973206e6f74604082015267205365747465722160c01b606082015260800190565b60208082526023908201527f50617961626c6520676f7665726e616e6365206c656e677468206d69736d617460408201526263682160e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f50617961626c6520476f7665726e616e636520536861726573206973206e6f7460408201526520313030302160d01b606082015260800190565b604051601f8201601f191681016001600160401b0381118282101715613b3757613b37613cc9565b604052919050565b60006001600160401b03821115613b5857613b58613cc9565b5060051b60200190565b60008219821115613b7557613b75613c71565b500190565b600082613b8957613b89613c87565b500490565b6000816000190483118215151615613ba857613ba8613c71565b500290565b600082821015613bbf57613bbf613c71565b500390565b60005b83811015613bdf578181015183820152602001613bc7565b83811115611d975750506000910152565b600081613bff57613bff613c71565b506000190190565b600181811c90821680613c1b57607f821691505b60208210811415613c3c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613c5657613c56613c71565b5060010190565b600082613c6c57613c6c613c87565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610ca257600080fd5b6001600160e01b031981168114610ca257600080fdfea26469706673582212206a5bb9fef147dc8771206a93f3274395eb82e5aad2c06a5cd6d95f38a85ff76d64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103e85760003560e01c80637c45f3df11610208578063c87b56dd11610118578063dc92f8f0116100ab578063f487c6021161007a578063f487c60214610ba3578063f4a0a52814610bc3578063f66ac73014610be3578063faf5fd4414610c03578063fc1b857114610c1957600080fd5b8063dc92f8f014610b11578063e47fa66e14610b26578063e985e9c514610b48578063f2fde38b14610b8357600080fd5b8063d311c80d116100e7578063d311c80d14610aba578063d5abeb0114610ad0578063d663595914610ae6578063d9d2b4cd14610afc57600080fd5b8063c87b56dd14610a5c578063cb9fe58614610a7c578063d04d3f8214610a91578063d2cab05614610aa757600080fd5b8063a0712d681161019b578063acdb4d9f1161016a578063acdb4d9f146109d3578063b4f9431e146109f3578063b69ef8a814610a09578063b88d4fde14610a1c578063c1f730a414610a3c57600080fd5b8063a0712d6814610975578063a22cb46514610988578063a26b1ab1146109a8578063a91f8835146109be57600080fd5b80638da5cb5b116101d75780638da5cb5b1461090a5780639514857d1461092a57806395d89b411461094a5780639970cc291461095f57600080fd5b80637c45f3df146108955780637cb64759146108b55780637ece7fa6146108d55780638b2998f8146108f557600080fd5b806342842e0e116103035780636817c76c1161029657806370a082311161026557806370a08231146107fe578063715018a61461082b57806371ba36121461084057806371cf94a6146108605780637362377b1461088057600080fd5b80636817c76c1461077b5780636e770abe146107915780636e9d287b146107be5780636f8b44b0146107de57600080fd5b80634ee09efb116102d25780634ee09efb146106fb578063524c7ff8146107105780635a23dd99146107255780636352211e1461074557600080fd5b806342842e0e14610679578063438b6300146106995780634959f0f5146106c65780634be66f3e146106db57600080fd5b8063185eb6ec1161037b57806323b872dd1161034a57806323b872dd14610604578063262023701461062457806330176e13146106395780633a3473b61461065957600080fd5b8063185eb6ec14610584578063213cc76c1461059a57806321d7b649146105ba57806323af3126146105d457600080fd5b8063095ea7b3116103b7578063095ea7b3146104f35780630e6aeab0146105135780630edc92e61461054e57806318160ddd1461056e57600080fd5b806301ffc9a71461042c57806302ffaed11461046157806306fdde0314610483578063081812fc146104a557600080fd5b3661042757604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561043857600080fd5b5061044c61044736600461376d565b610c2f565b60405190151581526020015b60405180910390f35b34801561046d57600080fd5b5061048161047c3660046137a7565b610c66565b005b34801561048f57600080fd5b50610498610ca5565b60405161045891906139f6565b3480156104b157600080fd5b506104db6104c0366004613754565b6007602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610458565b3480156104ff57600080fd5b5061048161050e3660046135b4565b610d33565b34801561051f57600080fd5b5061054061052e366004613351565b60126020526000908152604090205481565b604051908152602001610458565b34801561055a57600080fd5b50600b546104db906001600160a01b031681565b34801561057a57600080fd5b5061054060045481565b34801561059057600080fd5b5061054060105481565b3480156105a657600080fd5b506104816105b5366004613738565b610e57565b3480156105c657600080fd5b5060195461044c9060ff1681565b3480156105e057600080fd5b5061044c6105ef366004613351565b60186020526000908152604090205460ff1681565b34801561061057600080fd5b5061048161061f366004613490565b610e9c565b34801561063057600080fd5b5061044c610eb1565b34801561064557600080fd5b506104816106543660046137a7565b610ecd565b34801561066557600080fd5b50610481610674366004613408565b610f00565b34801561068557600080fd5b50610481610694366004613490565b610f4a565b3480156106a557600080fd5b506106b96106b4366004613351565b610f65565b60405161045891906139be565b3480156106d257600080fd5b5061048161109c565b3480156106e757600080fd5b506104816106f63660046135e0565b61113c565b34801561070757600080fd5b5061044c61121f565b34801561071c57600080fd5b506106b961123a565b34801561073157600080fd5b5061044c610740366004613530565b6114bc565b34801561075157600080fd5b506104db610760366004613754565b6005602052600090815260409020546001600160a01b031681565b34801561078757600080fd5b50610540601e5481565b34801561079d57600080fd5b506105406107ac366004613351565b60236020526000908152604090205481565b3480156107ca57600080fd5b506104816107d936600461369e565b6115e0565b3480156107ea57600080fd5b506104816107f9366004613754565b611806565b34801561080a57600080fd5b50610540610819366004613351565b60066020526000908152604090205481565b34801561083757600080fd5b50610481611835565b34801561084c57600080fd5b506021546104db906001600160a01b031681565b34801561086c57600080fd5b506020546104db906001600160a01b031681565b34801561088c57600080fd5b50610481611869565b3480156108a157600080fd5b506104816108b0366004613351565b611a0d565b3480156108c157600080fd5b506104816108d0366004613754565b611a63565b3480156108e157600080fd5b50600d546104db906001600160a01b031681565b34801561090157600080fd5b506106b9611a96565b34801561091657600080fd5b50600a546104db906001600160a01b031681565b34801561093657600080fd5b50610481610945366004613754565b611aee565b34801561095657600080fd5b50610498611bda565b34801561096b57600080fd5b5061054060225481565b610481610983366004613754565b611be7565b34801561099457600080fd5b506104816109a336600461357f565b611d3a565b3480156109b457600080fd5b50610540600f5481565b3480156109ca57600080fd5b50610481611d45565b3480156109df57600080fd5b50600e546104db906001600160a01b031681565b3480156109ff57600080fd5b5061054060115481565b348015610a1557600080fd5b5047610540565b348015610a2857600080fd5b50610481610a373660046134d1565b611d81565b348015610a4857600080fd5b50610481610a57366004613738565b611d9d565b348015610a6857600080fd5b50610498610a77366004613754565b611dde565b348015610a8857600080fd5b5061044c611e8c565b348015610a9d57600080fd5b50610540601f5481565b610481610ab53660046137ef565b611ea7565b348015610ac657600080fd5b50610540601c5481565b348015610adc57600080fd5b50610540601d5481565b348015610af257600080fd5b50610540601a5481565b348015610b0857600080fd5b5061048161210a565b348015610b1d57600080fd5b506104816121c9565b348015610b3257600080fd5b50610b3b6122b6565b6040516104589190613971565b348015610b5457600080fd5b5061044c610b6336600461336e565b600860209081526000928352604080842090915290825290205460ff1681565b348015610b8f57600080fd5b50610481610b9e366004613351565b612317565b348015610baf57600080fd5b50610481610bbe3660046133a7565b6123b0565b348015610bcf57600080fd5b50610481610bde366004613754565b6123f2565b348015610bef57600080fd5b50610481610bfe366004613738565b612421565b348015610c0f57600080fd5b5061054060145481565b348015610c2557600080fd5b50610540600c5481565b60006380ac58cd60e01b6001600160e01b031983161480610c605750635b5e139f60e01b6001600160e01b03198316145b92915050565b600a546001600160a01b03163314610c995760405162461bcd60e51b8152600401610c9090613a94565b60405180910390fd5b610ca281612462565b50565b60008054610cb290613c07565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde90613c07565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b505050505081565b6000818152600560205260409020546001600160a01b03908116908316811415610db35760405162461bcd60e51b815260206004820152602b60248201527f455243373231493a20617070726f766528292043616e6e6f7420617070726f7660448201526a6520796f757273656c662160a81b6064820152608401610c90565b336001600160a01b0382161480610ded57506001600160a01b038116600090815260086020908152604080832033845290915290205460ff165b610e485760405162461bcd60e51b815260206004820152602660248201527f455243373231493a2043616c6c6572206e6f74206f776e6572206f7220417070604482015265726f7665642160d01b6064820152608401610c90565b610e528383612475565b505050565b600a546001600160a01b03163314610e815760405162461bcd60e51b8152600401610c9090613a94565b6013805460ff191683151517905560148190555050565b5050565b610ea683836124fd565b610e528383836125c0565b60195460009060ff168015610ec8575042601a5411155b905090565b600a546001600160a01b03163314610ef75760405162461bcd60e51b8152600401610c9090613a94565b610ca28161263d565b60005b8251811015610f4357610f318585858481518110610f2357610f23613cb3565b602002602001015185611d81565b80610f3b81613c42565b915050610f03565b5050505050565b610e5283838360405180602001604052806000815250611d81565b6001600160a01b038116600090815260066020526040812054606091816001600160401b03811115610f9957610f99613cc9565b604051908082528060200260200182016040528015610fc2578160200160208202803683370190505b50600454909150600090815b81811015611091576000818152600560205260409020546001600160a01b031615801561101e575083611002600187613bad565b8151811061101257611012613cb3565b60200260200101516000145b15611031578161102d81613c42565b9250505b6000818152600560205260409020546001600160a01b038881169116141561107f578084848151811061106657611066613cb3565b60209081029190910101528261107b81613c42565b9350505b8061108981613c42565b915050610fce565b509195945050505050565b6015546001600160a01b031633146110c65760405162461bcd60e51b8152600401610c9090613a09565b601654156111065760168054806110df576110df613c9d565b600082815260209020810160001990810180546001600160a01b03191690550190556110c6565b6017541561113a57601780548061111f5761111f613c9d565b60019003818190600052602060002001600090559055611106565b565b600a546001600160a01b031633146111665760405162461bcd60e51b8152600401610c9090613a94565b80518251146111c55760405162461bcd60e51b815260206004820152602560248201527f6f776e65724d696e744d616e793a206172726179206c656e677468206d69736d604482015264617463682160d81b6064820152608401610c90565b60005b8251811015610e525761120d8382815181106111e6576111e6613cb3565b602002602001015183838151811061120057611200613cb3565b6020026020010151612650565b8061121781613c42565b9150506111c8565b60135460009060ff168015610ec85750426014541115905090565b600a546060906001600160a01b031633146112675760405162461bcd60e51b8152600401610c9090613a94565b60165415801590611279575060175415155b6112c55760405162461bcd60e51b815260206004820152601f60248201527f50617961626c6520676f7665726e616e6365206e6f74207365742079657421006044820152606401610c90565b601754601654146112e85760405162461bcd60e51b8152600401610c9090613a51565b6000805b601754811015611333576017818154811061130957611309613cb3565b90600052602060002001548261131f9190613b62565b91508061132b81613c42565b9150506112ec565b50806103e8146113555760405162461bcd60e51b8152600401610c9090613ac9565b6016544790600090611368906002613b62565b6001600160401b0381111561137f5761137f613cc9565b6040519080825280602002602001820160405280156113a8578160200160208202803683370190505b50905060005b60165481101561141d576103e8601782815481106113ce576113ce613cb3565b9060005260206000200154846113e49190613b8e565b6113ee9190613b7a565b82828151811061140057611400613cb3565b60209081029190910101528061141581613c42565b9150506113ae565b50601654815183918391811061143557611435613cb3565b60200260200101818152505060005b6016548110156114b45781818151811061146057611460613cb3565b602002602001015182601680549050600161147b9190613b62565b8151811061148b5761148b613cb3565b6020026020010181815161149f9190613b62565b905250806114ac81613c42565b915050611444565b509250505090565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060005b83518110156115d45783818151811061151657611516613cb3565b602002602001015182106115745783818151811061153657611536613cb3565b602002602001015182604051602001611559929190918252602082015260400190565b604051602081830303815290604052805190602001206115c0565b8184828151811061158757611587613cb3565b60200260200101516040516020016115a9929190918252602082015260400190565b604051602081830303815290604052805190602001205b9150806115cc81613c42565b9150506114fb565b50600954149392505050565b6015546001600160a01b0316331461160a5760405162461bcd60e51b8152600401610c9090613a09565b60165415801561161a5750601754155b61168c5760405162461bcd60e51b815260206004820152603a60248201527f50617961626c6520476f7665726e616e636520616c726561647920736574212060448201527f546f2073657420616761696e2c207265736574206669727374210000000000006064820152608401610c90565b80518251146116e95760405162461bcd60e51b815260206004820152602360248201527f4164647265737320616e6420536861726573206c656e677468206d69736d617460448201526263682160e81b6064820152608401610c90565b6000805b83518110156117b45782818151811061170857611708613cb3565b60200260200101518261171b9190613b62565b9150601684828151811061173157611731613cb3565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055825160179084908390811061178357611783613cb3565b60209081029190910181015182546001810184556000938452919092200155806117ac81613c42565b9150506116ed565b50806103e814610e525760405162461bcd60e51b815260206004820152601960248201527f546f74616c20536861726573206973206e6f74203130303021000000000000006044820152606401610c90565b600a546001600160a01b031633146118305760405162461bcd60e51b8152600401610c9090613a94565b601d55565b600a546001600160a01b0316331461185f5760405162461bcd60e51b8152600401610c9090613a94565b61113a6000612723565b600a546001600160a01b031633146118935760405162461bcd60e51b8152600401610c9090613a94565b601654158015906118a5575060175415155b6118f15760405162461bcd60e51b815260206004820152601f60248201527f50617961626c6520676f7665726e616e6365206e6f74207365742079657421006044820152606401610c90565b601754601654146119145760405162461bcd60e51b8152600401610c9090613a51565b6000805b60175481101561195f576017818154811061193557611935613cb3565b90600052602060002001548261194b9190613b62565b91508061195781613c42565b915050611918565b50806103e8146119815760405162461bcd60e51b8152600401610c9090613ac9565b4760005b601654811015610e525760006103e8601783815481106119a7576119a7613cb3565b9060005260206000200154846119bd9190613b8e565b6119c79190613b7a565b90506119fa601683815481106119df576119df613cb3565b6000918252602090912001546001600160a01b031682612775565b5080611a0581613c42565b915050611985565b600a546001600160a01b03163314611a375760405162461bcd60e51b8152600401610c9090613a94565b602080546001600160a01b039092166001600160a01b0319928316811790915560218054909216179055565b600a546001600160a01b03163314611a8d5760405162461bcd60e51b8152600401610c9090613a94565b610ca281600955565b60606017805480602002602001604051908101604052809291908181526020018280548015611ae457602002820191906000526020600020905b815481526020019060010190808311611ad0575b5050505050905090565b60135460ff168015611b0257504260145411155b611b595760405162461bcd60e51b815260206004820152602260248201527f536174656c6c697465204d696e74206973206e6f7420656e61626c6564207965604482015261742160f01b6064820152608401610c90565b806011541015611bc75760405162461bcd60e51b815260206004820152603360248201527f4f766572206d6178696d756d206d696e747320706572206164647265737320666044820152726f7220536174656c6c697465204d696e74732160681b6064820152608401610c90565b611bd08161280a565b610ca23282612650565b60018054610cb290613c07565b333214611c2c5760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b6044820152606401610c90565b60195460ff168015611c40575042601a5411155b611c8c5760405162461bcd60e51b815260206004820152601f60248201527f5075626c6963204d696e74206973206e6f7420656e61626c65642079657421006044820152606401610c90565b80601f541015611cde5760405162461bcd60e51b815260206004820152601760248201527f4d6178696d756d2035206d696e747320706572207478210000000000000000006044820152606401610c90565b80601e54611cec9190613b8e565b3414611d305760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642076616c75652073656e742160681b6044820152606401610c90565b610ca23382612650565b610e983383836129da565b6015546001600160a01b03163314611d6f5760405162461bcd60e51b8152600401610c9090613a09565b601580546001600160a01b0319169055565b611d8b84846124fd565b611d9784848484612acf565b50505050565b600a546001600160a01b03163314611dc75760405162461bcd60e51b8152600401610c9090613a94565b6019805460ff1916831515179055601a8190555050565b6000818152600560205260409020546060906001600160a01b0316611e575760405162461bcd60e51b815260206004820152602960248201527f455243373231493a20746f6b656e555249282920546f6b656e20646f6573206e6044820152686f742065786973742160b81b6064820152608401610c90565b6002611e6283612c25565b6003604051602001611e7693929190613901565b6040516020818303038152906040529050919050565b601b5460009060ff168015610ec8575042601c541115905090565b333214611eec5760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b6044820152606401610c90565b601b5460ff168015611f00575042601c5411155b611f575760405162461bcd60e51b815260206004820152602260248201527f57686974656c697374204d696e74206973206e6f7420656e61626c6564207965604482015261742160f01b6064820152608401610c90565b611f6133826114bc565b611fad5760405162461bcd60e51b815260206004820152601860248201527f596f7520617265206e6f742077686974656c69737465642100000000000000006044820152606401610c90565b81602254101561200d5760405162461bcd60e51b815260206004820152602560248201527f4d6178696d756d2033206d696e74732070657220747820666f722077686974656044820152646c6973742160d81b6064820152608401610c90565b33600090815260236020526040902054612028908390613b62565b60225410156120895760405162461bcd60e51b815260206004820152602760248201527f416d6f756e74206578636565647320617661696c61626c6520666f722077686960448201526674656c6973742160c81b6064820152608401610c90565b81601e546120979190613b8e565b34146120db5760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642076616c75652073656e742160681b6044820152606401610c90565b33600090815260236020526040812080548492906120fa908490613b62565b90915550610e9890503383612650565b6000805b60165481101561215e576016818154811061212b5761212b613cb3565b6000918252602090912001546001600160a01b031633141561214c57600191505b8061215681613c42565b91505061210e565b50806121ac5760405162461bcd60e51b815260206004820152601a60248201527f596f7520617265206e6f742061207368617265686f6c646572210000000000006044820152606401610c90565b50336000908152601860205260409020805460ff19166001179055565b600a546001600160a01b031633146121f35760405162461bcd60e51b8152600401610c9090613a94565b60005b6016548110156122ab57601860006016838154811061221757612217613cb3565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff166122995760405162461bcd60e51b815260206004820152602560248201527f456d657267656e63792046756e6374696f6e7320617265206e6f7420756e6c6f604482015264636b65642160d81b6064820152608401610c90565b806122a381613c42565b9150506121f6565b5061113a3347612775565b60606016805480602002602001604051908101604052809291908181526020018280548015611ae457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116122f0575050505050905090565b600a546001600160a01b031633146123415760405162461bcd60e51b8152600401610c9090613a94565b6001600160a01b0381166123a75760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b6064820152608401610c90565b610ca281612723565b60005b8151811015611d97576123e084848484815181106123d3576123d3613cb3565b6020026020010151610e9c565b806123ea81613c42565b9150506123b3565b600a546001600160a01b0316331461241c5760405162461bcd60e51b8152600401610c9090613a94565b601e55565b600a546001600160a01b0316331461244b5760405162461bcd60e51b8152600401610c9090613a94565b601b805460ff1916831515179055601c8190555050565b8051610e989060039060208401906131b3565b6000818152600760205260409020546001600160a01b03838116911614610e9857600081815260076020908152604080832080546001600160a01b0319166001600160a01b038781169182179092556005909352818420549151859492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b60215460405163632447c960e01b81526001600160a01b0384811660048301529091169063632447c990602401600060405180830381600087803b15801561254457600080fd5b505af1158015612558573d6000803e3d6000fd5b505060215460405163632447c960e01b81526001600160a01b038581166004830152909116925063632447c991506024015b600060405180830381600087803b1580156125a457600080fd5b505af11580156125b8573d6000803e3d6000fd5b505050505050565b6125ca3382612d2b565b6126325760405162461bcd60e51b815260206004820152603360248201527f455243373231493a207472616e7366657246726f6d2829205f6973417070726f6044820152727665644f724f776e6572203d2066616c73652160681b6064820152608401610c90565b610e52838383612e26565b8051610e989060029060208401906131b3565b8060045461265e9190613b62565b601d5410156126bb5760405162461bcd60e51b815260206004820152602360248201527f5f6d696e744d616e793a20616d6f756e742065786365656473206d6178537570604482015262706c7960e81b6064820152608401610c90565b60005b818110156126f0576126de8360045460016126d99190613b62565b612ff8565b806126e881613c42565b9150506126be565b5060215460405163632447c960e01b81526001600160a01b0384811660048301529091169063632447c99060240161258a565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146127c2576040519150601f19603f3d011682016040523d82523d6000602084013e6127c7565b606091505b5050905080610e525760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610c90565b600b546001600160a01b031633146128815760405162461bcd60e51b815260206004820152603460248201527f5f736174656c6c6974654d696e743a206d73672e73656e646572206973206e6f6044820152737420536174656c6c6974652053746174696f6e2160601b6064820152608401610c90565b80600c5461288f9190613b62565b6010541015612908576040805162461bcd60e51b81526020600482015260248101919091527f5f736174656c6c6974654d696e743a20616d6f756e745f20726571756573746560448201527f64206f766572206d6178696d756d2061766169616c626c6520746f6b656e73216064820152608401610c90565b32600090815260126020526040902054612923908290613b62565b601154101561299a5760405162461bcd60e51b815260206004820152603b60248201527f5f736174656c6c6974654d696e743a20616d6f756e742065786365656473206d60448201527f696e747320617661696c61626c652070657220616464726573732100000000006064820152608401610c90565b32600090815260126020526040812080548392906129b9908490613b62565b9250508190555080600c60008282546129d29190613b62565b909155505050565b816001600160a01b0316836001600160a01b03161415612a625760405162461bcd60e51b815260206004820152603d60248201527f455243373231493a205f736574417070726f76616c466f72416c6c2829204f7760448201527f6e6572206d757374206e6f7420626520746865204f70657261746f72210000006064820152608401610c90565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612ada848484610e9c565b6001600160a01b0383163b15611d97576000836001600160a01b031663150b7a0233878686604051602401612b129493929190613934565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612b4b91906138e5565b600060405180830381855afa9150503d8060008114612b86576040519150601f19603f3d011682016040523d82523d6000602084013e612b8b565b606091505b50915050600081806020019051810190612ba5919061378a565b9050630a85bd0160e11b6001600160e01b03198216146125b85760405162461bcd60e51b815260206004820152603560248201527f455243373231493a20736166655472616e7366657246726f6d282920746f5f206044820152746e6f742045524337323152656365697661626c652160581b6064820152608401610c90565b606081612c495750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612c735780612c5d81613c42565b9150612c6c9050600a83613b7a565b9150612c4d565b6000816001600160401b03811115612c8d57612c8d613cc9565b6040519080825280601f01601f191660200182016040528015612cb7576020820181803683370190505b5090505b8415612d235781612ccb81613bf0565b9250612cda9050600a86613c5d565b612ce5906030613b62565b60f81b818381518110612cfa57612cfa613cb3565b60200101906001600160f81b031916908160001a905350612d1c600a86613b7a565b9450612cbb565b949350505050565b6000818152600560205260408120546001600160a01b0316612dac5760405162461bcd60e51b815260206004820152603460248201527f455243373231493a205f6973417070726f7665644f724f776e65722829204f776044820152736e6572206973205a65726f20416464726573732160601b6064820152608401610c90565b6000828152600560205260409020546001600160a01b03908116908416811480612def57506000838152600760205260409020546001600160a01b038581169116145b80612d2357506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff16949350505050565b6000818152600560205260409020546001600160a01b03848116911614612ea95760405162461bcd60e51b815260206004820152603160248201527f455243373231493a205f7472616e736665722829205472616e73666572204e6f60448201527074204f776e6572206f6620546f6b656e2160781b6064820152608401610c90565b6001600160a01b038216612f165760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f7472616e736665722829205472616e7366657220746f60448201526d205a65726f20416464726573732160901b6064820152608401610c90565b6000818152600760205260409020546001600160a01b031615612f3e57612f3e600082612475565b600081815260056020908152604080832080546001600160a01b0319166001600160a01b03878116919091179091558616835260069091528120805491612f8483613bf0565b90915550506001600160a01b0382166000908152600660205260408120805491612fad83613c42565b919050555080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001600160a01b03821661305c5760405162461bcd60e51b815260206004820152602560248201527f455243373231493a205f6d696e742829204d696e7420746f205a65726f204164604482015264647265737360d81b6064820152608401610c90565b6000818152600560205260409020546001600160a01b0316156130d85760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f6d696e74282920546f6b656e20746f204d696e74204160448201526d6c7265616479204578697374732160901b6064820152608401610c90565b600081815260056020908152604080832080546001600160a01b0319166001600160a01b03871690811790915583526006909152812080549161311a83613c42565b90915550506004805490600061312f83613c42565b909155505060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516131a791815260200190565b60405180910390a25050565b8280546131bf90613c07565b90600052602060002090601f0160209004810192826131e15760008555613227565b82601f106131fa57805160ff1916838001178555613227565b82800160010185558215613227579182015b8281111561322757825182559160200191906001019061320c565b50613233929150613237565b5090565b5b808211156132335760008155600101613238565b60006001600160401b0383111561326557613265613cc9565b613278601f8401601f1916602001613b0f565b905082815283838301111561328c57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126132b457600080fd5b813560206132c96132c483613b3f565b613b0f565b80838252828201915082860187848660051b89010111156132e957600080fd5b60005b85811015613308578135845292840192908401906001016132ec565b5090979650505050505050565b8035801515811461332557600080fd5b919050565b600082601f83011261333b57600080fd5b61334a8383356020850161324c565b9392505050565b60006020828403121561336357600080fd5b813561334a81613cdf565b6000806040838503121561338157600080fd5b823561338c81613cdf565b9150602083013561339c81613cdf565b809150509250929050565b6000806000606084860312156133bc57600080fd5b83356133c781613cdf565b925060208401356133d781613cdf565b915060408401356001600160401b038111156133f257600080fd5b6133fe868287016132a3565b9150509250925092565b6000806000806080858703121561341e57600080fd5b843561342981613cdf565b9350602085013561343981613cdf565b925060408501356001600160401b038082111561345557600080fd5b613461888389016132a3565b9350606087013591508082111561347757600080fd5b506134848782880161332a565b91505092959194509250565b6000806000606084860312156134a557600080fd5b83356134b081613cdf565b925060208401356134c081613cdf565b929592945050506040919091013590565b600080600080608085870312156134e757600080fd5b84356134f281613cdf565b9350602085013561350281613cdf565b92506040850135915060608501356001600160401b0381111561352457600080fd5b6134848782880161332a565b6000806040838503121561354357600080fd5b823561354e81613cdf565b915060208301356001600160401b0381111561356957600080fd5b613575858286016132a3565b9150509250929050565b6000806040838503121561359257600080fd5b823561359d81613cdf565b91506135ab60208401613315565b90509250929050565b600080604083850312156135c757600080fd5b82356135d281613cdf565b946020939093013593505050565b600080604083850312156135f357600080fd5b82356001600160401b038082111561360a57600080fd5b818501915085601f83011261361e57600080fd5b8135602061362e6132c483613b3f565b8083825282820191508286018a848660051b890101111561364e57600080fd5b600096505b8487101561367a57803561366681613cdf565b835260019690960195918301918301613653565b509650508601359250508082111561369157600080fd5b50613575858286016132a3565b600080604083850312156136b157600080fd5b82356001600160401b03808211156136c857600080fd5b818501915085601f8301126136dc57600080fd5b813560206136ec6132c483613b3f565b8083825282820191508286018a848660051b890101111561370c57600080fd5b600096505b8487101561367a57803561372481613cdf565b835260019690960195918301918301613711565b6000806040838503121561374b57600080fd5b6135d283613315565b60006020828403121561376657600080fd5b5035919050565b60006020828403121561377f57600080fd5b813561334a81613cf4565b60006020828403121561379c57600080fd5b815161334a81613cf4565b6000602082840312156137b957600080fd5b81356001600160401b038111156137cf57600080fd5b8201601f810184136137e057600080fd5b612d238482356020840161324c565b6000806040838503121561380257600080fd5b8235915060208301356001600160401b0381111561356957600080fd5b60008151808452613837816020860160208601613bc4565b601f01601f19169290920160200192915050565b8054600090600181811c908083168061386557607f831692505b602080841082141561388757634e487b7160e01b600052602260045260246000fd5b81801561389b57600181146138ac576138d9565b60ff198616895284890196506138d9565b60008881526020902060005b868110156138d15781548b8201529085019083016138b8565b505084890196505b50505050505092915050565b600082516138f7818460208701613bc4565b9190910192915050565b600061390d828661384b565b845161391d818360208901613bc4565b6139298183018661384b565b979650505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906139679083018461381f565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156139b25783516001600160a01b03168352928401929184019160010161398d565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156139b2578351835292840192918401916001016139da565b60208152600061334a602083018461381f565b60208082526028908201527f50617961626c65476f7665726e616e63653a2043616c6c6572206973206e6f74604082015267205365747465722160c01b606082015260800190565b60208082526023908201527f50617961626c6520676f7665726e616e6365206c656e677468206d69736d617460408201526263682160e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f50617961626c6520476f7665726e616e636520536861726573206973206e6f7460408201526520313030302160d01b606082015260800190565b604051601f8201601f191681016001600160401b0381118282101715613b3757613b37613cc9565b604052919050565b60006001600160401b03821115613b5857613b58613cc9565b5060051b60200190565b60008219821115613b7557613b75613c71565b500190565b600082613b8957613b89613c87565b500490565b6000816000190483118215151615613ba857613ba8613c71565b500290565b600082821015613bbf57613bbf613c71565b500390565b60005b83811015613bdf578181015183820152602001613bc7565b83811115611d975750506000910152565b600081613bff57613bff613c71565b506000190190565b600181811c90821680613c1b57607f821691505b60208210811415613c3c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613c5657613c56613c71565b5060010190565b600082613c6c57613c6c613c87565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610ca257600080fd5b6001600160e01b031981168114610ca257600080fdfea26469706673582212206a5bb9fef147dc8771206a93f3274395eb82e5aad2c06a5cd6d95f38a85ff76d64736f6c63430008070033

Deployed Bytecode Sourcemap

18897:4109:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9968:31;;;9977:10;13899:51:1;;9989:9:0;13981:2:1;13966:18;;13959:34;9968:31:0;;13872:18:1;9968:31:0;;;;;;;18897:4109;;;;;6344:159;;;;;;;;;;-1:-1:-1;6344:159:0;;;;;:::i;:::-;;:::i;:::-;;;15485:14:1;;15478:22;15460:41;;15448:2;15433:18;6344:159:0;;;;;;;;22890:113;;;;;;;;;;-1:-1:-1;22890:113:0;;;;;:::i;:::-;;:::i;:::-;;246:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;599:46::-;;;;;;;;;;-1:-1:-1;599:46:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;599:46:0;;;;;;-1:-1:-1;;;;;13188:32:1;;;13170:51;;13158:2;13143:18;599:46:0;13024:203:1;4341:352:0;;;;;;;;;;-1:-1:-1;4341:352:0;;;;;:::i;:::-;;:::i;18217:51::-;;;;;;;;;;-1:-1:-1;18217:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;31214:25:1;;;31202:2;31187:18;18217:51:0;31068:177:1;17741:83:0;;;;;;;;;;-1:-1:-1;17741:83:0;;;;-1:-1:-1;;;;;17741:83:0;;;461:26;;;;;;;;;;;;;;;;18124:37;;;;;;;;;;;;;;;;19796:108;;;;;;;;;;-1:-1:-1;19796:108:0;;;;;:::i;:::-;;:::i;16003:23::-;;;;;;;;;;-1:-1:-1;16003:23:0;;;;;;;;10152:58;;;;;;;;;;-1:-1:-1;10152:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22332:187;;;;;;;;;;-1:-1:-1;22332:187:0;;;;;:::i;:::-;;:::i;16347:127::-;;;;;;;;;;;;;:::i;22779:105::-;;;;;;;;;;-1:-1:-1;22779:105:0;;;;;:::i;:::-;;:::i;6047:263::-;;;;;;;;;;-1:-1:-1;6047:263:0;;;;;:::i;:::-;;:::i;5620:148::-;;;;;;;;;;-1:-1:-1;5620:148:0;;;;;:::i;:::-;;:::i;6968:538::-;;;;;;;;;;-1:-1:-1;6968:538:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11222:301::-;;;;;;;;;;;;;:::i;20507:303::-;;;;;;;;;;-1:-1:-1;20507:303:0;;;;;:::i;:::-;;:::i;17521:143::-;;;;;;;;;;;;;:::i;13225:1753::-;;;;;;;;;;;;;:::i;7701:405::-;;;;;;;;;;-1:-1:-1;7701:405:0;;;;;:::i;:::-;;:::i;495:42::-;;;;;;;;;;-1:-1:-1;495:42:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;495:42:0;;;19174:37;;;;;;;;;;;;;;;;21166:52;;;;;;;;;;-1:-1:-1;21166:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;10484:732;;;;;;;;;;-1:-1:-1;10484:732:0;;;;;:::i;:::-;;:::i;19706:82::-;;;;;;;;;;-1:-1:-1;19706:82:0;;;;;:::i;:::-;;:::i;545:44::-;;;;;;;;;;-1:-1:-1;545:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;9005:105;;;;;;;;;;;;;:::i;19330:21::-;;;;;;;;;;-1:-1:-1;19330:21:0;;;;-1:-1:-1;;;;;19330:21:0;;;19295:28;;;;;;;;;;-1:-1:-1;19295:28:0;;;;-1:-1:-1;;;;;19295:28:0;;;11970:1247;;;;;;;;;;;;;:::i;19358:113::-;;;;;;;;;;-1:-1:-1;19358:113:0;;;;;:::i;:::-;;:::i;19511:95::-;;;;;;;;;;-1:-1:-1;19511:95:0;;;;;:::i;:::-;;:::i;17913:75::-;;;;;;;;;;-1:-1:-1;17913:75:0;;;;-1:-1:-1;;;;;17913:75:0;;;11811:124;;;;;;;;;;;;;:::i;8311:20::-;;;;;;;;;;-1:-1:-1;8311:20:0;;;;-1:-1:-1;;;;;8311:20:0;;;20841:255;;;;;;;;;;-1:-1:-1;20841:255:0;;;;;:::i;:::-;;:::i;266:20::-;;;;;;;;;;;;;:::i;21127:32::-;;;;;;;;;;;;;;;;21838:278;;;;;;:::i;:::-;;:::i;4699:148::-;;;;;;;;;;-1:-1:-1;4699:148:0;;;;;:::i;:::-;;:::i;18076:41::-;;;;;;;;;;;;;;;;9715:135;;;;;;;;;;;;;:::i;17995:74::-;;;;;;;;;;-1:-1:-1;17995:74:0;;;;-1:-1:-1;;;;;17995:74:0;;;18168:36;;;;;;;;;;;;;;;;11565:96;;;;;;;;;;-1:-1:-1;11632:21:0;11565:96;;22525:222;;;;;;;;;;-1:-1:-1;22525:222:0;;;;;:::i;:::-;;:::i;20023:102::-;;;;;;;;;;-1:-1:-1;20023:102:0;;;;;:::i;:::-;;:::i;6511:281::-;;;;;;;;;;-1:-1:-1;6511:281:0;;;;;:::i;:::-;;:::i;16919:136::-;;;;;;;;;;;;;:::i;19218:38::-;;;;;;;;;;;;;;;;21232:578;;;;;;:::i;:::-;;:::i;16576:33::-;;;;;;;;;;;;;;;;19136:31;;;;;;;;;;;;;;;;16028:30;;;;;;;;;;;;;;;;15369:136;;;;;;;;;;;;;:::i;15800:137::-;;;;;;;;;;;;;:::i;11667:138::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;653:68::-;;;;;;;;;;-1:-1:-1;653:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;8792:207;;;;;;;;;;-1:-1:-1;8792:207:0;;;;;:::i;:::-;;:::i;5813:228::-;;;;;;;;;;-1:-1:-1;5813:228:0;;;;;:::i;:::-;;:::i;19612:88::-;;;;;;;;;;-1:-1:-1;19612:88:0;;;;;:::i;:::-;;:::i;19910:107::-;;;;;;;;;;-1:-1:-1;19910:107:0;;;;;:::i;:::-;;:::i;17164:33::-;;;;;;;;;;;;;;;;17831;;;;;;;;;;;;;;;;6344:159;6413:4;-1:-1:-1;;;;;;;;;6438:26:0;;;;:56;;-1:-1:-1;;;;;;;;;;6468:26:0;;;6438:56;6430:65;6344:159;-1:-1:-1;;6344:159:0:o;22890:113::-;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;;;;;;;;;22969:26:::1;22990:4;22969:20;:26::i;:::-;22890:113:::0;:::o;246:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4341:352::-;4415:14;4432:17;;;:7;:17;;;;;;-1:-1:-1;;;;;4432:17:0;;;;4468:13;;;;;4460:69;;;;-1:-1:-1;;;4460:69:0;;22434:2:1;4460:69:0;;;22416:21:1;22473:2;22453:18;;;22446:30;22512:34;22492:18;;;22485:62;-1:-1:-1;;;22563:18:1;;;22556:41;22614:19;;4460:69:0;22232:407:1;4460:69:0;4548:10;-1:-1:-1;;;;;4548:20:0;;;;:60;;-1:-1:-1;;;;;;4572:24:0;;;;;;:16;:24;;;;;;;;4597:10;4572:36;;;;;;;;;;4548:60;4540:111;;;;-1:-1:-1;;;4540:111:0;;22027:2:1;4540:111:0;;;22009:21:1;22066:2;22046:18;;;22039:30;22105:34;22085:18;;;22078:62;-1:-1:-1;;;22156:18:1;;;22149:36;22202:19;;4540:111:0;21825:402:1;4540:111:0;4662:23;4671:3;4676:8;4662;:23::i;:::-;4404:289;4341:352;;:::o;19796:108::-;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;17278:21;:29;;-1:-1:-1;;17278:29:0;;;;;;;17309:18;:26;;;19796:108;;:::o;19870:31::-:1;19796:108:::0;;:::o;22332:187::-;22427:31;22447:5;22454:3;22427:19;:31::i;:::-;22469:42;22490:5;22497:3;22502:8;22469:20;:42::i;16347:127::-;16422:11;;16398:4;;16422:11;;:49;;;;;16456:15;16437;;:34;;16422:49;16415:56;;16347:127;:::o;22779:105::-;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;22854:22:::1;22871:4;22854:16;:22::i;6047:263::-:0;6185:9;6180:123;6204:9;:16;6200:1;:20;6180:123;;;6242:49;6259:5;6266:3;6271:9;6281:1;6271:12;;;;;;;;:::i;:::-;;;;;;;6285:5;6242:16;:49::i;:::-;6222:3;;;;:::i;:::-;;;;6180:123;;;;6047:263;;;;:::o;5620:148::-;5718:42;5735:5;5742:3;5747:8;5718:42;;;;;;;;;;;;:16;:42::i;6968:538::-;-1:-1:-1;;;;;7086:19:0;;7067:16;7086:19;;;:9;:19;;;;;;7038:16;;7086:19;-1:-1:-1;;;;;7143:24:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7143:24:0;-1:-1:-1;7226:11:0;;7116:51;;-1:-1:-1;7178:14:0;;;7248:226;7272:12;7268:1;:16;7248:226;;;7332:3;7310:10;;;:7;:10;;;;;;-1:-1:-1;;;;;7310:10:0;:26;:56;;;;-1:-1:-1;7340:7:0;7348:12;7359:1;7348:8;:12;:::i;:::-;7340:21;;;;;;;;:::i;:::-;;;;;;;7365:1;7340:26;7310:56;7306:81;;;7370:14;;;;:::i;:::-;;;;7306:81;7405:10;;;;:7;:10;;;;;;-1:-1:-1;;;;;7405:22:0;;;:10;;:22;7401:62;;;7449:1;7431:7;7439:6;7431:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;7452:8;;;;:::i;:::-;;;;7401:62;7286:3;;;;:::i;:::-;;;;7248:226;;;-1:-1:-1;7491:7:0;;6968:538;-1:-1:-1;;;;;6968:538:0:o;11222:301::-;9634:24;;-1:-1:-1;;;;;9634:24:0;9620:10;:38;9612:91;;;;-1:-1:-1;;;9612:91:0;;;;;;;:::i;:::-;11321:27:::1;:34:::0;:39;11314:99:::1;;11377:27;:33;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;11377:33:0;;;;;-1:-1:-1;;;;;;11377:33:0::1;::::0;;;;;11314:99:::1;;;11430:24;:31:::0;:36;11423:93:::1;;11483:24;:30;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11423:93;;;11222:301::o:0;20507:303::-;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;20633:8:::1;:15;20618:4;:11;:30;20610:80;;;::::0;-1:-1:-1;;;20610:80:0;;28830:2:1;20610:80:0::1;::::0;::::1;28812:21:1::0;28869:2;28849:18;;;28842:30;28908:34;28888:18;;;28881:62;-1:-1:-1;;;28959:18:1;;;28952:35;29004:19;;20610:80:0::1;28628:401:1::0;20610:80:0::1;20706:9;20701:102;20725:4;:11;20721:1;:15;20701:102;;;20759:31;20769:4;20774:1;20769:7;;;;;;;;:::i;:::-;;;;;;;20778:8;20787:1;20778:11;;;;;;;;:::i;:::-;;;;;;;20759:9;:31::i;:::-;20738:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20701:102;;17521:143:::0;17599:21;;17575:4;;17599:21;;:62;;;;;17646:15;17624:18;;:37;;17592:69;;17521:143;:::o;13225:1753::-;8506:5;;13287:16;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;13388:27:::1;:34:::0;:38;;;;:77:::1;;-1:-1:-1::0;13430:24:0::1;:31:::0;:35;;13388:77:::1;13380:121;;;::::0;-1:-1:-1;;;13380:121:0;;27275:2:1;13380:121:0::1;::::0;::::1;27257:21:1::0;27314:2;27294:18;;;27287:30;27353:33;27333:18;;;27326:61;27404:18;;13380:121:0::1;27073:355:1::0;13380:121:0::1;13596:24;:31:::0;13558:27:::1;:34:::0;:69:::1;13550:117;;;;-1:-1:-1::0;;;13550:117:0::1;;;;;;;:::i;:::-;13756:27;::::0;13794:130:::1;13818:24;:31:::0;13814:35;::::1;13794:130;;;13894:24;13919:1;13894:27;;;;;;;;:::i;:::-;;;;;;;;;13871:50;;;;;:::i;:::-;::::0;-1:-1:-1;13851:3:0;::::1;::::0;::::1;:::i;:::-;;;;13794:130;;;;13942:19;13965:4;13942:27;13934:78;;;;-1:-1:-1::0;;;13934:78:0::1;;;;;;;:::i;:::-;14296:27;:34:::0;14216:21:::1;::::0;14196:17:::1;::::0;14296:38:::1;::::0;14333:1:::1;14296:38;:::i;:::-;-1:-1:-1::0;;;;;14281:54:0::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;14281:54:0::1;;14249:86;;14416:9;14411:162;14435:27;:34:::0;14431:38;::::1;14411:162;;;14555:4;14524:24;14549:1;14524:27;;;;;;;;:::i;:::-;;;;;;;;;14512:9;:39;;;;:::i;:::-;14511:48;;;;:::i;:::-;14491:12;14504:1;14491:15;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:70;14471:3;::::1;::::0;::::1;:::i;:::-;;;;14411:162;;;-1:-1:-1::0;14687:27:0::1;:34:::0;14674:48;;14725:9;;14674:12;;:48;::::1;;;;;:::i;:::-;;;;;;:60;;;::::0;::::1;14750:9;14745:154;14769:27;:34:::0;14765:38;::::1;14745:154;;;14881:12;14894:1;14881:15;;;;;;;;:::i;:::-;;;;;;;14825:12;14838:27;:34;;;;14875:1;14838:38;;;;:::i;:::-;14825:52;;;;;;;;:::i;:::-;;;;;;:71;;;;;;;:::i;:::-;::::0;;-1:-1:-1;14805:3:0;::::1;::::0;::::1;:::i;:::-;;;;14745:154;;;-1:-1:-1::0;14958:12:0;-1:-1:-1;;;13225:1753:0;:::o;7701:405::-;7831:26;;-1:-1:-1;;11737:2:1;11733:15;;;11729:53;7831:26:0;;;11717:66:1;7788:4:0;;;;11799:12:1;;7831:26:0;;;;;;;;;;;;7821:37;;;;;;7805:53;;7874:9;7869:192;7893:6;:13;7889:1;:17;7869:192;;;7944:6;7951:1;7944:9;;;;;;;;:::i;:::-;;;;;;;7936:5;:17;:113;;8031:6;8038:1;8031:9;;;;;;;;:::i;:::-;;;;;;;8042:5;8014:34;;;;;;;;11979:19:1;;;12023:2;12014:12;;12007:28;12060:2;12051:12;;11822:247;8014:34:0;;;;;;;;;;;;;8004:45;;;;;;7936:113;;;7983:5;7990:6;7997:1;7990:9;;;;;;;;:::i;:::-;;;;;;;7966:34;;;;;;;;11979:19:1;;;12023:2;12014:12;;12007:28;12060:2;12051:12;;11822:247;7966:34:0;;;;;;;;;;;;;7956:45;;;;;;7936:113;7928:121;-1:-1:-1;7908:3:0;;;;:::i;:::-;;;;7869:192;;;-1:-1:-1;8087:11:0;;8078:20;;7701:405;-1:-1:-1;;;7701:405:0:o;10484:732::-;9634:24;;-1:-1:-1;;;;;9634:24:0;9620:10;:38;9612:91;;;;-1:-1:-1;;;9612:91:0;;;;;;;:::i;:::-;10643:27:::1;:34:::0;:39;:79;::::1;;;-1:-1:-1::0;10686:24:0::1;:31:::0;:36;10643:79:::1;10635:150;;;::::0;-1:-1:-1;;;10635:150:0;;20897:2:1;10635:150:0::1;::::0;::::1;20879:21:1::0;20936:2;20916:18;;;20909:30;20975:34;20955:18;;;20948:62;21046:28;21026:18;;;21019:56;21092:19;;10635:150:0::1;20695:422:1::0;10635:150:0::1;10825:7;:14;10804:10;:17;:35;10796:83;;;::::0;-1:-1:-1;;;10796:83:0;;19326:2:1;10796:83:0::1;::::0;::::1;19308:21:1::0;19365:2;19345:18;;;19338:30;19404:34;19384:18;;;19377:62;-1:-1:-1;;;19455:18:1;;;19448:33;19498:19;;10796:83:0::1;19124:399:1::0;10796:83:0::1;10890:20;::::0;10921:219:::1;10945:10;:17;10941:1;:21;10921:219;;;11000:7;11008:1;11000:10;;;;;;;;:::i;:::-;;;;;;;10984:26;;;;;:::i;:::-;;;11025:27;11058:10;11069:1;11058:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;11025:47;;::::1;::::0;::::1;::::0;;-1:-1:-1;11025:47:0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;11025:47:0::1;-1:-1:-1::0;;;;;11025:47:0;;::::1;::::0;;;::::1;::::0;;11117:10;;11087:24:::1;::::0;11117:10;;11125:1;;11117:10;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;11087:41;;::::1;::::0;::::1;::::0;;-1:-1:-1;11087:41:0;;;;;;;::::1;::::0;10964:3;::::1;::::0;::::1;:::i;:::-;;;;10921:219;;;;11158:12;11174:4;11158:20;11150:58;;;::::0;-1:-1:-1;;;11150:58:0;;30073:2:1;11150:58:0::1;::::0;::::1;30055:21:1::0;30112:2;30092:18;;;30085:30;30151:27;30131:18;;;30124:55;30196:18;;11150:58:0::1;29871:349:1::0;19706:82:0;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;19766:9:::1;:19:::0;19706:82::o;9005:105::-;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;9070:32:::1;9097:3;9070:18;:32::i;11970:1247::-:0;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;12095:27:::1;:34:::0;:38;;;;:77:::1;;-1:-1:-1::0;12137:24:0::1;:31:::0;:35;;12095:77:::1;12087:121;;;::::0;-1:-1:-1;;;12087:121:0;;27275:2:1;12087:121:0::1;::::0;::::1;27257:21:1::0;27314:2;27294:18;;;27287:30;27353:33;27333:18;;;27326:61;27404:18;;12087:121:0::1;27073:355:1::0;12087:121:0::1;12303:24;:31:::0;12265:27:::1;:34:::0;:69:::1;12257:117;;;;-1:-1:-1::0;;;12257:117:0::1;;;;;;;:::i;:::-;12463:27;::::0;12501:130:::1;12525:24;:31:::0;12521:35;::::1;12501:130;;;12601:24;12626:1;12601:27;;;;;;;;:::i;:::-;;;;;;;;;12578:50;;;;;:::i;:::-;::::0;-1:-1:-1;12558:3:0;::::1;::::0;::::1;:::i;:::-;;;;12501:130;;;;12649:19;12672:4;12649:27;12641:78;;;;-1:-1:-1::0;;;12641:78:0::1;;;;;;;:::i;:::-;12887:21;12867:17;12971:239;12995:27;:34:::0;12991:38;::::1;12971:239;;;13051:22;13121:4;13090:24;13115:1;13090:27;;;;;;;;:::i;:::-;;;;;;;;;13078:9;:39;;;;:::i;:::-;13077:48;;;;:::i;:::-;13051:75;;13141:57;13151:27;13179:1;13151:30;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;13151:30:0::1;13183:14:::0;13141:9:::1;:57::i;:::-;-1:-1:-1::0;13031:3:0;::::1;::::0;::::1;:::i;:::-;;;;12971:239;;19358:113:::0;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;19416:13:::1;:24:::0;;-1:-1:-1;;;;;19416:24:0;;::::1;-1:-1:-1::0;;;;;;19416:24:0;;::::1;::::0;::::1;::::0;;;19442:6:::1;:26:::0;;;;::::1;;::::0;;19358:113::o;19511:95::-;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;19576:27:::1;19591:11;7662::::0;:25;7589:106;11811:124;11867:16;11903:24;11896:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11811:124;:::o;20841:255::-;17393:21;;;;:62;;;;;17440:15;17418:18;;:37;;17393:62;17385:123;;;;-1:-1:-1;;;17385:123:0;;23264:2:1;17385:123:0;;;23246:21:1;23303:2;23283:18;;;23276:30;23342:34;23322:18;;;23315:62;-1:-1:-1;;;23393:18:1;;;23386:32;23435:19;;17385:123:0;23062:398:1;17385:123:0;20951:7:::1;20930:17;;:28;;20922:92;;;::::0;-1:-1:-1;;;20922:92:0;;27995:2:1;20922:92:0::1;::::0;::::1;27977:21:1::0;28034:2;28014:18;;;28007:30;28073:34;28053:18;;;28046:62;-1:-1:-1;;;28124:18:1;;;28117:49;28183:19;;20922:92:0::1;27793:415:1::0;20922:92:0::1;21025:23;21040:7;21025:14;:23::i;:::-;21059:29;21069:9;21080:7;21059:9;:29::i;266:20::-:0;;;;;;;:::i;21838:278::-;8218:10;8232:9;8218:23;8210:55;;;;-1:-1:-1;;;8210:55:0;;26506:2:1;8210:55:0;;;26488:21:1;26545:2;26525:18;;;26518:30;-1:-1:-1;;;26564:18:1;;;26557:49;26623:18;;8210:55:0;26304:343:1;8210:55:0;16236:11:::1;::::0;::::1;;:49:::0;::::1;;;;16270:15;16251;;:34;;16236:49;16228:107;;;::::0;-1:-1:-1;;;16228:107:0;;27635:2:1;16228:107:0::1;::::0;::::1;27617:21:1::0;27674:2;27654:18;;;27647:30;27713:33;27693:18;;;27686:61;27764:18;;16228:107:0::1;27433:355:1::0;16228:107:0::1;21957:7:::2;21934:19;;:30;;21926:66;;;::::0;-1:-1:-1;;;21926:66:0;;17811:2:1;21926:66:0::2;::::0;::::2;17793:21:1::0;17850:2;17830:18;;;17823:30;17889:25;17869:18;;;17862:53;17932:18;;21926:66:0::2;17609:347:1::0;21926:66:0::2;22036:7;22024:9;;:19;;;;:::i;:::-;22011:9;:32;22003:64;;;::::0;-1:-1:-1;;;22003:64:0;;21324:2:1;22003:64:0::2;::::0;::::2;21306:21:1::0;21363:2;21343:18;;;21336:30;-1:-1:-1;;;21382:18:1;;;21375:49;21441:18;;22003:64:0::2;21122:343:1::0;22003:64:0::2;22078:30;22088:10;22100:7;22078:9;:30::i;4699:148::-:0;4787:52;4806:10;4818:9;4829;4787:18;:52::i;9715:135::-;9634:24;;-1:-1:-1;;;;;9634:24:0;9620:10;:38;9612:91;;;;-1:-1:-1;;;9612:91:0;;;;;;;:::i;:::-;9808:24:::1;:39:::0;;-1:-1:-1;;;;;;9808:39:0::1;::::0;;9715:135::o;22525:222::-;22644:31;22664:5;22671:3;22644:19;:31::i;:::-;22686:53;22711:5;22718:3;22723:8;22733:5;22686:24;:53::i;:::-;22525:222;;;;:::o;20023:102::-;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;16136:11;:19;;-1:-1:-1;;16136:19:0;;;;;;;16157:15;:23;;;19796:108;;:::o;6511:281::-;6639:3;6610:17;;;:7;:17;;;;;;6576:13;;-1:-1:-1;;;;;6610:17:0;6602:87;;;;-1:-1:-1;;;6602:87:0;;30860:2:1;6602:87:0;;;30842:21:1;30899:2;30879:18;;;30872:30;30938:34;30918:18;;;30911:62;-1:-1:-1;;;30989:18:1;;;30982:39;31038:19;;6602:87:0;30658:405:1;6602:87:0;6731:12;6745:19;6755:8;6745:9;:19::i;:::-;6766:16;6714:69;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6700:84;;6511:281;;;:::o;16919:136::-;16997:14;;16973:4;;16997:14;;:55;;;;;17037:15;17015:18;;:37;;16990:62;;16919:136;:::o;21232:578::-;8218:10;8232:9;8218:23;8210:55;;;;-1:-1:-1;;;8210:55:0;;26506:2:1;8210:55:0;;;26488:21:1;26545:2;26525:18;;;26518:30;-1:-1:-1;;;26564:18:1;;;26557:49;26623:18;;8210:55:0;26304:343:1;8210:55:0;16798:14:::1;::::0;::::1;;:55:::0;::::1;;;;16838:15;16816:18;;:37;;16798:55;16790:116;;;::::0;-1:-1:-1;;;16790:116:0;;23667:2:1;16790:116:0::1;::::0;::::1;23649:21:1::0;23706:2;23686:18;;;23679:30;23745:34;23725:18;;;23718:62;-1:-1:-1;;;23796:18:1;;;23789:32;23838:19;;16790:116:0::1;23465:398:1::0;16790:116:0::1;21365:33:::2;21379:10;21391:6;21365:13;:33::i;:::-;21357:70;;;::::0;-1:-1:-1;;;21357:70:0;;19730:2:1;21357:70:0::2;::::0;::::2;19712:21:1::0;19769:2;19749:18;;;19742:30;19808:26;19788:18;;;19781:54;19852:18;;21357:70:0::2;19528:348:1::0;21357:70:0::2;21463:7;21446:13;;:24;;21438:74;;;::::0;-1:-1:-1;;;21438:74:0;;20491:2:1;21438:74:0::2;::::0;::::2;20473:21:1::0;20530:2;20510:18;;;20503:30;20569:34;20549:18;;;20542:62;-1:-1:-1;;;20620:18:1;;;20613:35;20665:19;;21438:74:0::2;20289:401:1::0;21438:74:0::2;21566:10;21548:29;::::0;;;:17:::2;:29;::::0;;;;;:39:::2;::::0;21580:7;;21548:39:::2;:::i;:::-;21531:13;;:56;;21523:108;;;::::0;-1:-1:-1;;;21523:108:0;;20083:2:1;21523:108:0::2;::::0;::::2;20065:21:1::0;20122:2;20102:18;;;20095:30;20161:34;20141:18;;;20134:62;-1:-1:-1;;;20212:18:1;;;20205:37;20259:19;;21523:108:0::2;19881:403:1::0;21523:108:0::2;21675:7;21663:9;;:19;;;;:::i;:::-;21650:9;:32;21642:64;;;::::0;-1:-1:-1;;;21642:64:0;;21324:2:1;21642:64:0::2;::::0;::::2;21306:21:1::0;21363:2;21343:18;;;21336:30;-1:-1:-1;;;21382:18:1;;;21375:49;21441:18;;21642:64:0::2;21122:343:1::0;21642:64:0::2;21737:10;21719:29;::::0;;;:17:::2;:29;::::0;;;;:40;;21752:7;;21719:29;:40:::2;::::0;21752:7;;21719:40:::2;:::i;:::-;::::0;;;-1:-1:-1;21772:30:0::2;::::0;-1:-1:-1;21782:10:0::2;21794:7:::0;21772:9:::2;:30::i;15369:136::-:0;15053:19;;15083:197;15107:27;:34;15103:38;;15083:197;;;15181:27;15209:1;15181:30;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;15181:30:0;15167:10;:44;15163:106;;;15249:4;15232:21;;15163:106;15143:3;;;;:::i;:::-;;;;15083:197;;;;15298:14;15290:53;;;;-1:-1:-1;;;15290:53:0;;21672:2:1;15290:53:0;;;21654:21:1;21711:2;21691:18;;;21684:30;21750:28;21730:18;;;21723:56;21796:18;;15290:53:0;21470:350:1;15290:53:0;-1:-1:-1;15479:10:0::1;15452:38;::::0;;;:26:::1;:38;::::0;;;;:45;;-1:-1:-1;;15452:45:0::1;15493:4;15452:45;::::0;;15369:136::o;15800:137::-;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;15580:9:::1;15575:200;15599:27;:34:::0;15595:38;::::1;15575:200;;;15663:26;:58;15690:27;15718:1;15690:30;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;15690:30:0::1;15663:58:::0;;;::::1;::::0;;;;;;;;;::::1;;15655:108;;;::::0;-1:-1:-1;;;15655:108:0;;24492:2:1;15655:108:0::1;::::0;::::1;24474:21:1::0;24531:2;24511:18;;;24504:30;24570:34;24550:18;;;24543:62;-1:-1:-1;;;24621:18:1;;;24614:35;24666:19;;15655:108:0::1;24290:401:1::0;15655:108:0::1;15635:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15575:200;;;;15876:53:::2;15894:10;15907:21;15876:9;:53::i;11667:138::-:0;11726:24;11770:27;11763:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11763:34:0;;;;;;;;;;;;;;;;;;;;;;11667:138;:::o;8792:207::-;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8882:25:0;::::1;8874:77;;;::::0;-1:-1:-1;;;8874:77:0;;17403:2:1;8874:77:0::1;::::0;::::1;17385:21:1::0;17442:2;17422:18;;;17415:30;17481:34;17461:18;;;17454:62;-1:-1:-1;;;17532:18:1;;;17525:37;17579:19;;8874:77:0::1;17201:403:1::0;8874:77:0::1;8962:29;8981:9;8962:18;:29::i;5813:228::-:0;5927:9;5922:112;5946:9;:16;5942:1;:20;5922:112;;;5984:38;5997:5;6004:3;6009:9;6019:1;6009:12;;;;;;;;:::i;:::-;;;;;;;5984;:38::i;:::-;5964:3;;;;:::i;:::-;;;;5922:112;;19612:88;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;19675:9:::1;:22:::0;19612:88::o;19910:107::-;8506:5;;-1:-1:-1;;;;;8506:5:0;8515:10;8506:19;8498:64;;;;-1:-1:-1;;;8498:64:0;;;;;;;:::i;:::-;16690:14;:22;;-1:-1:-1;;16690:22:0;;;;;;;16714:18;:26;;;19796:108;;:::o;3038:109::-;3116:23;;;;:16;;:23;;;;;:::i;2339:234::-;2420:21;;;;:11;:21;;;;;;-1:-1:-1;;;;;2420:28:0;;;:21;;:28;2416:150;;2465:21;;;;:11;:21;;;;;;;;:27;;-1:-1:-1;;;;;;2465:27:0;-1:-1:-1;;;;;2465:27:0;;;;;;;;;2521:7;:17;;;;;;;2512:42;;2465:21;;2521:17;;;;;2512:42;;;2339:234;;:::o;22178:148::-;22255:6;;:26;;-1:-1:-1;;;22255:26:0;;-1:-1:-1;;;;;13188:32:1;;;22255:26:0;;;13170:51:1;22255:6:0;;;;:19;;13143:18:1;;22255:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22293:6:0;;:24;;-1:-1:-1;;;22293:24:0;;-1:-1:-1;;;;;13188:32:1;;;22293:24:0;;;13170:51:1;22293:6:0;;;;-1:-1:-1;22293:19:0;;-1:-1:-1;13143:18:1;;22293:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22178:148;;:::o;4853:248::-;4955:40;4974:10;4986:8;4955:18;:40::i;:::-;4947:104;;;;-1:-1:-1;;;4947:104:0;;24898:2:1;4947:104:0;;;24880:21:1;24937:2;24917:18;;;24910:30;24976:34;24956:18;;;24949:62;-1:-1:-1;;;25027:18:1;;;25020:49;25086:19;;4947:104:0;24696:415:1;4947:104:0;5062:31;5072:5;5079:3;5084:8;5062:9;:31::i;2931:101::-;3005:19;;;;:12;;:19;;;;;:::i;20164:316::-;20268:7;20254:11;;:21;;;;:::i;:::-;20241:9;;:34;;20233:82;;;;-1:-1:-1;;;20233:82:0;;18163:2:1;20233:82:0;;;18145:21:1;18202:2;18182:18;;;18175:30;18241:34;18221:18;;;18214:62;-1:-1:-1;;;18292:18:1;;;18285:33;18335:19;;20233:82:0;17961:399:1;20233:82:0;20331:9;20326:112;20350:7;20346:1;:11;20326:112;;;20379:29;20385:3;20391:11;;20405:1;20391:15;;;;:::i;:::-;20379:5;:29::i;:::-;20359:3;;;;:::i;:::-;;;;20326:112;;;-1:-1:-1;20448:6:0;;:24;;-1:-1:-1;;;20448:24:0;;-1:-1:-1;;;;;13188:32:1;;;20448:24:0;;;13170:51:1;20448:6:0;;;;:19;;13143:18:1;;20448:24:0;13024:203:1;8588:198:0;8683:5;;;-1:-1:-1;;;;;8699:17:0;;;-1:-1:-1;;;;;;8699:17:0;;;;;;;8732:42;;8683:5;;;8699:17;8683:5;;8732:42;;8663:17;;8732:42;8652:134;8588:198;:::o;10250:197::-;10333:12;10359:8;-1:-1:-1;;;;;10351:22:0;10381:7;10351:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10332:61;;;10412:7;10404:35;;;;-1:-1:-1;;;10404:35:0;;18567:2:1;10404:35:0;;;18549:21:1;18606:2;18586:18;;;18579:30;-1:-1:-1;;;18625:18:1;;;18618:45;18680:18;;10404:35:0;18365:339:1;18277:532:0;18360:23;;-1:-1:-1;;;;;18360:23:0;18346:10;:37;18338:102;;;;-1:-1:-1;;;18338:102:0;;25679:2:1;18338:102:0;;;25661:21:1;25718:2;25698:18;;;25691:30;25757:34;25737:18;;;25730:62;-1:-1:-1;;;25808:18:1;;;25801:50;25868:19;;18338:102:0;25477:416:1;18338:102:0;18497:7;18480:14;;:24;;;;:::i;:::-;18459:17;;:45;;18451:122;;;;;-1:-1:-1;;;18451:122:0;;30427:2:1;18451:122:0;;;30409:21:1;30446:18;;;30439:30;;;;30505:34;30485:18;;;30478:62;30576:34;30556:18;;;30549:62;30628:19;;18451:122:0;30225:428:1;18451:122:0;18630:9;18613:27;;;;:16;:27;;;;;;:37;;18643:7;;18613:37;:::i;:::-;18592:17;;:58;;18584:130;;;;-1:-1:-1;;;18584:130:0;;16975:2:1;18584:130:0;;;16957:21:1;17014:2;16994:18;;;16987:30;17053:34;17033:18;;;17026:62;17124:29;17104:18;;;17097:57;17171:19;;18584:130:0;16773:423:1;18584:130:0;18744:9;18727:27;;;;:16;:27;;;;;:38;;18758:7;;18727:27;:38;;18758:7;;18727:38;:::i;:::-;;;;;;;;18794:7;18776:14;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;;18277:532:0:o;2579:326::-;2704:9;-1:-1:-1;;;;;2694:19:0;:6;-1:-1:-1;;;;;2694:19:0;;;2686:93;;;;-1:-1:-1;;;2686:93:0;;29643:2:1;2686:93:0;;;29625:21:1;29682:2;29662:18;;;29655:30;29721:34;29701:18;;;29694:62;29792:31;29772:18;;;29765:59;29841:19;;2686:93:0;29441:425:1;2686:93:0;-1:-1:-1;;;;;2790:24:0;;;;;;;:16;:24;;;;;;;;:35;;;;;;;;;;;;;:47;;-1:-1:-1;;2790:47:0;;;;;;;;;;2853:44;;15460:41:1;;;2853:44:0;;15433:18:1;2853:44:0;;;;;;;2579:326;;;:::o;5107:507::-;5225:34;5238:5;5245:3;5250:8;5225:12;:34::i;:::-;-1:-1:-1;;;;;5274:15:0;;;:20;5270:337;;5314:22;5340:3;-1:-1:-1;;;;;5340:14:0;5378:10;5390;5402:5;5409:8;5419:5;5355:70;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5355:70:0;;;;;;;;;;;5340:86;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5311:115;;;5441:16;5471:9;5460:31;;;;;;;;;;;;:::i;:::-;5441:50;-1:-1:-1;;;;;;;;;;5514:23:0;;;5506:89;;;;-1:-1:-1;;;5506:89:0;;24070:2:1;5506:89:0;;;24052:21:1;24109:2;24089:18;;;24082:30;24148:34;24128:18;;;24121:62;-1:-1:-1;;;24199:18:1;;;24192:51;24260:19;;5506:89:0;23868:417:1;3217:536:0;3275:13;3305:11;3301:32;;-1:-1:-1;;3320:10:0;;;;;;;;;;;;-1:-1:-1;;;3320:10:0;;;;;3217:536::o;3301:32::-;3362:6;3343:16;3396:52;3403:13;;3396:52;;3420:9;;;;:::i;:::-;;-1:-1:-1;3431:14:0;;-1:-1:-1;3443:2:0;3431:14;;:::i;:::-;;;3396:52;;;3482:20;3515:7;-1:-1:-1;;;;;3505:18:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3505:18:0;;3482:41;;3534:110;3541:11;;3534:110;;3556:9;;;;:::i;:::-;;-1:-1:-1;3612:11:0;;-1:-1:-1;3621:2:0;3612:6;:11;:::i;:::-;3599:26;;:2;:26;:::i;:::-;3586:41;;3567:7;3575;3567:16;;;;;;;;:::i;:::-;;;;:60;-1:-1:-1;;;;;3567:60:0;;;;;;;;-1:-1:-1;3629:12:0;3639:2;3629:12;;:::i;:::-;;;3534:110;;;3694:7;3217:536;-1:-1:-1;;;;3217:536:0:o;3786:376::-;3881:4;3906:17;;;:7;:17;;;;;;-1:-1:-1;;;;;3906:17:0;3898:98;;;;-1:-1:-1;;;3898:98:0;;26854:2:1;3898:98:0;;;26836:21:1;26893:2;26873:18;;;26866:30;26932:34;26912:18;;;26905:62;-1:-1:-1;;;26983:18:1;;;26976:50;27043:19;;3898:98:0;26652:416:1;3898:98:0;4007:14;4024:17;;;:7;:17;;;;;;-1:-1:-1;;;;;4024:17:0;;;;4060:18;;;;;:55;;-1:-1:-1;4094:21:0;;;;:11;:21;;;;;;-1:-1:-1;;;;;4082:33:0;;;4094:21;;4082:33;4060:55;:93;;;-1:-1:-1;;;;;;4119:24:0;;;;;;;:16;:24;;;;;;;;:34;;;;;;;;;;;;4052:102;3786:376;-1:-1:-1;;;;3786:376:0:o;1644:671::-;1754:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;1745:26:0;;;1754:17;;1745:26;1737:88;;;;-1:-1:-1;;;1737:88:0;;22846:2:1;1737:88:0;;;22828:21:1;22885:2;22865:18;;;22858:30;22924:34;22904:18;;;22897:62;-1:-1:-1;;;22975:18:1;;;22968:47;23032:19;;1737:88:0;22644:413:1;1737:88:0;-1:-1:-1;;;;;1844:19:0;;1836:78;;;;-1:-1:-1;;;1836:78:0;;18911:2:1;1836:78:0;;;18893:21:1;18950:2;18930:18;;;18923:30;18989:34;18969:18;;;18962:62;-1:-1:-1;;;19040:18:1;;;19033:44;19094:19;;1836:78:0;18709:410:1;1836:78:0;2069:3;2036:21;;;:11;:21;;;;;;-1:-1:-1;;;;;2036:21:0;:37;2032:104;;2091:32;2108:3;2114:8;2091;:32::i;:::-;2149:17;;;;:7;:17;;;;;;;;:23;;-1:-1:-1;;;;;;2149:23:0;-1:-1:-1;;;;;2149:23:0;;;;;;;;;;2184:16;;;;:9;:16;;;;;:18;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;2213:14:0;;;;;;:9;:14;;;;;:16;;;;;;:::i;:::-;;;;;;2298:8;2293:3;-1:-1:-1;;;;;2277:30:0;2286:5;-1:-1:-1;;;;;2277:30:0;;;;;;;;;;;1644:671;;;:::o;1125:494::-;-1:-1:-1;;;;;1207:19:0;;1199:69;;;;-1:-1:-1;;;1199:69:0;;26100:2:1;1199:69:0;;;26082:21:1;26139:2;26119:18;;;26112:30;26178:34;26158:18;;;26151:62;-1:-1:-1;;;26229:18:1;;;26222:35;26274:19;;1199:69:0;25898:401:1;1199:69:0;1316:3;1287:17;;;:7;:17;;;;;;-1:-1:-1;;;;;1287:17:0;:33;1279:92;;;;-1:-1:-1;;;1279:92:0;;28415:2:1;1279:92:0;;;28397:21:1;28454:2;28434:18;;;28427:30;28493:34;28473:18;;;28466:62;-1:-1:-1;;;28544:18:1;;;28537:44;28598:19;;1279:92:0;28213:410:1;1279:92:0;1416:17;;;;:7;:17;;;;;;;;:23;;-1:-1:-1;;;;;;1416:23:0;-1:-1:-1;;;;;1416:23:0;;;;;;;;1450:14;;:9;:14;;;;;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;1477:11:0;:13;;;:11;:13;;;:::i;:::-;;;;-1:-1:-1;;1539:37:0;;1567:8;;-1:-1:-1;;;;;1539:37:0;;;1556:3;;1539:37;;1556:3;;1539:37;1597:3;-1:-1:-1;;;;;1592:19:0;;1602:8;1592:19;;;;31214:25:1;;31202:2;31187:18;;31068:177;1592:19:0;;;;;;;;1125:494;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:406:1;78:5;-1:-1:-1;;;;;104:6:1;101:30;98:56;;;134:18;;:::i;:::-;172:57;217:2;196:15;;-1:-1:-1;;192:29:1;223:4;188:40;172:57;:::i;:::-;163:66;;252:6;245:5;238:21;292:3;283:6;278:3;274:16;271:25;268:45;;;309:1;306;299:12;268:45;358:6;353:3;346:4;339:5;335:16;322:43;412:1;405:4;396:6;389:5;385:18;381:29;374:40;14:406;;;;;:::o;425:673::-;479:5;532:3;525:4;517:6;513:17;509:27;499:55;;550:1;547;540:12;499:55;586:6;573:20;612:4;636:60;652:43;692:2;652:43;:::i;:::-;636:60;:::i;:::-;718:3;742:2;737:3;730:15;770:2;765:3;761:12;754:19;;805:2;797:6;793:15;857:3;852:2;846;843:1;839:10;831:6;827:23;823:32;820:41;817:61;;;874:1;871;864:12;817:61;896:1;906:163;920:2;917:1;914:9;906:163;;;977:17;;965:30;;1015:12;;;;1047;;;;938:1;931:9;906:163;;;-1:-1:-1;1087:5:1;;425:673;-1:-1:-1;;;;;;;425:673:1:o;1103:160::-;1168:20;;1224:13;;1217:21;1207:32;;1197:60;;1253:1;1250;1243:12;1197:60;1103:160;;;:::o;1268:220::-;1310:5;1363:3;1356:4;1348:6;1344:17;1340:27;1330:55;;1381:1;1378;1371:12;1330:55;1403:79;1478:3;1469:6;1456:20;1449:4;1441:6;1437:17;1403:79;:::i;:::-;1394:88;1268:220;-1:-1:-1;;;1268:220:1:o;1493:247::-;1552:6;1605:2;1593:9;1584:7;1580:23;1576:32;1573:52;;;1621:1;1618;1611:12;1573:52;1660:9;1647:23;1679:31;1704:5;1679:31;:::i;1745:388::-;1813:6;1821;1874:2;1862:9;1853:7;1849:23;1845:32;1842:52;;;1890:1;1887;1880:12;1842:52;1929:9;1916:23;1948:31;1973:5;1948:31;:::i;:::-;1998:5;-1:-1:-1;2055:2:1;2040:18;;2027:32;2068:33;2027:32;2068:33;:::i;:::-;2120:7;2110:17;;;1745:388;;;;;:::o;2138:624::-;2240:6;2248;2256;2309:2;2297:9;2288:7;2284:23;2280:32;2277:52;;;2325:1;2322;2315:12;2277:52;2364:9;2351:23;2383:31;2408:5;2383:31;:::i;:::-;2433:5;-1:-1:-1;2490:2:1;2475:18;;2462:32;2503:33;2462:32;2503:33;:::i;:::-;2555:7;-1:-1:-1;2613:2:1;2598:18;;2585:32;-1:-1:-1;;;;;2629:30:1;;2626:50;;;2672:1;2669;2662:12;2626:50;2695:61;2748:7;2739:6;2728:9;2724:22;2695:61;:::i;:::-;2685:71;;;2138:624;;;;;:::o;2767:844::-;2887:6;2895;2903;2911;2964:3;2952:9;2943:7;2939:23;2935:33;2932:53;;;2981:1;2978;2971:12;2932:53;3020:9;3007:23;3039:31;3064:5;3039:31;:::i;:::-;3089:5;-1:-1:-1;3146:2:1;3131:18;;3118:32;3159:33;3118:32;3159:33;:::i;:::-;3211:7;-1:-1:-1;3269:2:1;3254:18;;3241:32;-1:-1:-1;;;;;3322:14:1;;;3319:34;;;3349:1;3346;3339:12;3319:34;3372:61;3425:7;3416:6;3405:9;3401:22;3372:61;:::i;:::-;3362:71;;3486:2;3475:9;3471:18;3458:32;3442:48;;3515:2;3505:8;3502:16;3499:36;;;3531:1;3528;3521:12;3499:36;;3554:51;3597:7;3586:8;3575:9;3571:24;3554:51;:::i;:::-;3544:61;;;2767:844;;;;;;;:::o;3616:456::-;3693:6;3701;3709;3762:2;3750:9;3741:7;3737:23;3733:32;3730:52;;;3778:1;3775;3768:12;3730:52;3817:9;3804:23;3836:31;3861:5;3836:31;:::i;:::-;3886:5;-1:-1:-1;3943:2:1;3928:18;;3915:32;3956:33;3915:32;3956:33;:::i;:::-;3616:456;;4008:7;;-1:-1:-1;;;4062:2:1;4047:18;;;;4034:32;;3616:456::o;4077:665::-;4172:6;4180;4188;4196;4249:3;4237:9;4228:7;4224:23;4220:33;4217:53;;;4266:1;4263;4256:12;4217:53;4305:9;4292:23;4324:31;4349:5;4324:31;:::i;:::-;4374:5;-1:-1:-1;4431:2:1;4416:18;;4403:32;4444:33;4403:32;4444:33;:::i;:::-;4496:7;-1:-1:-1;4550:2:1;4535:18;;4522:32;;-1:-1:-1;4605:2:1;4590:18;;4577:32;-1:-1:-1;;;;;4621:30:1;;4618:50;;;4664:1;4661;4654:12;4618:50;4687:49;4728:7;4719:6;4708:9;4704:22;4687:49;:::i;4747:483::-;4840:6;4848;4901:2;4889:9;4880:7;4876:23;4872:32;4869:52;;;4917:1;4914;4907:12;4869:52;4956:9;4943:23;4975:31;5000:5;4975:31;:::i;:::-;5025:5;-1:-1:-1;5081:2:1;5066:18;;5053:32;-1:-1:-1;;;;;5097:30:1;;5094:50;;;5140:1;5137;5130:12;5094:50;5163:61;5216:7;5207:6;5196:9;5192:22;5163:61;:::i;:::-;5153:71;;;4747:483;;;;;:::o;5235:315::-;5300:6;5308;5361:2;5349:9;5340:7;5336:23;5332:32;5329:52;;;5377:1;5374;5367:12;5329:52;5416:9;5403:23;5435:31;5460:5;5435:31;:::i;:::-;5485:5;-1:-1:-1;5509:35:1;5540:2;5525:18;;5509:35;:::i;:::-;5499:45;;5235:315;;;;;:::o;5555:::-;5623:6;5631;5684:2;5672:9;5663:7;5659:23;5655:32;5652:52;;;5700:1;5697;5690:12;5652:52;5739:9;5726:23;5758:31;5783:5;5758:31;:::i;:::-;5808:5;5860:2;5845:18;;;;5832:32;;-1:-1:-1;;;5555:315:1:o;5875:1226::-;5993:6;6001;6054:2;6042:9;6033:7;6029:23;6025:32;6022:52;;;6070:1;6067;6060:12;6022:52;6110:9;6097:23;-1:-1:-1;;;;;6180:2:1;6172:6;6169:14;6166:34;;;6196:1;6193;6186:12;6166:34;6234:6;6223:9;6219:22;6209:32;;6279:7;6272:4;6268:2;6264:13;6260:27;6250:55;;6301:1;6298;6291:12;6250:55;6337:2;6324:16;6359:4;6383:60;6399:43;6439:2;6399:43;:::i;6383:60::-;6465:3;6489:2;6484:3;6477:15;6517:2;6512:3;6508:12;6501:19;;6548:2;6544;6540:11;6596:7;6591:2;6585;6582:1;6578:10;6574:2;6570:19;6566:28;6563:41;6560:61;;;6617:1;6614;6607:12;6560:61;6639:1;6630:10;;6649:238;6663:2;6660:1;6657:9;6649:238;;;6734:3;6721:17;6751:31;6776:5;6751:31;:::i;:::-;6795:18;;6681:1;6674:9;;;;;6833:12;;;;6865;;6649:238;;;-1:-1:-1;6906:5:1;-1:-1:-1;;6949:18:1;;6936:32;;-1:-1:-1;;6980:16:1;;;6977:36;;;7009:1;7006;6999:12;6977:36;;7032:63;7087:7;7076:8;7065:9;7061:24;7032:63;:::i;7106:1234::-;7232:6;7240;7293:2;7281:9;7272:7;7268:23;7264:32;7261:52;;;7309:1;7306;7299:12;7261:52;7349:9;7336:23;-1:-1:-1;;;;;7419:2:1;7411:6;7408:14;7405:34;;;7435:1;7432;7425:12;7405:34;7473:6;7462:9;7458:22;7448:32;;7518:7;7511:4;7507:2;7503:13;7499:27;7489:55;;7540:1;7537;7530:12;7489:55;7576:2;7563:16;7598:4;7622:60;7638:43;7678:2;7638:43;:::i;7622:60::-;7704:3;7728:2;7723:3;7716:15;7756:2;7751:3;7747:12;7740:19;;7787:2;7783;7779:11;7835:7;7830:2;7824;7821:1;7817:10;7813:2;7809:19;7805:28;7802:41;7799:61;;;7856:1;7853;7846:12;7799:61;7878:1;7869:10;;7888:238;7902:2;7899:1;7896:9;7888:238;;;7973:3;7960:17;7990:31;8015:5;7990:31;:::i;:::-;8034:18;;7920:1;7913:9;;;;;8072:12;;;;8104;;7888:238;;8345:248;8410:6;8418;8471:2;8459:9;8450:7;8446:23;8442:32;8439:52;;;8487:1;8484;8477:12;8439:52;8510:26;8526:9;8510:26;:::i;8598:180::-;8657:6;8710:2;8698:9;8689:7;8685:23;8681:32;8678:52;;;8726:1;8723;8716:12;8678:52;-1:-1:-1;8749:23:1;;8598:180;-1:-1:-1;8598:180:1:o;8783:245::-;8841:6;8894:2;8882:9;8873:7;8869:23;8865:32;8862:52;;;8910:1;8907;8900:12;8862:52;8949:9;8936:23;8968:30;8992:5;8968:30;:::i;9033:249::-;9102:6;9155:2;9143:9;9134:7;9130:23;9126:32;9123:52;;;9171:1;9168;9161:12;9123:52;9203:9;9197:16;9222:30;9246:5;9222:30;:::i;9287:450::-;9356:6;9409:2;9397:9;9388:7;9384:23;9380:32;9377:52;;;9425:1;9422;9415:12;9377:52;9465:9;9452:23;-1:-1:-1;;;;;9490:6:1;9487:30;9484:50;;;9530:1;9527;9520:12;9484:50;9553:22;;9606:4;9598:13;;9594:27;-1:-1:-1;9584:55:1;;9635:1;9632;9625:12;9584:55;9658:73;9723:7;9718:2;9705:16;9700:2;9696;9692:11;9658:73;:::i;9927:416::-;10020:6;10028;10081:2;10069:9;10060:7;10056:23;10052:32;10049:52;;;10097:1;10094;10087:12;10049:52;10133:9;10120:23;10110:33;;10194:2;10183:9;10179:18;10166:32;-1:-1:-1;;;;;10213:6:1;10210:30;10207:50;;;10253:1;10250;10243:12;10348:257;10389:3;10427:5;10421:12;10454:6;10449:3;10442:19;10470:63;10526:6;10519:4;10514:3;10510:14;10503:4;10496:5;10492:16;10470:63;:::i;:::-;10587:2;10566:15;-1:-1:-1;;10562:29:1;10553:39;;;;10594:4;10549:50;;10348:257;-1:-1:-1;;10348:257:1:o;10610:973::-;10695:12;;10660:3;;10750:1;10770:18;;;;10823;;;;10850:61;;10904:4;10896:6;10892:17;10882:27;;10850:61;10930:2;10978;10970:6;10967:14;10947:18;10944:38;10941:161;;;11024:10;11019:3;11015:20;11012:1;11005:31;11059:4;11056:1;11049:15;11087:4;11084:1;11077:15;10941:161;11118:18;11145:104;;;;11263:1;11258:319;;;;11111:466;;11145:104;-1:-1:-1;;11178:24:1;;11166:37;;11223:16;;;;-1:-1:-1;11145:104:1;;11258:319;31791:1;31784:14;;;31828:4;31815:18;;11352:1;11366:165;11380:6;11377:1;11374:13;11366:165;;;11458:14;;11445:11;;;11438:35;11501:16;;;;11395:10;;11366:165;;;11370:3;;11560:6;11555:3;11551:16;11544:23;;11111:466;;;;;;;10610:973;;;;:::o;12074:274::-;12203:3;12241:6;12235:13;12257:53;12303:6;12298:3;12291:4;12283:6;12279:17;12257:53;:::i;:::-;12326:16;;;;;12074:274;-1:-1:-1;;12074:274:1:o;12353:456::-;12574:3;12602:38;12636:3;12628:6;12602:38;:::i;:::-;12669:6;12663:13;12685:52;12730:6;12726:2;12719:4;12711:6;12707:17;12685:52;:::i;:::-;12753:50;12795:6;12791:2;12787:15;12779:6;12753:50;:::i;:::-;12746:57;12353:456;-1:-1:-1;;;;;;;12353:456:1:o;13232:488::-;-1:-1:-1;;;;;13501:15:1;;;13483:34;;13553:15;;13548:2;13533:18;;13526:43;13600:2;13585:18;;13578:34;;;13648:3;13643:2;13628:18;;13621:31;;;13426:4;;13669:45;;13694:19;;13686:6;13669:45;:::i;:::-;13661:53;13232:488;-1:-1:-1;;;;;;13232:488:1:o;14004:674::-;14191:2;14243:21;;;14313:13;;14216:18;;;14335:22;;;14162:4;;14191:2;14414:15;;;;14388:2;14373:18;;;14162:4;14457:195;14471:6;14468:1;14465:13;14457:195;;;14536:13;;-1:-1:-1;;;;;14532:39:1;14520:52;;14627:15;;;;14592:12;;;;14568:1;14486:9;14457:195;;;-1:-1:-1;14669:3:1;;14004:674;-1:-1:-1;;;;;;14004:674:1:o;14683:632::-;14854:2;14906:21;;;14976:13;;14879:18;;;14998:22;;;14825:4;;14854:2;15077:15;;;;15051:2;15036:18;;;14825:4;15120:169;15134:6;15131:1;15128:13;15120:169;;;15195:13;;15183:26;;15264:15;;;;15229:12;;;;15156:1;15149:9;15120:169;;15736:219;15885:2;15874:9;15867:21;15848:4;15905:44;15945:2;15934:9;15930:18;15922:6;15905:44;:::i;15960:404::-;16162:2;16144:21;;;16201:2;16181:18;;;16174:30;16240:34;16235:2;16220:18;;16213:62;-1:-1:-1;;;16306:2:1;16291:18;;16284:38;16354:3;16339:19;;15960:404::o;16369:399::-;16571:2;16553:21;;;16610:2;16590:18;;;16583:30;16649:34;16644:2;16629:18;;16622:62;-1:-1:-1;;;16715:2:1;16700:18;;16693:33;16758:3;16743:19;;16369:399::o;25116:356::-;25318:2;25300:21;;;25337:18;;;25330:30;25396:34;25391:2;25376:18;;25369:62;25463:2;25448:18;;25116:356::o;29034:402::-;29236:2;29218:21;;;29275:2;29255:18;;;29248:30;29314:34;29309:2;29294:18;;29287:62;-1:-1:-1;;;29380:2:1;29365:18;;29358:36;29426:3;29411:19;;29034:402::o;31250:275::-;31321:2;31315:9;31386:2;31367:13;;-1:-1:-1;;31363:27:1;31351:40;;-1:-1:-1;;;;;31406:34:1;;31442:22;;;31403:62;31400:88;;;31468:18;;:::i;:::-;31504:2;31497:22;31250:275;;-1:-1:-1;31250:275:1:o;31530:183::-;31590:4;-1:-1:-1;;;;;31615:6:1;31612:30;31609:56;;;31645:18;;:::i;:::-;-1:-1:-1;31690:1:1;31686:14;31702:4;31682:25;;31530:183::o;31844:128::-;31884:3;31915:1;31911:6;31908:1;31905:13;31902:39;;;31921:18;;:::i;:::-;-1:-1:-1;31957:9:1;;31844:128::o;31977:120::-;32017:1;32043;32033:35;;32048:18;;:::i;:::-;-1:-1:-1;32082:9:1;;31977:120::o;32102:168::-;32142:7;32208:1;32204;32200:6;32196:14;32193:1;32190:21;32185:1;32178:9;32171:17;32167:45;32164:71;;;32215:18;;:::i;:::-;-1:-1:-1;32255:9:1;;32102:168::o;32275:125::-;32315:4;32343:1;32340;32337:8;32334:34;;;32348:18;;:::i;:::-;-1:-1:-1;32385:9:1;;32275:125::o;32405:258::-;32477:1;32487:113;32501:6;32498:1;32495:13;32487:113;;;32577:11;;;32571:18;32558:11;;;32551:39;32523:2;32516:10;32487:113;;;32618:6;32615:1;32612:13;32609:48;;;-1:-1:-1;;32653:1:1;32635:16;;32628:27;32405:258::o;32668:136::-;32707:3;32735:5;32725:39;;32744:18;;:::i;:::-;-1:-1:-1;;;32780:18:1;;32668:136::o;32809:380::-;32888:1;32884:12;;;;32931;;;32952:61;;33006:4;32998:6;32994:17;32984:27;;32952:61;33059:2;33051:6;33048:14;33028:18;33025:38;33022:161;;;33105:10;33100:3;33096:20;33093:1;33086:31;33140:4;33137:1;33130:15;33168:4;33165:1;33158:15;33022:161;;32809:380;;;:::o;33194:135::-;33233:3;-1:-1:-1;;33254:17:1;;33251:43;;;33274:18;;:::i;:::-;-1:-1:-1;33321:1:1;33310:13;;33194:135::o;33334:112::-;33366:1;33392;33382:35;;33397:18;;:::i;:::-;-1:-1:-1;33431:9:1;;33334:112::o;33451:127::-;33512:10;33507:3;33503:20;33500:1;33493:31;33543:4;33540:1;33533:15;33567:4;33564:1;33557:15;33583:127;33644:10;33639:3;33635:20;33632:1;33625:31;33675:4;33672:1;33665:15;33699:4;33696:1;33689:15;33715:127;33776:10;33771:3;33767:20;33764:1;33757:31;33807:4;33804:1;33797:15;33831:4;33828:1;33821:15;33847:127;33908:10;33903:3;33899:20;33896:1;33889:31;33939:4;33936:1;33929:15;33963:4;33960:1;33953:15;33979:127;34040:10;34035:3;34031:20;34028:1;34021:31;34071:4;34068:1;34061:15;34095:4;34092:1;34085:15;34111:131;-1:-1:-1;;;;;34186:31:1;;34176:42;;34166:70;;34232:1;34229;34222:12;34247:131;-1:-1:-1;;;;;;34321:32:1;;34311:43;;34301:71;;34368:1;34365;34358:12

Swarm Source

ipfs://6a5bb9fef147dc8771206a93f3274395eb82e5aad2c06a5cd6d95f38a85ff76d
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.