ETH Price: $3,365.30 (+0.52%)

Contract

0xD60917e1ABDe5c9e3395cfbA5688c735a89B3281
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Purchase WL Vend...147345432022-05-08 6:39:12930 days ago1651991952IN
0xD60917e1...5a89B3281
0 ETH0.0013458327.84911854
Purchase WL Vend...147127942022-05-04 19:30:07933 days ago1651692607IN
0xD60917e1...5a89B3281
0 ETH0.0096739471.70609331
Purchase WL Vend...147125952022-05-04 18:44:28933 days ago1651689868IN
0xD60917e1...5a89B3281
0 ETH0.00696751.64148865
Purchase WL Vend...147102992022-05-04 10:10:49934 days ago1651659049IN
0xD60917e1...5a89B3281
0 ETH0.0045321633.59371419
Purchase WL Vend...147072672022-05-03 22:20:00934 days ago1651616400IN
0xD60917e1...5a89B3281
0 ETH0.0063587147.13267975
Purchase WL Vend...147072552022-05-03 22:16:37934 days ago1651616197IN
0xD60917e1...5a89B3281
0 ETH0.0052192838.68684852
Purchase WL Vend...147069752022-05-03 21:09:27934 days ago1651612167IN
0xD60917e1...5a89B3281
0 ETH0.0068878351.05466149
Purchase WL Vend...147066842022-05-03 20:03:03934 days ago1651608183IN
0xD60917e1...5a89B3281
0 ETH0.0068341650.65681771
Purchase WL Vend...147064782022-05-03 19:19:34934 days ago1651605574IN
0xD60917e1...5a89B3281
0 ETH0.0092995768.9312012
Purchase WL Vend...147059912022-05-03 17:33:07934 days ago1651599187IN
0xD60917e1...5a89B3281
0 ETH0.0094885170.33168097
Purchase WL Vend...147059712022-05-03 17:27:45934 days ago1651598865IN
0xD60917e1...5a89B3281
0 ETH0.0102500475.97634426
Purchase WL Vend...147058672022-05-03 17:03:55934 days ago1651597435IN
0xD60917e1...5a89B3281
0 ETH0.0085036463.03148172
Purchase WL Vend...147054132022-05-03 15:23:34934 days ago1651591414IN
0xD60917e1...5a89B3281
0 ETH0.0090973367.43212388
Purchase WL Vend...147053922022-05-03 15:19:23934 days ago1651591163IN
0xD60917e1...5a89B3281
0 ETH0.0084567662.68402062
Purchase WL Vend...147051932022-05-03 14:38:34934 days ago1651588714IN
0xD60917e1...5a89B3281
0 ETH0.0099369473.65555375
Purchase WL Vend...147051132022-05-03 14:17:29934 days ago1651587449IN
0xD60917e1...5a89B3281
0 ETH0.0083109361.60310254
Purchase WL Vend...147051072022-05-03 14:16:04934 days ago1651587364IN
0xD60917e1...5a89B3281
0 ETH0.007560956.04365328
Purchase WL Vend...147050392022-05-03 14:00:21934 days ago1651586421IN
0xD60917e1...5a89B3281
0 ETH0.0078137357.91768783
Purchase WL Vend...147050302022-05-03 13:59:02934 days ago1651586342IN
0xD60917e1...5a89B3281
0 ETH0.0092002868.19520206
Purchase WL Vend...147049962022-05-03 13:50:39934 days ago1651585839IN
0xD60917e1...5a89B3281
0 ETH0.0095963971.13127418
Purchase WL Vend...147049812022-05-03 13:47:31934 days ago1651585651IN
0xD60917e1...5a89B3281
0 ETH0.0081709760.56566144
Purchase WL Vend...147049612022-05-03 13:43:04934 days ago1651585384IN
0xD60917e1...5a89B3281
0 ETH0.0104610775.01990909
Purchase WL Vend...147049612022-05-03 13:43:04934 days ago1651585384IN
0xD60917e1...5a89B3281
0 ETH0.0104610775.01990909
Purchase WL Vend...147049582022-05-03 13:42:15934 days ago1651585335IN
0xD60917e1...5a89B3281
0 ETH0.0121227786.93652999
Purchase WL Vend...147049552022-05-03 13:40:44934 days ago1651585244IN
0xD60917e1...5a89B3281
0 ETH0.0102584173.56653847
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MartianMarketWL

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 2022-03-28
*/

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


/////////////////////////////////////////////////////////////////////////
//     __  ___         __  _             __  ___         __       __   //
//    /  |/  /__ _____/ /_(_)__ ____    /  |/  /__ _____/ /_____ / /_  //
//   / /|_/ / _ `/ __/ __/ / _ `/ _ \  / /|_/ / _ `/ __/  '_/ -_) __/  //
//  /_/  /_/\_,_/_/  \__/_/\_,_/_//_/ /_/  /_/\_,_/_/ /_/\_\\__/\__/   //
//                                                by 0xInuarashi.eth   //
/////////////////////////////////////////////////////////////////////////

/*
    Martian Market by 0xInuarashi for Message to Martians (Martians)
    A Fully functioning on-chain CMS system that can be tapped into front-ends
    and create a responsive website based on contract-specific databases.

    ** THIS IS A DECENTRALIZED AND TRUSTLESS WHITELIST MARKETPLACE CREATION SYSTEM **

    We chose not to use a proxy contract as multiple approvals have to be done
    for this contract. In this case, we chose the most decentralized approach
    which is to create an immutable contract with minimal owner access and 
    allow full control of contract owners' functions over their own database, 
    which is not editable or tamperable even by the Ownable owner themself.

    >>>> Governance Model <<<<

        Ownable Owner 
            - Set Super Governor Address
            - Renounce Super Governor Address (1-way)
            - Set Governor Address
            - Set $MES Address 

        Super Governor
            - Enable / Disable Projects
            - Set Project Infos 
            - Unstuck Owners (On Super Governor Enabled Projects Only)

        Governor
            - Set Registry Price
            - Set Registry Treasury Address
            - Withdraw $MES from Contract

        Contract Owner
            - Register Their Contract with $MES
            - Set Project Info
            - Set Treasury Address
            - Set Contract Controllers
            - Add Items 
            - Modify Items
            - Remove Items

        Contract Controller
            - Add Items 
            - Modify Items
            - Remove Items

    >>>> Interfacing <<<<<

    To draw a front-end interface:
    
        getAllEnabledContracts() - Enumerate all available contracts for selection
        (for contract-specific front-end interfaces, just pull data from your 
        contract only)
    
        getWLVendingItemsAll(address contract_) - Enumerate all vending items
        available for the contract. Supports over 1000 items in 1 call but
        if you get gas errors, use a pagination method instead.

        Pagination method: 
        getWLVendingItemsPaginated(address contract_, uint256 start_, uint256 end_)
        for the start_, generally you can use 0, and for end_, inquire from function
        getWLVendingItemsLength(address contract_)

    For interaction of users:

        purchaseWLVendingItem(address contract_, uint256 index_) can be used
        and automatically populated to the correct buttons for each WLVendingItem
        for that, an ethers.js call is invoked for the user to call the function
        which will transfer their ERC20 token and add them to the purchasers list

    For administration:

        setTreasuryAddress(address contract_, address treasury_) can only be set
        by the contract owner. For this, they are able to set where the ERC20 tokens
        from the whitelist marketplace sales go to. By default, this is 0x...dead
        effectively burning the tokens

        addWLVendingItem(address contract_, string calldata title_, 
        string calldata imageUri_, string calldata projectUri_,
        string calldata description_, uint32 amountAvailable_, uint32 deadline_,
        uint256 price_) is used to create a new WLVendingItem for your contract
        with the details as the input arguments stated.

        modifyWLVendingItem(address contract_, uint256 index_, 
        WLVendingItem memory WLVendingItem_) lets you modify a WLVendingItem.
        You have to pass in a tuple instead. Only use when necessary. Not
        recommended to use.

        deleteMostRecentWLVendingItem(address contract_) we use a .pop() for this so
        it can only delete the most recent item. For some mistakes that you made and
        want to erase them.

        manageController(address contract_, address operator_, bool bool_) is a special
        governance function which allows you to add controllers to the contract
        to do actions on your behalf. 
*/

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

interface IERC20 {
    function owner() external view returns (address);
    function balanceOf(address address_) external view returns (uint256);
    function transferFrom(address from_, address to_, uint256 amount_) external;
}

contract MartianMarketWL is Ownable {

    // Events
    event TreasuryManaged(address indexed contract_, address treasury_);
    event OperatorManaged(address indexed contract_, address operator_, bool bool_);
    event GovernorUnstuckOwner(address indexed contract_, address indexed operator_,
        address stuckOwner_, address unstuckOwner_);
    event WLVendingItemAdded(address indexed contract_, string title_, 
        string imageUri_, string projectUri_, string description_, 
        uint32 amountAvailable_, uint32 deadline_, uint256 price_);
    event WLVendingItemRemoved(address indexed contract_, address operator_,
        WLVendingItem item_);
    event WLVendingItemPurchased(address indexed contract_, uint256 index_, 
        address buyer_, WLVendingItem item_);
    event ContractRegistered(address indexed contract_, address registerer_,
        uint256 registrationPrice_);
    event ContractAdministered(address indexed contract_, address registerer_,
        bool bool_);
    event ProjectInfoPushed(address indexed contract_, address registerer_,
        string projectName_, string tokenImage_);
    event WLVendingItemModified(address indexed contract_, WLVendingItem before_,
        WLVendingItem after_);

    // Governance
    IERC20 public MES = IERC20(0x3C2Eb40D25a4b2B5A068a959a40d57D63Dc98B95);
    function setMES(address address_) external onlyOwner {
        MES = IERC20(address_);
    }

    // Setting the Governor
    address public superGovernorAddress;
    address public governorAddress;
    address public registrationCollector;
    
    constructor() {
        superGovernorAddress = msg.sender;
        governorAddress = msg.sender;
        registrationCollector = address(this);
    }

    // Ownable Governance Setup
    function setSuperGovernorAddress(address superGovernor_) external onlyOwner {
        // If superGovernor has been renounced, it is never enabled again.
        require(superGovernorAddress != address(0),
            "Super Governor Access has been renounced");

        superGovernorAddress = superGovernor_;
    }
    modifier onlySuperGovernor {
        require(msg.sender == superGovernorAddress,
            "You are not the contract super governor!");
        _;
    }
    function setGovernorAddress(address governor_) external onlyOwner {
        governorAddress = governor_;
    }
    modifier onlyGovernor {
        require(msg.sender == governorAddress,
            "You are not the contract governor!");
        _;
    }

    // Project Control (Super Governor)
    mapping(address => address) contractToUnstuckOwner;

    function SG_SetContractToVending(address contract_, bool bool_) external
    onlySuperGovernor {
        require(contractToEnabled[contract_] != bool_,
            "Contract Already Set as Boolean!");

        // Enum Tracking on bool_ statement
        contractToEnabled[contract_] = bool_;
        bool_ ? _addContractToEnum(contract_) : _removeContractFromEnum(contract_);
        emit ContractAdministered(contract_, msg.sender, bool_);
    }
    function SG_SetContractToProjectInfo(address contract_, string calldata 
    projectName_, string calldata tokenImage_) external onlySuperGovernor {
        contractToProjectInfo[contract_] = ProjectInfo(projectName_, tokenImage_);
        emit ProjectInfoPushed(contract_, msg.sender, projectName_, tokenImage_);
    }
    function SG_SetStuckOwner(address contract_, address unstuckOwner_) 
    external onlySuperGovernor {

        // Onboarding for ERC20 of non-initialized contracts
        // In case of renounced or unretrievable owners

        // I the contract was not enabled by the super governor, but 
        // through user registration by paying $MES, this function 
        // is forever disabled for them.
        require(!contractToMESRegistry[contract_],
            "Ownership has been proven through registration.");

        // For maximum trustlessness, this can only be used if there has never been
        // an item created in their store. Once they create an item, this effectively
        // proves ownership is intact and disables this ability forever.
        require(contractToWLVendingItems[contract_].length == 0,
            "Ownership has been proven.");
            
        contractToUnstuckOwner[contract_] = unstuckOwner_;
        emit GovernorUnstuckOwner(contract_, msg.sender, 
            IERC20(contract_).owner(), unstuckOwner_);
    }
    
    // Registry Control (Governor)
    uint256 public registrationPrice = 2000 ether; // 2000 $MES
    function G_setRegistrationPrice(uint256 price_) external onlyGovernor {
        registrationPrice = price_;
    }
    function G_setRegistrationCollector(address collector_) external onlyGovernor {
        registrationCollector = collector_;
    }
    function G_withdrawMESfromContract(address receiver_) external onlyGovernor {
        MES.transferFrom(address(this), receiver_, MES.balanceOf(address(this)));
    }

    // Registry Logic
    // Database Entry for Enabled Addresses + Enumeration System //
    mapping(address => bool) public contractToEnabled;

    // Enumeration Tools 
    address[] public enabledContracts;
    mapping(address => uint256) public enabledContractsIndex;

    function getAllEnabledContracts() external view returns (address[] memory) {
        return enabledContracts;
    }
    function _addContractToEnum(address contract_) internal {
        enabledContractsIndex[contract_] = enabledContracts.length;
        enabledContracts.push(contract_);
    }
    function _removeContractFromEnum(address contract_) internal {
        uint256 _lastIndex = enabledContracts.length - 1;
        uint256 _currentIndex = enabledContractsIndex[contract_];

        // If the contract is not the last contract in the array
        if (_currentIndex != _lastIndex) {
            // Replace the to-be-deleted address with the last address
            address _lastAddress = enabledContracts[_lastIndex];
            enabledContracts[_currentIndex] = _lastAddress;
        }

        // Remove the last item
        enabledContracts.pop();
        // Delete the index
        delete enabledContractsIndex[contract_];
    }

    // Registry (Contract Owner)
    mapping(address => bool) public contractToMESRegistry;
    function registerContractToVending(address contract_) external {
        require(msg.sender == IERC20(contract_).owner(),
            "You are not the Contract Owner!");
        require(!contractToEnabled[contract_],
            "Your contract has already been registered!");
        require(MES.balanceOf(msg.sender) >= registrationPrice,
            "You don't have enough $MES!");
        
        MES.transferFrom(msg.sender, registrationCollector, registrationPrice);
        
        contractToEnabled[contract_] = true;
        contractToMESRegistry[contract_] = true;
        _addContractToEnum(contract_);
        emit ContractRegistered(contract_, msg.sender, registrationPrice);
    }

    // Contract Owner Governance Control
    modifier onlyContractOwner (address contract_) {
        address _owner = contractToUnstuckOwner[contract_] != address(0) ? 
            contractToUnstuckOwner[contract_] : IERC20(contract_).owner();

        require(msg.sender == _owner,
            "You are not the Contract Owner!");
        require(contractToEnabled[contract_],
            "Please register your Contract first!");
        _;
    }
    modifier onlyAuthorized (address contract_, address operator_) {
        require(contractToControllersApproved[contract_][operator_]
            || msg.sender == (contractToUnstuckOwner[contract_] != address(0) ? 
            contractToUnstuckOwner[contract_] : IERC20(contract_).owner()),
            "You are not Authorized for this ERC20 Contract!");
        _;
    }

    // Project Control (Contract Owner)
    struct ProjectInfo {
        string projectName;
        string tokenImageUri;
    }
    
    mapping(address => ProjectInfo) public contractToProjectInfo;
    
    function registerProjectInfo(address contract_, string calldata projectName_,
    string calldata tokenImage_) external onlyContractOwner(contract_) {
        contractToProjectInfo[contract_] = ProjectInfo(projectName_, tokenImage_);
        emit ProjectInfoPushed(contract_, msg.sender, projectName_, tokenImage_);
    }

    mapping(address => mapping(address => bool)) public contractToControllersApproved;
    
    function manageController(address contract_, address operator_, bool bool_) 
    external onlyContractOwner(contract_) {
        contractToControllersApproved[contract_][operator_] = bool_;
        emit OperatorManaged(contract_, operator_, bool_);
    }

    address internal burnAddress = 0x000000000000000000000000000000000000dEaD;
    mapping(address => address) public contractToTreasuryAddress;
    
    function _getTreasury(address contract_) internal view returns (address) {
        return contractToTreasuryAddress[contract_] != address(0) ? 
            contractToTreasuryAddress[contract_] : burnAddress; 
    }
    function setTreasuryAddress(address contract_, address treasury_) external 
    onlyContractOwner(contract_) {
        contractToTreasuryAddress[contract_] = treasury_;
        emit TreasuryManaged(contract_, treasury_);
    }

    // Whitelist Marketplace 
    struct WLVendingItem {
        string title;
        string imageUri;
        string projectUri;
        string description;
        uint32 amountAvailable;
        uint32 amountPurchased;
        uint32 deadline;
        uint256 price;
    }

    // Database of Vending Items for each ERC20
    mapping(address => WLVendingItem[]) public contractToWLVendingItems;
    
    // Database of Vending Items Purchasers for each ERC20
    mapping(address => mapping(uint256 => address[])) public contractToWLPurchasers;
    mapping(address => mapping(uint256 => mapping(address => bool))) public 
        contractToWLPurchased;

    function addWLVendingItem(address contract_, string calldata title_, 
    string calldata imageUri_, string calldata projectUri_, 
    string calldata description_, uint32 amountAvailable_, 
    uint32 deadline_, uint256 price_) external 
    onlyAuthorized(contract_, msg.sender) {
        require(bytes(title_).length > 0,
            "You must specify a Title!");
        require(uint256(deadline_) > block.timestamp,
            "Already expired timestamp!");

        contractToWLVendingItems[contract_].push(
            WLVendingItem(
                title_,
                imageUri_,
                projectUri_,
                description_,
                amountAvailable_,
                0,
                deadline_,
                price_
            )
        );
        emit WLVendingItemAdded(contract_, title_, imageUri_, projectUri_, description_,
        amountAvailable_, deadline_, price_);
    }
    function modifyWLVendingItem(address contract_, uint256 index_,
    WLVendingItem memory WLVendingItem_) external 
    onlyAuthorized(contract_, msg.sender) {
        WLVendingItem memory _item = contractToWLVendingItems[contract_][index_];

        require(bytes(_item.title).length > 0,
            "This WLVendingItem does not exist!");
        require(WLVendingItem_.amountAvailable >= _item.amountPurchased,
            "Amount Available must be >= Amount Purchased!");
        
        contractToWLVendingItems[contract_][index_] = WLVendingItem_;
        emit WLVendingItemModified(contract_, _item, WLVendingItem_);
    }

    function deleteMostRecentWLVendingItem(address contract_) external
    onlyAuthorized(contract_, msg.sender) {
        uint256 _lastIndex = contractToWLVendingItems[contract_].length - 1;

        WLVendingItem memory _item = contractToWLVendingItems[contract_][_lastIndex];

        require(_item.amountPurchased == 0,
            "Cannot delete item with already bought goods!");
        
        contractToWLVendingItems[contract_].pop();
        emit WLVendingItemRemoved(contract_, msg.sender, _item);
    }

    // Core Function of WL Vending (User)
    function purchaseWLVendingItem(address contract_, uint256 index_) external {
        
        // Load the WLVendingItem to Memory
        WLVendingItem memory _item = contractToWLVendingItems[contract_][index_];

        // Check the necessary requirements to purchase
        require(bytes(_item.title).length > 0,
            "This WLVendingItem does not exist!");
        require(_item.amountAvailable > _item.amountPurchased,
            "No more WL remaining!");
        require(_item.deadline >= block.timestamp,
            "Passed deadline!");
        require(!contractToWLPurchased[contract_][index_][msg.sender], 
            "Already purchased!");
        require(IERC20(contract_).balanceOf(msg.sender) >= _item.price,
            "Not enough tokens!");

        // Pay for the WL
        IERC20(contract_).transferFrom(
            msg.sender, _getTreasury(contract_), _item.price);
        
        // Add the address into the WL List 
        contractToWLPurchased[contract_][index_][msg.sender] = true;
        contractToWLPurchasers[contract_][index_].push(msg.sender);

        // Increment Amount Purchased
        contractToWLVendingItems[contract_][index_].amountPurchased++;

        emit WLVendingItemPurchased(contract_, index_, msg.sender, _item);
    }

    // Read Functions
    function getWLPurchasersOf(address contract_, uint256 index_) external view 
    returns (address[] memory) { 
        return contractToWLPurchasers[contract_][index_];
    }
    function getWLVendingItemsAll(address contract_) external view 
    returns (WLVendingItem[] memory) {
        return contractToWLVendingItems[contract_];
    }
    function getWLVendingItemsLength(address contract_) external view 
    returns (uint256) {
        return contractToWLVendingItems[contract_].length;
    }
    function getWLVendingItemsPaginated(address contract_, uint256 start_, uint256 end_)
    external view returns (WLVendingItem[] memory) {
        uint256 _arrayLength = end_ - start_ + 1;
        WLVendingItem[] memory _items = new WLVendingItem[] (_arrayLength);
        uint256 _index;

        for (uint256 i = 0; i < _arrayLength; i++) {
            _items[_index++] = contractToWLVendingItems[contract_][start_ + i];
        }

        return _items;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contract_","type":"address"},{"indexed":false,"internalType":"address","name":"registerer_","type":"address"},{"indexed":false,"internalType":"bool","name":"bool_","type":"bool"}],"name":"ContractAdministered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contract_","type":"address"},{"indexed":false,"internalType":"address","name":"registerer_","type":"address"},{"indexed":false,"internalType":"uint256","name":"registrationPrice_","type":"uint256"}],"name":"ContractRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contract_","type":"address"},{"indexed":true,"internalType":"address","name":"operator_","type":"address"},{"indexed":false,"internalType":"address","name":"stuckOwner_","type":"address"},{"indexed":false,"internalType":"address","name":"unstuckOwner_","type":"address"}],"name":"GovernorUnstuckOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contract_","type":"address"},{"indexed":false,"internalType":"address","name":"operator_","type":"address"},{"indexed":false,"internalType":"bool","name":"bool_","type":"bool"}],"name":"OperatorManaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contract_","type":"address"},{"indexed":false,"internalType":"address","name":"registerer_","type":"address"},{"indexed":false,"internalType":"string","name":"projectName_","type":"string"},{"indexed":false,"internalType":"string","name":"tokenImage_","type":"string"}],"name":"ProjectInfoPushed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contract_","type":"address"},{"indexed":false,"internalType":"address","name":"treasury_","type":"address"}],"name":"TreasuryManaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contract_","type":"address"},{"indexed":false,"internalType":"string","name":"title_","type":"string"},{"indexed":false,"internalType":"string","name":"imageUri_","type":"string"},{"indexed":false,"internalType":"string","name":"projectUri_","type":"string"},{"indexed":false,"internalType":"string","name":"description_","type":"string"},{"indexed":false,"internalType":"uint32","name":"amountAvailable_","type":"uint32"},{"indexed":false,"internalType":"uint32","name":"deadline_","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"price_","type":"uint256"}],"name":"WLVendingItemAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contract_","type":"address"},{"components":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"imageUri","type":"string"},{"internalType":"string","name":"projectUri","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint32","name":"amountAvailable","type":"uint32"},{"internalType":"uint32","name":"amountPurchased","type":"uint32"},{"internalType":"uint32","name":"deadline","type":"uint32"},{"internalType":"uint256","name":"price","type":"uint256"}],"indexed":false,"internalType":"struct MartianMarketWL.WLVendingItem","name":"before_","type":"tuple"},{"components":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"imageUri","type":"string"},{"internalType":"string","name":"projectUri","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint32","name":"amountAvailable","type":"uint32"},{"internalType":"uint32","name":"amountPurchased","type":"uint32"},{"internalType":"uint32","name":"deadline","type":"uint32"},{"internalType":"uint256","name":"price","type":"uint256"}],"indexed":false,"internalType":"struct MartianMarketWL.WLVendingItem","name":"after_","type":"tuple"}],"name":"WLVendingItemModified","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contract_","type":"address"},{"indexed":false,"internalType":"uint256","name":"index_","type":"uint256"},{"indexed":false,"internalType":"address","name":"buyer_","type":"address"},{"components":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"imageUri","type":"string"},{"internalType":"string","name":"projectUri","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint32","name":"amountAvailable","type":"uint32"},{"internalType":"uint32","name":"amountPurchased","type":"uint32"},{"internalType":"uint32","name":"deadline","type":"uint32"},{"internalType":"uint256","name":"price","type":"uint256"}],"indexed":false,"internalType":"struct MartianMarketWL.WLVendingItem","name":"item_","type":"tuple"}],"name":"WLVendingItemPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contract_","type":"address"},{"indexed":false,"internalType":"address","name":"operator_","type":"address"},{"components":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"imageUri","type":"string"},{"internalType":"string","name":"projectUri","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint32","name":"amountAvailable","type":"uint32"},{"internalType":"uint32","name":"amountPurchased","type":"uint32"},{"internalType":"uint32","name":"deadline","type":"uint32"},{"internalType":"uint256","name":"price","type":"uint256"}],"indexed":false,"internalType":"struct MartianMarketWL.WLVendingItem","name":"item_","type":"tuple"}],"name":"WLVendingItemRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"collector_","type":"address"}],"name":"G_setRegistrationCollector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"G_setRegistrationPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver_","type":"address"}],"name":"G_withdrawMESfromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MES","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"},{"internalType":"string","name":"projectName_","type":"string"},{"internalType":"string","name":"tokenImage_","type":"string"}],"name":"SG_SetContractToProjectInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"},{"internalType":"bool","name":"bool_","type":"bool"}],"name":"SG_SetContractToVending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"},{"internalType":"address","name":"unstuckOwner_","type":"address"}],"name":"SG_SetStuckOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"},{"internalType":"string","name":"title_","type":"string"},{"internalType":"string","name":"imageUri_","type":"string"},{"internalType":"string","name":"projectUri_","type":"string"},{"internalType":"string","name":"description_","type":"string"},{"internalType":"uint32","name":"amountAvailable_","type":"uint32"},{"internalType":"uint32","name":"deadline_","type":"uint32"},{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"addWLVendingItem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"contractToControllersApproved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contractToEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contractToMESRegistry","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contractToProjectInfo","outputs":[{"internalType":"string","name":"projectName","type":"string"},{"internalType":"string","name":"tokenImageUri","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contractToTreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"contractToWLPurchased","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"contractToWLPurchasers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"contractToWLVendingItems","outputs":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"imageUri","type":"string"},{"internalType":"string","name":"projectUri","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint32","name":"amountAvailable","type":"uint32"},{"internalType":"uint32","name":"amountPurchased","type":"uint32"},{"internalType":"uint32","name":"deadline","type":"uint32"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"deleteMostRecentWLVendingItem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"enabledContracts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"enabledContractsIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllEnabledContracts","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"},{"internalType":"uint256","name":"index_","type":"uint256"}],"name":"getWLPurchasersOf","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"getWLVendingItemsAll","outputs":[{"components":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"imageUri","type":"string"},{"internalType":"string","name":"projectUri","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint32","name":"amountAvailable","type":"uint32"},{"internalType":"uint32","name":"amountPurchased","type":"uint32"},{"internalType":"uint32","name":"deadline","type":"uint32"},{"internalType":"uint256","name":"price","type":"uint256"}],"internalType":"struct MartianMarketWL.WLVendingItem[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"getWLVendingItemsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"},{"internalType":"uint256","name":"start_","type":"uint256"},{"internalType":"uint256","name":"end_","type":"uint256"}],"name":"getWLVendingItemsPaginated","outputs":[{"components":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"imageUri","type":"string"},{"internalType":"string","name":"projectUri","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint32","name":"amountAvailable","type":"uint32"},{"internalType":"uint32","name":"amountPurchased","type":"uint32"},{"internalType":"uint32","name":"deadline","type":"uint32"},{"internalType":"uint256","name":"price","type":"uint256"}],"internalType":"struct MartianMarketWL.WLVendingItem[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"},{"internalType":"address","name":"operator_","type":"address"},{"internalType":"bool","name":"bool_","type":"bool"}],"name":"manageController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"},{"internalType":"uint256","name":"index_","type":"uint256"},{"components":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"imageUri","type":"string"},{"internalType":"string","name":"projectUri","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint32","name":"amountAvailable","type":"uint32"},{"internalType":"uint32","name":"amountPurchased","type":"uint32"},{"internalType":"uint32","name":"deadline","type":"uint32"},{"internalType":"uint256","name":"price","type":"uint256"}],"internalType":"struct MartianMarketWL.WLVendingItem","name":"WLVendingItem_","type":"tuple"}],"name":"modifyWLVendingItem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"},{"internalType":"uint256","name":"index_","type":"uint256"}],"name":"purchaseWLVendingItem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"}],"name":"registerContractToVending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"},{"internalType":"string","name":"projectName_","type":"string"},{"internalType":"string","name":"tokenImage_","type":"string"}],"name":"registerProjectInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"registrationCollector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registrationPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"governor_","type":"address"}],"name":"setGovernorAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setMES","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"superGovernor_","type":"address"}],"name":"setSuperGovernorAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contract_","type":"address"},{"internalType":"address","name":"treasury_","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"superGovernorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"new_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600180546001600160a01b0319908116733c2eb40d25a4b2b5a068a959a40d57d63dc98b9517909155686c6b935b8bbd400000600655600d805490911661dead17905534801561005357600080fd5b50600080546001600160a01b0319908116339081179092556002805482168317905560038054821690921790915560048054909116301790556146a98061009b6000396000f3fe608060405234801561001057600080fd5b506004361061023c5760003560e01c80637d3db8c31161013b578063b8472316116100b8578063e2d979341161007c578063e2d97934146105c0578063e414f304146105d3578063e80e55e6146105e6578063f2fde38b146105f9578063fa8775ec1461060c57600080fd5b8063b84723161461054b578063ba17a3b41461055e578063c232315f14610571578063d026da301461059a578063e25cf219146105ad57600080fd5b806392587fed116100ff57806392587fed146104dd578063a05cb99e146104f0578063a13e2fed146104f8578063a688075014610518578063b2dd6af01461052b57600080fd5b80637d3db8c314610468578063803fc1401461047b57806388c47fed1461048e5780638da5cb5b146104a157806391ce8e2f146104b457600080fd5b806347ba83ac116101c957806355fec15d1161018d57806355fec15d146103e75780635c952b58146104085780635d3e5d5f1461042f5780636f6736ba146104425780637ba5a9ae1461045557600080fd5b806347ba83ac1461037b5780634a4332251461038e5780634a80efb5146103a15780634d7037dd146103b457806352b49357146103d457600080fd5b80631197705e116102105780631197705e14610306578063216586581461031b578063267caabb14610332578063276f1c4114610355578063449d1a541461036857600080fd5b80626149da14610241578063035006411461027957806304e565c9146102a45780630d4e41f9146102d2575b600080fd5b61026461024f366004613b1c565b600a6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61028c610287366004613f51565b61061f565b6040516001600160a01b039091168152602001610270565b6102646102b2366004613b5d565b600c60209081526000928352604080842090915290825290205460ff1681565b6102646102e0366004613dda565b601160209081526000938452604080852082529284528284209052825290205460ff1681565b610319610314366004613b1c565b610664565b005b61032460065481565b604051908152602001610270565b610264610340366004613b1c565b60076020526000908152604090205460ff1681565b60035461028c906001600160a01b031681565b610319610376366004613c12565b6106b9565b610319610389366004613b96565b6107f5565b61031961039c366004613b1c565b610975565b6103196103af366004613b1c565b610c60565b6103c76103c2366004613dae565b610d15565b6040516102709190614161565b6103196103e2366004613b1c565b610d94565b6103fa6103f5366004613b1c565b610de0565b60405161027092919061427d565b61041b610416366004613dae565b610f0c565b6040516102709897969594939291906142ab565b61031961043d366004613e1c565b6111a1565b60025461028c906001600160a01b031681565b610319610463366004613f86565b61176e565b610319610476366004613b1c565b61179d565b610319610489366004613c95565b6118b8565b61031961049c366004613b5d565b611d1e565b60005461028c906001600160a01b031681565b61028c6104c2366004613b1c565b600e602052600090815260409020546001600160a01b031681565b6103196104eb366004613c12565b611f17565b6103c7612140565b610324610506366004613b1c565b60096020526000908152604090205481565b610319610526366004613b1c565b6121a2565b61053e610539366004613f51565b6121ee565b60405161027091906141a2565b60045461028c906001600160a01b031681565b61031961056c366004613dae565b6125d2565b61032461057f366004613b1c565b6001600160a01b03166000908152600f602052604090205490565b61028c6105a8366004613f86565b612c3a565b6103196105bb366004613b1c565b612c64565b60015461028c906001600160a01b031681565b61053e6105e1366004613b1c565b6131a3565b6103196105f4366004613bdd565b61349f565b610319610607366004613b1c565b6135c1565b61031961061a366004613b5d565b61360d565b6010602052826000526040600020602052816000526040600020818154811061064757600080fd5b6000918252602090912001546001600160a01b0316925083915050565b6000546001600160a01b031633146106975760405162461bcd60e51b815260040161068e9061432a565b60405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146106e35760405162461bcd60e51b815260040161068e906143d4565b6040805160606020601f87018190040282018101835291810185815290918291908790879081908501838280828437600092019190915250505090825250604080516020601f86018190048102820181019092528481529181019190859085908190840183828082843760009201829052509390945250506001600160a01b0388168152600b602090815260409091208351805191935061078892849291019061393c565b5060208281015180516107a1926001850192019061393c565b50905050846001600160a01b03167f25fdbc222e090858cc121aef55da11cf44faaf595ca940f31cb371ddbe1b6d8233868686866040516107e69594939291906140f1565b60405180910390a25050505050565b6001600160a01b0380841660009081526005602052604081205485921661088c57816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561084f57600080fd5b505afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190613b40565b6108a8565b6001600160a01b03808316600090815260056020526040902054165b9050336001600160a01b038216146108d25760405162461bcd60e51b815260040161068e9061445e565b6001600160a01b03821660009081526007602052604090205460ff1661090a5760405162461bcd60e51b815260040161068e9061434e565b6001600160a01b038581166000818152600c6020908152604080832094891680845294825291829020805460ff191688151590811790915582519485529084015290917f497c860693ee48ca4920e55d08ac4ba08d719ae9e1883db046133620ce194df491016107e6565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ae57600080fd5b505afa1580156109c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e69190613b40565b6001600160a01b0316336001600160a01b031614610a165760405162461bcd60e51b815260040161068e9061445e565b6001600160a01b03811660009081526007602052604090205460ff1615610a925760405162461bcd60e51b815260206004820152602a60248201527f596f757220636f6e74726163742068617320616c7265616479206265656e20726044820152696567697374657265642160b01b606482015260840161068e565b6006546001546040516370a0823160e01b81523360048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610ad857600080fd5b505afa158015610aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b109190613f9f565b1015610b5e5760405162461bcd60e51b815260206004820152601b60248201527f596f7520646f6e2774206861766520656e6f75676820244d4553210000000000604482015260640161068e565b600154600480546006546040516323b872dd60e01b815233938101939093526001600160a01b0391821660248401526044830152909116906323b872dd90606401600060405180830381600087803b158015610bb957600080fd5b505af1158015610bcd573d6000803e3d6000fd5b505050506001600160a01b03811660009081526007602090815260408083208054600160ff199182168117909255600a909352922080549091169091179055610c158161378b565b6006546040805133815260208101929092526001600160a01b038316917ff324ec9e65c6849640d47b8d287a652b8287a533bcf80092a857f3e02b0fcbcc910160405180910390a250565b6000546001600160a01b03163314610c8a5760405162461bcd60e51b815260040161068e9061432a565b6002546001600160a01b0316610cf35760405162461bcd60e51b815260206004820152602860248201527f537570657220476f7665726e6f722041636365737320686173206265656e2072604482015267195b9bdd5b98d95960c21b606482015260840161068e565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382166000908152601060209081526040808320848452825291829020805483518184028101840190945280845260609392830182828015610d8757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d69575b5050505050905092915050565b6003546001600160a01b03163314610dbe5760405162461bcd60e51b815260040161068e90614392565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600b60205260009081526040902080548190610dfb9061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e279061458c565b8015610e745780601f10610e4957610100808354040283529160200191610e74565b820191906000526020600020905b815481529060010190602001808311610e5757829003601f168201915b505050505090806001018054610e899061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb59061458c565b8015610f025780601f10610ed757610100808354040283529160200191610f02565b820191906000526020600020905b815481529060010190602001808311610ee557829003601f168201915b5050505050905082565b600f6020528160005260406000208181548110610f2857600080fd5b906000526020600020906006020160009150915050806000018054610f4c9061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f789061458c565b8015610fc55780601f10610f9a57610100808354040283529160200191610fc5565b820191906000526020600020905b815481529060010190602001808311610fa857829003601f168201915b505050505090806001018054610fda9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546110069061458c565b80156110535780601f1061102857610100808354040283529160200191611053565b820191906000526020600020905b81548152906001019060200180831161103657829003601f168201915b5050505050908060020180546110689061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546110949061458c565b80156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b5050505050908060030180546110f69061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546111229061458c565b801561116f5780601f106111445761010080835404028352916020019161116f565b820191906000526020600020905b81548152906001019060200180831161115257829003601f168201915b5050506004840154600590940154929363ffffffff80821694600160201b830482169450600160401b90920416915088565b6001600160a01b0383166000908152600c602090815260408083203380855292529091205484919060ff168061129857506001600160a01b038281166000908152600560205260409020541661126757816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561122a57600080fd5b505afa15801561123e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112629190613b40565b611283565b6001600160a01b03808316600090815260056020526040902054165b6001600160a01b0316336001600160a01b0316145b6112b45760405162461bcd60e51b815260040161068e90614495565b6001600160a01b0385166000908152600f602052604081208054869081106112de576112de614632565b9060005260206000209060060201604051806101000160405290816000820180546113089061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546113349061458c565b80156113815780601f1061135657610100808354040283529160200191611381565b820191906000526020600020905b81548152906001019060200180831161136457829003601f168201915b5050505050815260200160018201805461139a9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546113c69061458c565b80156114135780601f106113e857610100808354040283529160200191611413565b820191906000526020600020905b8154815290600101906020018083116113f657829003601f168201915b5050505050815260200160028201805461142c9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546114589061458c565b80156114a55780601f1061147a576101008083540402835291602001916114a5565b820191906000526020600020905b81548152906001019060200180831161148857829003601f168201915b505050505081526020016003820180546114be9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546114ea9061458c565b80156115375780601f1061150c57610100808354040283529160200191611537565b820191906000526020600020905b81548152906001019060200180831161151a57829003601f168201915b5050509183525050600482015463ffffffff8082166020840152600160201b820481166040840152600160401b90910416606082015260059091015460809091015280515190915061159b5760405162461bcd60e51b815260040161068e9061441c565b8060a0015163ffffffff16846080015163ffffffff1610156116155760405162461bcd60e51b815260206004820152602d60248201527f416d6f756e7420417661696c61626c65206d757374206265203e3d20416d6f7560448201526c6e74205075726368617365642160981b606482015260840161068e565b6001600160a01b0386166000908152600f6020526040902080548591908790811061164257611642614632565b9060005260206000209060060201600082015181600001908051906020019061166c92919061393c565b506020828101518051611685926001850192019061393c565b50604082015180516116a191600284019160209091019061393c565b50606082015180516116bd91600384019160209091019061393c565b50608082015160048201805460a085015160c086015163ffffffff908116600160401b026bffffffff000000000000000019928216600160201b0267ffffffffffffffff199094169190951617919091171691909117905560e0909101516005909101556040516001600160a01b038716907ff8154fb605f92c0cedb89c9080be140831abaa604eab2891a7b4e112f74ff9fc9061175e90849088906144e4565b60405180910390a2505050505050565b6003546001600160a01b031633146117985760405162461bcd60e51b815260040161068e90614392565b600655565b6003546001600160a01b031633146117c75760405162461bcd60e51b815260040161068e90614392565b6001546040516370a0823160e01b815230600482018190526001600160a01b03909216916323b872dd91849084906370a082319060240160206040518083038186803b15801561181657600080fd5b505afa15801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e9190613f9f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561189d57600080fd5b505af11580156118b1573d6000803e3d6000fd5b5050505050565b6001600160a01b038c166000908152600c60209081526040808320338085529252909120548d919060ff16806119af57506001600160a01b038281166000908152600560205260409020541661197e57816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190613b40565b61199a565b6001600160a01b03808316600090815260056020526040902054165b6001600160a01b0316336001600160a01b0316145b6119cb5760405162461bcd60e51b815260040161068e90614495565b8b611a185760405162461bcd60e51b815260206004820152601960248201527f596f75206d75737420737065636966792061205469746c652100000000000000604482015260640161068e565b428463ffffffff1611611a6d5760405162461bcd60e51b815260206004820152601a60248201527f416c726561647920657870697265642074696d657374616d7021000000000000604482015260640161068e565b600f60008f6001600160a01b03166001600160a01b031681526020019081526020016000206040518061010001604052808f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8e018190048102820181019092528c815291810191908d908d9081908401838280828437600092019190915250505090825250604080516020601f8c018190048102820181019092528a815291810191908b908b9081908401838280828437600092018290525093855250505063ffffffff808a166020808501919091526040840183905290891660608401526080909201879052835460018101855593815281902082518051939460060290910192611be6928492019061393c565b506020828101518051611bff926001850192019061393c565b5060408201518051611c1b91600284019160209091019061393c565b5060608201518051611c3791600384019160209091019061393c565b5060808201518160040160006101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160040160046101000a81548163ffffffff021916908363ffffffff16021790555060c08201518160040160086101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816005015550508d6001600160a01b03167f516625247f23faec42d96feb3c46c2ea91f04d4d248a69c50d4bfdcce8921f7f8e8e8e8e8e8e8e8e8e8e8e604051611d069b9a99989796959493929190614204565b60405180910390a25050505050505050505050505050565b6002546001600160a01b03163314611d485760405162461bcd60e51b815260040161068e906143d4565b6001600160a01b0382166000908152600a602052604090205460ff1615611dc95760405162461bcd60e51b815260206004820152602f60248201527f4f776e65727368697020686173206265656e2070726f76656e207468726f756760448201526e34103932b3b4b9ba3930ba34b7b71760891b606482015260840161068e565b6001600160a01b0382166000908152600f602052604090205415611e2f5760405162461bcd60e51b815260206004820152601a60248201527f4f776e65727368697020686173206265656e2070726f76656e2e000000000000604482015260640161068e565b6001600160a01b0382811660008181526005602090815260409182902080546001600160a01b031916948616949094179093558051638da5cb5b60e01b8152905133937fd457ae6e865b408148ffe030847ee9c7659cba553a0ec44524e858dfc81d1fa1928492638da5cb5b92600480840193919291829003018186803b158015611eb957600080fd5b505afa158015611ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef19190613b40565b604080516001600160a01b03928316815291861660208301520160405180910390a35050565b6001600160a01b03808616600090815260056020526040812054879216611fae57816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f7157600080fd5b505afa158015611f85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa99190613b40565b611fca565b6001600160a01b03808316600090815260056020526040902054165b9050336001600160a01b03821614611ff45760405162461bcd60e51b815260040161068e9061445e565b6001600160a01b03821660009081526007602052604090205460ff1661202c5760405162461bcd60e51b815260040161068e9061434e565b6040805160606020601f89018190040282018101835291810187815290918291908990899081908501838280828437600092019190915250505090825250604080516020601f88018190048102820181019092528681529181019190879087908190840183828082843760009201829052509390945250506001600160a01b038a168152600b60209081526040909120835180519193506120d192849291019061393c565b5060208281015180516120ea926001850192019061393c565b50905050866001600160a01b03167f25fdbc222e090858cc121aef55da11cf44faaf595ca940f31cb371ddbe1b6d82338888888860405161212f9594939291906140f1565b60405180910390a250505050505050565b6060600880548060200260200160405190810160405280929190818152602001828054801561219857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161217a575b5050505050905090565b6000546001600160a01b031633146121cc5760405162461bcd60e51b815260040161068e9061432a565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b606060006121fc8484614575565b61220790600161455d565b905060008167ffffffffffffffff81111561222457612224614648565b6040519080825280602002602001820160405280156122af57816020015b61229c60405180610100016040528060608152602001606081526020016060815260200160608152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600081525090565b8152602001906001900390816122425790505b5090506000805b838110156125c6576001600160a01b0388166000908152600f602052604090206122e0828961455d565b815481106122f0576122f0614632565b90600052602060002090600602016040518061010001604052908160008201805461231a9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546123469061458c565b80156123935780601f1061236857610100808354040283529160200191612393565b820191906000526020600020905b81548152906001019060200180831161237657829003601f168201915b505050505081526020016001820180546123ac9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546123d89061458c565b80156124255780601f106123fa57610100808354040283529160200191612425565b820191906000526020600020905b81548152906001019060200180831161240857829003601f168201915b5050505050815260200160028201805461243e9061458c565b80601f016020809104026020016040519081016040528092919081815260200182805461246a9061458c565b80156124b75780601f1061248c576101008083540402835291602001916124b7565b820191906000526020600020905b81548152906001019060200180831161249a57829003601f168201915b505050505081526020016003820180546124d09061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546124fc9061458c565b80156125495780601f1061251e57610100808354040283529160200191612549565b820191906000526020600020905b81548152906001019060200180831161252c57829003601f168201915b5050509183525050600482015463ffffffff8082166020840152600160201b820481166040840152600160401b9091041660608201526005909101546080909101528383612596816145c7565b9450815181106125a8576125a8614632565b602002602001018190525080806125be906145c7565b9150506122b6565b50909695505050505050565b6001600160a01b0382166000908152600f602052604081208054839081106125fc576125fc614632565b9060005260206000209060060201604051806101000160405290816000820180546126269061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546126529061458c565b801561269f5780601f106126745761010080835404028352916020019161269f565b820191906000526020600020905b81548152906001019060200180831161268257829003601f168201915b505050505081526020016001820180546126b89061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546126e49061458c565b80156127315780601f1061270657610100808354040283529160200191612731565b820191906000526020600020905b81548152906001019060200180831161271457829003601f168201915b5050505050815260200160028201805461274a9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546127769061458c565b80156127c35780601f10612798576101008083540402835291602001916127c3565b820191906000526020600020905b8154815290600101906020018083116127a657829003601f168201915b505050505081526020016003820180546127dc9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546128089061458c565b80156128555780601f1061282a57610100808354040283529160200191612855565b820191906000526020600020905b81548152906001019060200180831161283857829003601f168201915b5050509183525050600482015463ffffffff8082166020840152600160201b820481166040840152600160401b9091041660608201526005909101546080909101528051519091506128b95760405162461bcd60e51b815260040161068e9061441c565b8060a0015163ffffffff16816080015163ffffffff16116129145760405162461bcd60e51b81526020600482015260156024820152744e6f206d6f726520574c2072656d61696e696e672160581b604482015260640161068e565b428160c0015163ffffffff1610156129615760405162461bcd60e51b815260206004820152601060248201526f50617373656420646561646c696e652160801b604482015260640161068e565b6001600160a01b0383166000908152601160209081526040808320858452825280832033845290915290205460ff16156129d25760405162461bcd60e51b8152602060048201526012602482015271416c7265616479207075726368617365642160701b604482015260640161068e565b60e08101516040516370a0823160e01b81523360048201526001600160a01b038516906370a082319060240160206040518083038186803b158015612a1657600080fd5b505afa158015612a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4e9190613f9f565b1015612a915760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b604482015260640161068e565b826001600160a01b03166323b872dd33612aaa866137ec565b8460e001516040518463ffffffff1660e01b8152600401612aec939291906001600160a01b039384168152919092166020820152604081019190915260600190565b600060405180830381600087803b158015612b0657600080fd5b505af1158015612b1a573d6000803e3d6000fd5b505050506001600160a01b0383166000818152601160209081526040808320868452825280832033808552908352818420805460ff191660019081179091558585526010845282852088865284528285208054918201815585528385200180546001600160a01b0319169091179055928252600f905220805483908110612ba357612ba3614632565b6000918252602090912060046006909202018101805463ffffffff600160201b9091041691612bd1836145e2565b91906101000a81548163ffffffff021916908363ffffffff16021790555050826001600160a01b03167f6ba7d4fd8e5f038d9f00724c25edf24a48842fee67728f6f989088010fef9c1a833384604051612c2d93929190614509565b60405180910390a2505050565b60088181548110612c4a57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b0381166000908152600c602090815260408083203380855292529091205482919060ff1680612d5b57506001600160a01b0382811660009081526005602052604090205416612d2a57816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ced57600080fd5b505afa158015612d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d259190613b40565b612d46565b6001600160a01b03808316600090815260056020526040902054165b6001600160a01b0316336001600160a01b0316145b612d775760405162461bcd60e51b815260040161068e90614495565b6001600160a01b0383166000908152600f6020526040812054612d9c90600190614575565b6001600160a01b0385166000908152600f602052604081208054929350909183908110612dcb57612dcb614632565b906000526020600020906006020160405180610100016040529081600082018054612df59061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054612e219061458c565b8015612e6e5780601f10612e4357610100808354040283529160200191612e6e565b820191906000526020600020905b815481529060010190602001808311612e5157829003601f168201915b50505050508152602001600182018054612e879061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054612eb39061458c565b8015612f005780601f10612ed557610100808354040283529160200191612f00565b820191906000526020600020905b815481529060010190602001808311612ee357829003601f168201915b50505050508152602001600282018054612f199061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054612f459061458c565b8015612f925780601f10612f6757610100808354040283529160200191612f92565b820191906000526020600020905b815481529060010190602001808311612f7557829003601f168201915b50505050508152602001600382018054612fab9061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054612fd79061458c565b80156130245780601f10612ff957610100808354040283529160200191613024565b820191906000526020600020905b81548152906001019060200180831161300757829003601f168201915b5050509183525050600482015463ffffffff8082166020840152600160201b820481166040840152600160401b9091048116606083015260059092015460809091015260a082015191925016156130d35760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f742064656c657465206974656d207769746820616c72656164792060448201526c626f7567687420676f6f64732160981b606482015260840161068e565b6001600160a01b0385166000908152600f602052604090208054806130fa576130fa61461c565b6000828152602081206000199092019160068302019061311a82826139c0565b6131286001830160006139c0565b6131366002830160006139c0565b6131446003830160006139c0565b506004810180546bffffffffffffffffffffffff19169055600060059091015590556040516001600160a01b038616907f6dde1c9592810ef1a7d13d63ea1e8bd97ad5b18c972e9194399ac9b4ec8ccf64906107e69033908590614135565b6001600160a01b0381166000908152600f60209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561349457838290600052602060002090600602016040518061010001604052908160008201805461320f9061458c565b80601f016020809104026020016040519081016040528092919081815260200182805461323b9061458c565b80156132885780601f1061325d57610100808354040283529160200191613288565b820191906000526020600020905b81548152906001019060200180831161326b57829003601f168201915b505050505081526020016001820180546132a19061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546132cd9061458c565b801561331a5780601f106132ef5761010080835404028352916020019161331a565b820191906000526020600020905b8154815290600101906020018083116132fd57829003601f168201915b505050505081526020016002820180546133339061458c565b80601f016020809104026020016040519081016040528092919081815260200182805461335f9061458c565b80156133ac5780601f10613381576101008083540402835291602001916133ac565b820191906000526020600020905b81548152906001019060200180831161338f57829003601f168201915b505050505081526020016003820180546133c59061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546133f19061458c565b801561343e5780601f106134135761010080835404028352916020019161343e565b820191906000526020600020905b81548152906001019060200180831161342157829003601f168201915b5050509183525050600482015463ffffffff808216602080850191909152600160201b830482166040850152600160401b90920416606083015260059092015460809091015290825260019290920191016131db565b505050509050919050565b6002546001600160a01b031633146134c95760405162461bcd60e51b815260040161068e906143d4565b6001600160a01b03821660009081526007602052604090205460ff16151581151514156135385760405162461bcd60e51b815260206004820181905260248201527f436f6e747261637420416c72656164792053657420617320426f6f6c65616e21604482015260640161068e565b6001600160a01b0382166000908152600760205260409020805460ff19168215151790558061356f5761356a82613840565b613578565b6135788261378b565b6040805133815282151560208201526001600160a01b038416917f95672512364892dc5eac723d03b303897847c21af452724bffc2f62d18778b14910160405180910390a25050565b6000546001600160a01b031633146135eb5760405162461bcd60e51b815260040161068e9061432a565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038083166000908152600560205260408120548492166136a457816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561366757600080fd5b505afa15801561367b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061369f9190613b40565b6136c0565b6001600160a01b03808316600090815260056020526040902054165b9050336001600160a01b038216146136ea5760405162461bcd60e51b815260040161068e9061445e565b6001600160a01b03821660009081526007602052604090205460ff166137225760405162461bcd60e51b815260040161068e9061434e565b6001600160a01b038481166000818152600e602090815260409182902080546001600160a01b0319169488169485179055905192835290917f802cb57ae6c007281ec553667818c1dc1bba3db1b66085be1e339ac9efbf107d910160405180910390a250505050565b600880546001600160a01b039092166000818152600960205260408120849055600184018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390910180546001600160a01b0319169091179055565b6001600160a01b038181166000908152600e602052604081205490911661381e57600d546001600160a01b031661383a565b6001600160a01b038083166000908152600e6020526040902054165b92915050565b60085460009061385290600190614575565b6001600160a01b0383166000908152600960205260409020549091508082146138e95760006008838154811061388a5761388a614632565b600091825260209091200154600880546001600160a01b0390921692508291849081106138b9576138b9614632565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505b60088054806138fa576138fa61461c565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03949094168152600990935250506040812055565b8280546139489061458c565b90600052602060002090601f01602090048101928261396a57600085556139b0565b82601f1061398357805160ff19168380011785556139b0565b828001600101855582156139b0579182015b828111156139b0578251825591602001919060010190613995565b506139bc9291506139fd565b5090565b5080546139cc9061458c565b6000825580601f106139dc575050565b601f0160209004906000526020600020908101906139fa91906139fd565b50565b5b808211156139bc57600081556001016139fe565b8035613a1d8161465e565b919050565b80358015158114613a1d57600080fd5b60008083601f840112613a4457600080fd5b50813567ffffffffffffffff811115613a5c57600080fd5b602083019150836020828501011115613a7457600080fd5b9250929050565b600082601f830112613a8c57600080fd5b813567ffffffffffffffff80821115613aa757613aa7614648565b604051601f8301601f19908116603f01168101908282118183101715613acf57613acf614648565b81604052838152866020858801011115613ae857600080fd5b836020870160208301376000602085830101528094505050505092915050565b803563ffffffff81168114613a1d57600080fd5b600060208284031215613b2e57600080fd5b8135613b398161465e565b9392505050565b600060208284031215613b5257600080fd5b8151613b398161465e565b60008060408385031215613b7057600080fd5b8235613b7b8161465e565b91506020830135613b8b8161465e565b809150509250929050565b600080600060608486031215613bab57600080fd5b8335613bb68161465e565b92506020840135613bc68161465e565b9150613bd460408501613a22565b90509250925092565b60008060408385031215613bf057600080fd5b8235613bfb8161465e565b9150613c0960208401613a22565b90509250929050565b600080600080600060608688031215613c2a57600080fd5b8535613c358161465e565b9450602086013567ffffffffffffffff80821115613c5257600080fd5b613c5e89838a01613a32565b90965094506040880135915080821115613c7757600080fd5b50613c8488828901613a32565b969995985093965092949392505050565b6000806000806000806000806000806000806101008d8f031215613cb857600080fd5b613cc18d613a12565b9b5067ffffffffffffffff60208e01351115613cdc57600080fd5b613cec8e60208f01358f01613a32565b909b50995067ffffffffffffffff60408e01351115613d0a57600080fd5b613d1a8e60408f01358f01613a32565b909950975067ffffffffffffffff60608e01351115613d3857600080fd5b613d488e60608f01358f01613a32565b909750955067ffffffffffffffff60808e01351115613d6657600080fd5b613d768e60808f01358f01613a32565b9095509350613d8760a08e01613b08565b9250613d9560c08e01613b08565b915060e08d013590509295989b509295989b509295989b565b60008060408385031215613dc157600080fd5b8235613dcc8161465e565b946020939093013593505050565b600080600060608486031215613def57600080fd5b8335613dfa8161465e565b9250602084013591506040840135613e118161465e565b809150509250925092565b600080600060608486031215613e3157600080fd5b8335613e3c8161465e565b925060208401359150604084013567ffffffffffffffff80821115613e6057600080fd5b908501906101008288031215613e7557600080fd5b613e7d614533565b823582811115613e8c57600080fd5b613e9889828601613a7b565b825250602083013582811115613ead57600080fd5b613eb989828601613a7b565b602083015250604083013582811115613ed157600080fd5b613edd89828601613a7b565b604083015250606083013582811115613ef557600080fd5b613f0189828601613a7b565b606083015250613f1360808401613b08565b6080820152613f2460a08401613b08565b60a0820152613f3560c08401613b08565b60c082015260e083013560e08201528093505050509250925092565b600080600060608486031215613f6657600080fd5b8335613f718161465e565b95602085013595506040909401359392505050565b600060208284031215613f9857600080fd5b5035919050565b600060208284031215613fb157600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845260005b8181101561400757602081850181015186830182015201613feb565b81811115614019576000602083870101525b50601f01601f19169290920160200192915050565b6000610100825181855261404482860182613fe1565b9150506020830151848203602086015261405e8282613fe1565b915050604083015184820360408601526140788282613fe1565b915050606083015184820360608601526140928282613fe1565b91505060808301516140ac608086018263ffffffff169052565b5060a08301516140c460a086018263ffffffff169052565b5060c08301516140dc60c086018263ffffffff169052565b5060e083015160e08501528091505092915050565b6001600160a01b03861681526060602082018190526000906141169083018688613fb8565b8281036040840152614129818587613fb8565b98975050505050505050565b6001600160a01b03831681526040602082018190526000906141599083018461402e565b949350505050565b6020808252825182820181905260009190848201906040850190845b818110156125c65783516001600160a01b03168352928401929184019160010161417d565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156141f757603f198886030184526141e585835161402e565b945092850192908501906001016141c9565b5092979650505050505050565b60e08152600061421860e083018d8f613fb8565b828103602084015261422b818c8e613fb8565b90508281036040840152614240818a8c613fb8565b9050828103606084015261425581888a613fb8565b63ffffffff96871660808501529490951660a08301525060c001529998505050505050505050565b6040815260006142906040830185613fe1565b82810360208401526142a28185613fe1565b95945050505050565b60006101008083526142bf8184018c613fe1565b905082810360208401526142d3818b613fe1565b905082810360408401526142e7818a613fe1565b905082810360608401526142fb8189613fe1565b63ffffffff978816608085015295871660a084015250509190931660c082015260e00191909152949350505050565b6020808252600a90820152694e6f74204f776e65722160b01b604082015260600190565b60208082526024908201527f506c6561736520726567697374657220796f757220436f6e74726163742066696040820152637273742160e01b606082015260800190565b60208082526022908201527f596f7520617265206e6f742074686520636f6e747261637420676f7665726e6f604082015261722160f01b606082015260800190565b60208082526028908201527f596f7520617265206e6f742074686520636f6e747261637420737570657220676040820152676f7665726e6f722160c01b606082015260800190565b60208082526022908201527f5468697320574c56656e64696e674974656d20646f6573206e6f742065786973604082015261742160f01b606082015260800190565b6020808252601f908201527f596f7520617265206e6f742074686520436f6e7472616374204f776e65722100604082015260600190565b6020808252602f908201527f596f7520617265206e6f7420417574686f72697a656420666f7220746869732060408201526e455243323020436f6e74726163742160881b606082015260800190565b6040815260006144f7604083018561402e565b82810360208401526142a2818561402e565b8381526001600160a01b03831660208201526060604082018190526000906142a29083018461402e565b604051610100810167ffffffffffffffff8111828210171561455757614557614648565b60405290565b6000821982111561457057614570614606565b500190565b60008282101561458757614587614606565b500390565b600181811c908216806145a057607f821691505b602082108114156145c157634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156145db576145db614606565b5060010190565b600063ffffffff808316818114156145fc576145fc614606565b6001019392505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146139fa57600080fdfea264697066735822122008214d9cc81f6078b879cb8408c62eff112d8ed47a9e56b36c9cd73db1793a7d64736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061023c5760003560e01c80637d3db8c31161013b578063b8472316116100b8578063e2d979341161007c578063e2d97934146105c0578063e414f304146105d3578063e80e55e6146105e6578063f2fde38b146105f9578063fa8775ec1461060c57600080fd5b8063b84723161461054b578063ba17a3b41461055e578063c232315f14610571578063d026da301461059a578063e25cf219146105ad57600080fd5b806392587fed116100ff57806392587fed146104dd578063a05cb99e146104f0578063a13e2fed146104f8578063a688075014610518578063b2dd6af01461052b57600080fd5b80637d3db8c314610468578063803fc1401461047b57806388c47fed1461048e5780638da5cb5b146104a157806391ce8e2f146104b457600080fd5b806347ba83ac116101c957806355fec15d1161018d57806355fec15d146103e75780635c952b58146104085780635d3e5d5f1461042f5780636f6736ba146104425780637ba5a9ae1461045557600080fd5b806347ba83ac1461037b5780634a4332251461038e5780634a80efb5146103a15780634d7037dd146103b457806352b49357146103d457600080fd5b80631197705e116102105780631197705e14610306578063216586581461031b578063267caabb14610332578063276f1c4114610355578063449d1a541461036857600080fd5b80626149da14610241578063035006411461027957806304e565c9146102a45780630d4e41f9146102d2575b600080fd5b61026461024f366004613b1c565b600a6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61028c610287366004613f51565b61061f565b6040516001600160a01b039091168152602001610270565b6102646102b2366004613b5d565b600c60209081526000928352604080842090915290825290205460ff1681565b6102646102e0366004613dda565b601160209081526000938452604080852082529284528284209052825290205460ff1681565b610319610314366004613b1c565b610664565b005b61032460065481565b604051908152602001610270565b610264610340366004613b1c565b60076020526000908152604090205460ff1681565b60035461028c906001600160a01b031681565b610319610376366004613c12565b6106b9565b610319610389366004613b96565b6107f5565b61031961039c366004613b1c565b610975565b6103196103af366004613b1c565b610c60565b6103c76103c2366004613dae565b610d15565b6040516102709190614161565b6103196103e2366004613b1c565b610d94565b6103fa6103f5366004613b1c565b610de0565b60405161027092919061427d565b61041b610416366004613dae565b610f0c565b6040516102709897969594939291906142ab565b61031961043d366004613e1c565b6111a1565b60025461028c906001600160a01b031681565b610319610463366004613f86565b61176e565b610319610476366004613b1c565b61179d565b610319610489366004613c95565b6118b8565b61031961049c366004613b5d565b611d1e565b60005461028c906001600160a01b031681565b61028c6104c2366004613b1c565b600e602052600090815260409020546001600160a01b031681565b6103196104eb366004613c12565b611f17565b6103c7612140565b610324610506366004613b1c565b60096020526000908152604090205481565b610319610526366004613b1c565b6121a2565b61053e610539366004613f51565b6121ee565b60405161027091906141a2565b60045461028c906001600160a01b031681565b61031961056c366004613dae565b6125d2565b61032461057f366004613b1c565b6001600160a01b03166000908152600f602052604090205490565b61028c6105a8366004613f86565b612c3a565b6103196105bb366004613b1c565b612c64565b60015461028c906001600160a01b031681565b61053e6105e1366004613b1c565b6131a3565b6103196105f4366004613bdd565b61349f565b610319610607366004613b1c565b6135c1565b61031961061a366004613b5d565b61360d565b6010602052826000526040600020602052816000526040600020818154811061064757600080fd5b6000918252602090912001546001600160a01b0316925083915050565b6000546001600160a01b031633146106975760405162461bcd60e51b815260040161068e9061432a565b60405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146106e35760405162461bcd60e51b815260040161068e906143d4565b6040805160606020601f87018190040282018101835291810185815290918291908790879081908501838280828437600092019190915250505090825250604080516020601f86018190048102820181019092528481529181019190859085908190840183828082843760009201829052509390945250506001600160a01b0388168152600b602090815260409091208351805191935061078892849291019061393c565b5060208281015180516107a1926001850192019061393c565b50905050846001600160a01b03167f25fdbc222e090858cc121aef55da11cf44faaf595ca940f31cb371ddbe1b6d8233868686866040516107e69594939291906140f1565b60405180910390a25050505050565b6001600160a01b0380841660009081526005602052604081205485921661088c57816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561084f57600080fd5b505afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190613b40565b6108a8565b6001600160a01b03808316600090815260056020526040902054165b9050336001600160a01b038216146108d25760405162461bcd60e51b815260040161068e9061445e565b6001600160a01b03821660009081526007602052604090205460ff1661090a5760405162461bcd60e51b815260040161068e9061434e565b6001600160a01b038581166000818152600c6020908152604080832094891680845294825291829020805460ff191688151590811790915582519485529084015290917f497c860693ee48ca4920e55d08ac4ba08d719ae9e1883db046133620ce194df491016107e6565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ae57600080fd5b505afa1580156109c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e69190613b40565b6001600160a01b0316336001600160a01b031614610a165760405162461bcd60e51b815260040161068e9061445e565b6001600160a01b03811660009081526007602052604090205460ff1615610a925760405162461bcd60e51b815260206004820152602a60248201527f596f757220636f6e74726163742068617320616c7265616479206265656e20726044820152696567697374657265642160b01b606482015260840161068e565b6006546001546040516370a0823160e01b81523360048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610ad857600080fd5b505afa158015610aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b109190613f9f565b1015610b5e5760405162461bcd60e51b815260206004820152601b60248201527f596f7520646f6e2774206861766520656e6f75676820244d4553210000000000604482015260640161068e565b600154600480546006546040516323b872dd60e01b815233938101939093526001600160a01b0391821660248401526044830152909116906323b872dd90606401600060405180830381600087803b158015610bb957600080fd5b505af1158015610bcd573d6000803e3d6000fd5b505050506001600160a01b03811660009081526007602090815260408083208054600160ff199182168117909255600a909352922080549091169091179055610c158161378b565b6006546040805133815260208101929092526001600160a01b038316917ff324ec9e65c6849640d47b8d287a652b8287a533bcf80092a857f3e02b0fcbcc910160405180910390a250565b6000546001600160a01b03163314610c8a5760405162461bcd60e51b815260040161068e9061432a565b6002546001600160a01b0316610cf35760405162461bcd60e51b815260206004820152602860248201527f537570657220476f7665726e6f722041636365737320686173206265656e2072604482015267195b9bdd5b98d95960c21b606482015260840161068e565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382166000908152601060209081526040808320848452825291829020805483518184028101840190945280845260609392830182828015610d8757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d69575b5050505050905092915050565b6003546001600160a01b03163314610dbe5760405162461bcd60e51b815260040161068e90614392565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600b60205260009081526040902080548190610dfb9061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e279061458c565b8015610e745780601f10610e4957610100808354040283529160200191610e74565b820191906000526020600020905b815481529060010190602001808311610e5757829003601f168201915b505050505090806001018054610e899061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb59061458c565b8015610f025780601f10610ed757610100808354040283529160200191610f02565b820191906000526020600020905b815481529060010190602001808311610ee557829003601f168201915b5050505050905082565b600f6020528160005260406000208181548110610f2857600080fd5b906000526020600020906006020160009150915050806000018054610f4c9061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f789061458c565b8015610fc55780601f10610f9a57610100808354040283529160200191610fc5565b820191906000526020600020905b815481529060010190602001808311610fa857829003601f168201915b505050505090806001018054610fda9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546110069061458c565b80156110535780601f1061102857610100808354040283529160200191611053565b820191906000526020600020905b81548152906001019060200180831161103657829003601f168201915b5050505050908060020180546110689061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546110949061458c565b80156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b5050505050908060030180546110f69061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546111229061458c565b801561116f5780601f106111445761010080835404028352916020019161116f565b820191906000526020600020905b81548152906001019060200180831161115257829003601f168201915b5050506004840154600590940154929363ffffffff80821694600160201b830482169450600160401b90920416915088565b6001600160a01b0383166000908152600c602090815260408083203380855292529091205484919060ff168061129857506001600160a01b038281166000908152600560205260409020541661126757816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561122a57600080fd5b505afa15801561123e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112629190613b40565b611283565b6001600160a01b03808316600090815260056020526040902054165b6001600160a01b0316336001600160a01b0316145b6112b45760405162461bcd60e51b815260040161068e90614495565b6001600160a01b0385166000908152600f602052604081208054869081106112de576112de614632565b9060005260206000209060060201604051806101000160405290816000820180546113089061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546113349061458c565b80156113815780601f1061135657610100808354040283529160200191611381565b820191906000526020600020905b81548152906001019060200180831161136457829003601f168201915b5050505050815260200160018201805461139a9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546113c69061458c565b80156114135780601f106113e857610100808354040283529160200191611413565b820191906000526020600020905b8154815290600101906020018083116113f657829003601f168201915b5050505050815260200160028201805461142c9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546114589061458c565b80156114a55780601f1061147a576101008083540402835291602001916114a5565b820191906000526020600020905b81548152906001019060200180831161148857829003601f168201915b505050505081526020016003820180546114be9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546114ea9061458c565b80156115375780601f1061150c57610100808354040283529160200191611537565b820191906000526020600020905b81548152906001019060200180831161151a57829003601f168201915b5050509183525050600482015463ffffffff8082166020840152600160201b820481166040840152600160401b90910416606082015260059091015460809091015280515190915061159b5760405162461bcd60e51b815260040161068e9061441c565b8060a0015163ffffffff16846080015163ffffffff1610156116155760405162461bcd60e51b815260206004820152602d60248201527f416d6f756e7420417661696c61626c65206d757374206265203e3d20416d6f7560448201526c6e74205075726368617365642160981b606482015260840161068e565b6001600160a01b0386166000908152600f6020526040902080548591908790811061164257611642614632565b9060005260206000209060060201600082015181600001908051906020019061166c92919061393c565b506020828101518051611685926001850192019061393c565b50604082015180516116a191600284019160209091019061393c565b50606082015180516116bd91600384019160209091019061393c565b50608082015160048201805460a085015160c086015163ffffffff908116600160401b026bffffffff000000000000000019928216600160201b0267ffffffffffffffff199094169190951617919091171691909117905560e0909101516005909101556040516001600160a01b038716907ff8154fb605f92c0cedb89c9080be140831abaa604eab2891a7b4e112f74ff9fc9061175e90849088906144e4565b60405180910390a2505050505050565b6003546001600160a01b031633146117985760405162461bcd60e51b815260040161068e90614392565b600655565b6003546001600160a01b031633146117c75760405162461bcd60e51b815260040161068e90614392565b6001546040516370a0823160e01b815230600482018190526001600160a01b03909216916323b872dd91849084906370a082319060240160206040518083038186803b15801561181657600080fd5b505afa15801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e9190613f9f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561189d57600080fd5b505af11580156118b1573d6000803e3d6000fd5b5050505050565b6001600160a01b038c166000908152600c60209081526040808320338085529252909120548d919060ff16806119af57506001600160a01b038281166000908152600560205260409020541661197e57816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190613b40565b61199a565b6001600160a01b03808316600090815260056020526040902054165b6001600160a01b0316336001600160a01b0316145b6119cb5760405162461bcd60e51b815260040161068e90614495565b8b611a185760405162461bcd60e51b815260206004820152601960248201527f596f75206d75737420737065636966792061205469746c652100000000000000604482015260640161068e565b428463ffffffff1611611a6d5760405162461bcd60e51b815260206004820152601a60248201527f416c726561647920657870697265642074696d657374616d7021000000000000604482015260640161068e565b600f60008f6001600160a01b03166001600160a01b031681526020019081526020016000206040518061010001604052808f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8e018190048102820181019092528c815291810191908d908d9081908401838280828437600092019190915250505090825250604080516020601f8c018190048102820181019092528a815291810191908b908b9081908401838280828437600092018290525093855250505063ffffffff808a166020808501919091526040840183905290891660608401526080909201879052835460018101855593815281902082518051939460060290910192611be6928492019061393c565b506020828101518051611bff926001850192019061393c565b5060408201518051611c1b91600284019160209091019061393c565b5060608201518051611c3791600384019160209091019061393c565b5060808201518160040160006101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160040160046101000a81548163ffffffff021916908363ffffffff16021790555060c08201518160040160086101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816005015550508d6001600160a01b03167f516625247f23faec42d96feb3c46c2ea91f04d4d248a69c50d4bfdcce8921f7f8e8e8e8e8e8e8e8e8e8e8e604051611d069b9a99989796959493929190614204565b60405180910390a25050505050505050505050505050565b6002546001600160a01b03163314611d485760405162461bcd60e51b815260040161068e906143d4565b6001600160a01b0382166000908152600a602052604090205460ff1615611dc95760405162461bcd60e51b815260206004820152602f60248201527f4f776e65727368697020686173206265656e2070726f76656e207468726f756760448201526e34103932b3b4b9ba3930ba34b7b71760891b606482015260840161068e565b6001600160a01b0382166000908152600f602052604090205415611e2f5760405162461bcd60e51b815260206004820152601a60248201527f4f776e65727368697020686173206265656e2070726f76656e2e000000000000604482015260640161068e565b6001600160a01b0382811660008181526005602090815260409182902080546001600160a01b031916948616949094179093558051638da5cb5b60e01b8152905133937fd457ae6e865b408148ffe030847ee9c7659cba553a0ec44524e858dfc81d1fa1928492638da5cb5b92600480840193919291829003018186803b158015611eb957600080fd5b505afa158015611ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef19190613b40565b604080516001600160a01b03928316815291861660208301520160405180910390a35050565b6001600160a01b03808616600090815260056020526040812054879216611fae57816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f7157600080fd5b505afa158015611f85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa99190613b40565b611fca565b6001600160a01b03808316600090815260056020526040902054165b9050336001600160a01b03821614611ff45760405162461bcd60e51b815260040161068e9061445e565b6001600160a01b03821660009081526007602052604090205460ff1661202c5760405162461bcd60e51b815260040161068e9061434e565b6040805160606020601f89018190040282018101835291810187815290918291908990899081908501838280828437600092019190915250505090825250604080516020601f88018190048102820181019092528681529181019190879087908190840183828082843760009201829052509390945250506001600160a01b038a168152600b60209081526040909120835180519193506120d192849291019061393c565b5060208281015180516120ea926001850192019061393c565b50905050866001600160a01b03167f25fdbc222e090858cc121aef55da11cf44faaf595ca940f31cb371ddbe1b6d82338888888860405161212f9594939291906140f1565b60405180910390a250505050505050565b6060600880548060200260200160405190810160405280929190818152602001828054801561219857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161217a575b5050505050905090565b6000546001600160a01b031633146121cc5760405162461bcd60e51b815260040161068e9061432a565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b606060006121fc8484614575565b61220790600161455d565b905060008167ffffffffffffffff81111561222457612224614648565b6040519080825280602002602001820160405280156122af57816020015b61229c60405180610100016040528060608152602001606081526020016060815260200160608152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600081525090565b8152602001906001900390816122425790505b5090506000805b838110156125c6576001600160a01b0388166000908152600f602052604090206122e0828961455d565b815481106122f0576122f0614632565b90600052602060002090600602016040518061010001604052908160008201805461231a9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546123469061458c565b80156123935780601f1061236857610100808354040283529160200191612393565b820191906000526020600020905b81548152906001019060200180831161237657829003601f168201915b505050505081526020016001820180546123ac9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546123d89061458c565b80156124255780601f106123fa57610100808354040283529160200191612425565b820191906000526020600020905b81548152906001019060200180831161240857829003601f168201915b5050505050815260200160028201805461243e9061458c565b80601f016020809104026020016040519081016040528092919081815260200182805461246a9061458c565b80156124b75780601f1061248c576101008083540402835291602001916124b7565b820191906000526020600020905b81548152906001019060200180831161249a57829003601f168201915b505050505081526020016003820180546124d09061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546124fc9061458c565b80156125495780601f1061251e57610100808354040283529160200191612549565b820191906000526020600020905b81548152906001019060200180831161252c57829003601f168201915b5050509183525050600482015463ffffffff8082166020840152600160201b820481166040840152600160401b9091041660608201526005909101546080909101528383612596816145c7565b9450815181106125a8576125a8614632565b602002602001018190525080806125be906145c7565b9150506122b6565b50909695505050505050565b6001600160a01b0382166000908152600f602052604081208054839081106125fc576125fc614632565b9060005260206000209060060201604051806101000160405290816000820180546126269061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546126529061458c565b801561269f5780601f106126745761010080835404028352916020019161269f565b820191906000526020600020905b81548152906001019060200180831161268257829003601f168201915b505050505081526020016001820180546126b89061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546126e49061458c565b80156127315780601f1061270657610100808354040283529160200191612731565b820191906000526020600020905b81548152906001019060200180831161271457829003601f168201915b5050505050815260200160028201805461274a9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546127769061458c565b80156127c35780601f10612798576101008083540402835291602001916127c3565b820191906000526020600020905b8154815290600101906020018083116127a657829003601f168201915b505050505081526020016003820180546127dc9061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546128089061458c565b80156128555780601f1061282a57610100808354040283529160200191612855565b820191906000526020600020905b81548152906001019060200180831161283857829003601f168201915b5050509183525050600482015463ffffffff8082166020840152600160201b820481166040840152600160401b9091041660608201526005909101546080909101528051519091506128b95760405162461bcd60e51b815260040161068e9061441c565b8060a0015163ffffffff16816080015163ffffffff16116129145760405162461bcd60e51b81526020600482015260156024820152744e6f206d6f726520574c2072656d61696e696e672160581b604482015260640161068e565b428160c0015163ffffffff1610156129615760405162461bcd60e51b815260206004820152601060248201526f50617373656420646561646c696e652160801b604482015260640161068e565b6001600160a01b0383166000908152601160209081526040808320858452825280832033845290915290205460ff16156129d25760405162461bcd60e51b8152602060048201526012602482015271416c7265616479207075726368617365642160701b604482015260640161068e565b60e08101516040516370a0823160e01b81523360048201526001600160a01b038516906370a082319060240160206040518083038186803b158015612a1657600080fd5b505afa158015612a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4e9190613f9f565b1015612a915760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b604482015260640161068e565b826001600160a01b03166323b872dd33612aaa866137ec565b8460e001516040518463ffffffff1660e01b8152600401612aec939291906001600160a01b039384168152919092166020820152604081019190915260600190565b600060405180830381600087803b158015612b0657600080fd5b505af1158015612b1a573d6000803e3d6000fd5b505050506001600160a01b0383166000818152601160209081526040808320868452825280832033808552908352818420805460ff191660019081179091558585526010845282852088865284528285208054918201815585528385200180546001600160a01b0319169091179055928252600f905220805483908110612ba357612ba3614632565b6000918252602090912060046006909202018101805463ffffffff600160201b9091041691612bd1836145e2565b91906101000a81548163ffffffff021916908363ffffffff16021790555050826001600160a01b03167f6ba7d4fd8e5f038d9f00724c25edf24a48842fee67728f6f989088010fef9c1a833384604051612c2d93929190614509565b60405180910390a2505050565b60088181548110612c4a57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b0381166000908152600c602090815260408083203380855292529091205482919060ff1680612d5b57506001600160a01b0382811660009081526005602052604090205416612d2a57816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ced57600080fd5b505afa158015612d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d259190613b40565b612d46565b6001600160a01b03808316600090815260056020526040902054165b6001600160a01b0316336001600160a01b0316145b612d775760405162461bcd60e51b815260040161068e90614495565b6001600160a01b0383166000908152600f6020526040812054612d9c90600190614575565b6001600160a01b0385166000908152600f602052604081208054929350909183908110612dcb57612dcb614632565b906000526020600020906006020160405180610100016040529081600082018054612df59061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054612e219061458c565b8015612e6e5780601f10612e4357610100808354040283529160200191612e6e565b820191906000526020600020905b815481529060010190602001808311612e5157829003601f168201915b50505050508152602001600182018054612e879061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054612eb39061458c565b8015612f005780601f10612ed557610100808354040283529160200191612f00565b820191906000526020600020905b815481529060010190602001808311612ee357829003601f168201915b50505050508152602001600282018054612f199061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054612f459061458c565b8015612f925780601f10612f6757610100808354040283529160200191612f92565b820191906000526020600020905b815481529060010190602001808311612f7557829003601f168201915b50505050508152602001600382018054612fab9061458c565b80601f0160208091040260200160405190810160405280929190818152602001828054612fd79061458c565b80156130245780601f10612ff957610100808354040283529160200191613024565b820191906000526020600020905b81548152906001019060200180831161300757829003601f168201915b5050509183525050600482015463ffffffff8082166020840152600160201b820481166040840152600160401b9091048116606083015260059092015460809091015260a082015191925016156130d35760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f742064656c657465206974656d207769746820616c72656164792060448201526c626f7567687420676f6f64732160981b606482015260840161068e565b6001600160a01b0385166000908152600f602052604090208054806130fa576130fa61461c565b6000828152602081206000199092019160068302019061311a82826139c0565b6131286001830160006139c0565b6131366002830160006139c0565b6131446003830160006139c0565b506004810180546bffffffffffffffffffffffff19169055600060059091015590556040516001600160a01b038616907f6dde1c9592810ef1a7d13d63ea1e8bd97ad5b18c972e9194399ac9b4ec8ccf64906107e69033908590614135565b6001600160a01b0381166000908152600f60209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561349457838290600052602060002090600602016040518061010001604052908160008201805461320f9061458c565b80601f016020809104026020016040519081016040528092919081815260200182805461323b9061458c565b80156132885780601f1061325d57610100808354040283529160200191613288565b820191906000526020600020905b81548152906001019060200180831161326b57829003601f168201915b505050505081526020016001820180546132a19061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546132cd9061458c565b801561331a5780601f106132ef5761010080835404028352916020019161331a565b820191906000526020600020905b8154815290600101906020018083116132fd57829003601f168201915b505050505081526020016002820180546133339061458c565b80601f016020809104026020016040519081016040528092919081815260200182805461335f9061458c565b80156133ac5780601f10613381576101008083540402835291602001916133ac565b820191906000526020600020905b81548152906001019060200180831161338f57829003601f168201915b505050505081526020016003820180546133c59061458c565b80601f01602080910402602001604051908101604052809291908181526020018280546133f19061458c565b801561343e5780601f106134135761010080835404028352916020019161343e565b820191906000526020600020905b81548152906001019060200180831161342157829003601f168201915b5050509183525050600482015463ffffffff808216602080850191909152600160201b830482166040850152600160401b90920416606083015260059092015460809091015290825260019290920191016131db565b505050509050919050565b6002546001600160a01b031633146134c95760405162461bcd60e51b815260040161068e906143d4565b6001600160a01b03821660009081526007602052604090205460ff16151581151514156135385760405162461bcd60e51b815260206004820181905260248201527f436f6e747261637420416c72656164792053657420617320426f6f6c65616e21604482015260640161068e565b6001600160a01b0382166000908152600760205260409020805460ff19168215151790558061356f5761356a82613840565b613578565b6135788261378b565b6040805133815282151560208201526001600160a01b038416917f95672512364892dc5eac723d03b303897847c21af452724bffc2f62d18778b14910160405180910390a25050565b6000546001600160a01b031633146135eb5760405162461bcd60e51b815260040161068e9061432a565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038083166000908152600560205260408120548492166136a457816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561366757600080fd5b505afa15801561367b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061369f9190613b40565b6136c0565b6001600160a01b03808316600090815260056020526040902054165b9050336001600160a01b038216146136ea5760405162461bcd60e51b815260040161068e9061445e565b6001600160a01b03821660009081526007602052604090205460ff166137225760405162461bcd60e51b815260040161068e9061434e565b6001600160a01b038481166000818152600e602090815260409182902080546001600160a01b0319169488169485179055905192835290917f802cb57ae6c007281ec553667818c1dc1bba3db1b66085be1e339ac9efbf107d910160405180910390a250505050565b600880546001600160a01b039092166000818152600960205260408120849055600184018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390910180546001600160a01b0319169091179055565b6001600160a01b038181166000908152600e602052604081205490911661381e57600d546001600160a01b031661383a565b6001600160a01b038083166000908152600e6020526040902054165b92915050565b60085460009061385290600190614575565b6001600160a01b0383166000908152600960205260409020549091508082146138e95760006008838154811061388a5761388a614632565b600091825260209091200154600880546001600160a01b0390921692508291849081106138b9576138b9614632565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505b60088054806138fa576138fa61461c565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03949094168152600990935250506040812055565b8280546139489061458c565b90600052602060002090601f01602090048101928261396a57600085556139b0565b82601f1061398357805160ff19168380011785556139b0565b828001600101855582156139b0579182015b828111156139b0578251825591602001919060010190613995565b506139bc9291506139fd565b5090565b5080546139cc9061458c565b6000825580601f106139dc575050565b601f0160209004906000526020600020908101906139fa91906139fd565b50565b5b808211156139bc57600081556001016139fe565b8035613a1d8161465e565b919050565b80358015158114613a1d57600080fd5b60008083601f840112613a4457600080fd5b50813567ffffffffffffffff811115613a5c57600080fd5b602083019150836020828501011115613a7457600080fd5b9250929050565b600082601f830112613a8c57600080fd5b813567ffffffffffffffff80821115613aa757613aa7614648565b604051601f8301601f19908116603f01168101908282118183101715613acf57613acf614648565b81604052838152866020858801011115613ae857600080fd5b836020870160208301376000602085830101528094505050505092915050565b803563ffffffff81168114613a1d57600080fd5b600060208284031215613b2e57600080fd5b8135613b398161465e565b9392505050565b600060208284031215613b5257600080fd5b8151613b398161465e565b60008060408385031215613b7057600080fd5b8235613b7b8161465e565b91506020830135613b8b8161465e565b809150509250929050565b600080600060608486031215613bab57600080fd5b8335613bb68161465e565b92506020840135613bc68161465e565b9150613bd460408501613a22565b90509250925092565b60008060408385031215613bf057600080fd5b8235613bfb8161465e565b9150613c0960208401613a22565b90509250929050565b600080600080600060608688031215613c2a57600080fd5b8535613c358161465e565b9450602086013567ffffffffffffffff80821115613c5257600080fd5b613c5e89838a01613a32565b90965094506040880135915080821115613c7757600080fd5b50613c8488828901613a32565b969995985093965092949392505050565b6000806000806000806000806000806000806101008d8f031215613cb857600080fd5b613cc18d613a12565b9b5067ffffffffffffffff60208e01351115613cdc57600080fd5b613cec8e60208f01358f01613a32565b909b50995067ffffffffffffffff60408e01351115613d0a57600080fd5b613d1a8e60408f01358f01613a32565b909950975067ffffffffffffffff60608e01351115613d3857600080fd5b613d488e60608f01358f01613a32565b909750955067ffffffffffffffff60808e01351115613d6657600080fd5b613d768e60808f01358f01613a32565b9095509350613d8760a08e01613b08565b9250613d9560c08e01613b08565b915060e08d013590509295989b509295989b509295989b565b60008060408385031215613dc157600080fd5b8235613dcc8161465e565b946020939093013593505050565b600080600060608486031215613def57600080fd5b8335613dfa8161465e565b9250602084013591506040840135613e118161465e565b809150509250925092565b600080600060608486031215613e3157600080fd5b8335613e3c8161465e565b925060208401359150604084013567ffffffffffffffff80821115613e6057600080fd5b908501906101008288031215613e7557600080fd5b613e7d614533565b823582811115613e8c57600080fd5b613e9889828601613a7b565b825250602083013582811115613ead57600080fd5b613eb989828601613a7b565b602083015250604083013582811115613ed157600080fd5b613edd89828601613a7b565b604083015250606083013582811115613ef557600080fd5b613f0189828601613a7b565b606083015250613f1360808401613b08565b6080820152613f2460a08401613b08565b60a0820152613f3560c08401613b08565b60c082015260e083013560e08201528093505050509250925092565b600080600060608486031215613f6657600080fd5b8335613f718161465e565b95602085013595506040909401359392505050565b600060208284031215613f9857600080fd5b5035919050565b600060208284031215613fb157600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845260005b8181101561400757602081850181015186830182015201613feb565b81811115614019576000602083870101525b50601f01601f19169290920160200192915050565b6000610100825181855261404482860182613fe1565b9150506020830151848203602086015261405e8282613fe1565b915050604083015184820360408601526140788282613fe1565b915050606083015184820360608601526140928282613fe1565b91505060808301516140ac608086018263ffffffff169052565b5060a08301516140c460a086018263ffffffff169052565b5060c08301516140dc60c086018263ffffffff169052565b5060e083015160e08501528091505092915050565b6001600160a01b03861681526060602082018190526000906141169083018688613fb8565b8281036040840152614129818587613fb8565b98975050505050505050565b6001600160a01b03831681526040602082018190526000906141599083018461402e565b949350505050565b6020808252825182820181905260009190848201906040850190845b818110156125c65783516001600160a01b03168352928401929184019160010161417d565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156141f757603f198886030184526141e585835161402e565b945092850192908501906001016141c9565b5092979650505050505050565b60e08152600061421860e083018d8f613fb8565b828103602084015261422b818c8e613fb8565b90508281036040840152614240818a8c613fb8565b9050828103606084015261425581888a613fb8565b63ffffffff96871660808501529490951660a08301525060c001529998505050505050505050565b6040815260006142906040830185613fe1565b82810360208401526142a28185613fe1565b95945050505050565b60006101008083526142bf8184018c613fe1565b905082810360208401526142d3818b613fe1565b905082810360408401526142e7818a613fe1565b905082810360608401526142fb8189613fe1565b63ffffffff978816608085015295871660a084015250509190931660c082015260e00191909152949350505050565b6020808252600a90820152694e6f74204f776e65722160b01b604082015260600190565b60208082526024908201527f506c6561736520726567697374657220796f757220436f6e74726163742066696040820152637273742160e01b606082015260800190565b60208082526022908201527f596f7520617265206e6f742074686520636f6e747261637420676f7665726e6f604082015261722160f01b606082015260800190565b60208082526028908201527f596f7520617265206e6f742074686520636f6e747261637420737570657220676040820152676f7665726e6f722160c01b606082015260800190565b60208082526022908201527f5468697320574c56656e64696e674974656d20646f6573206e6f742065786973604082015261742160f01b606082015260800190565b6020808252601f908201527f596f7520617265206e6f742074686520436f6e7472616374204f776e65722100604082015260600190565b6020808252602f908201527f596f7520617265206e6f7420417574686f72697a656420666f7220746869732060408201526e455243323020436f6e74726163742160881b606082015260800190565b6040815260006144f7604083018561402e565b82810360208401526142a2818561402e565b8381526001600160a01b03831660208201526060604082018190526000906142a29083018461402e565b604051610100810167ffffffffffffffff8111828210171561455757614557614648565b60405290565b6000821982111561457057614570614606565b500190565b60008282101561458757614587614606565b500390565b600181811c908216806145a057607f821691505b602082108114156145c157634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156145db576145db614606565b5060010190565b600063ffffffff808316818114156145fc576145fc614606565b6001019392505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146139fa57600080fdfea264697066735822122008214d9cc81f6078b879cb8408c62eff112d8ed47a9e56b36c9cd73db1793a7d64736f6c63430008070033

Deployed Bytecode Sourcemap

5171:14702:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11554:53;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14920:14:1;;14913:22;14895:41;;14883:2;14868:18;11554:53:0;;;;;;;;15173:79;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;11014:32:1;;;10996:51;;10984:2;10969:18;15173:79:0;10850:203:1;13720:81:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;15259:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7479:112;;;;;;:::i;:::-;;:::i;:::-;;9763:45;;;;;;;;;26326:25:1;;;26314:2;26299:18;9763:45:0;26180:177:1;10353:49:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6708:30;;;;;-1:-1:-1;;;;;6708:30:0;;;8308:323;;;;;;:::i;:::-;;:::i;13814:258::-;;;;;;:::i;:::-;;:::i;11614:709::-;;;;;;:::i;:::-;;:::i;6988:321::-;;;;;;:::i;:::-;;:::i;18882:177::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9949:131::-;;;;;;:::i;:::-;;:::i;13314:60::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;15033:67::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;16321:641::-;;;;;;:::i;:::-;;:::i;6666:35::-;;;;;-1:-1:-1;;;;;6666:35:0;;;9828:115;;;;;;:::i;:::-;;:::i;10086:167::-;;;;;;:::i;:::-;;:::i;15371:944::-;;;;;;:::i;:::-;;:::i;8637:1078::-;;;;;;:::i;:::-;;:::i;4704:20::-;;;;;-1:-1:-1;;;;;4704:20:0;;;14160:60;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;14160:60:0;;;13387:325;;;;;;:::i;:::-;;:::i;10543:117::-;;;:::i;10478:56::-;;;;;;:::i;:::-;;;;;;;;;;;;;;6535:94;;;;;;:::i;:::-;;:::i;19398:472::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6745:36::-;;;;;-1:-1:-1;;;;;6745:36:0;;;17544:1307;;;;;;:::i;:::-;;:::i;19234:158::-;;;;;;:::i;:::-;-1:-1:-1;;;;;19342:35:0;19315:7;19342:35;;;:24;:35;;;;;:42;;19234:158;10438:33;;;;;;:::i;:::-;;:::i;16970:523::-;;;;;;:::i;:::-;;:::i;6458:70::-;;;;;-1:-1:-1;;;;;6458:70:0;;;19065:163;;;;;;:::i;:::-;;:::i;7847:455::-;;;;;;:::i;:::-;;:::i;4850:77::-;;;;;;:::i;:::-;;:::i;14456:230::-;;;;;;:::i;:::-;;:::i;15173:79::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15173:79:0;;-1:-1:-1;15173:79:0;;-1:-1:-1;;15173:79:0:o;7479:112::-;4804:5;;-1:-1:-1;;;;;4804:5:0;4813:10;4804:19;4796:42;;;;-1:-1:-1;;;4796:42:0;;;;;;;:::i;:::-;;;;;;;;;7556:15:::1;:27:::0;;-1:-1:-1;;;;;;7556:27:0::1;-1:-1:-1::0;;;;;7556:27:0;;;::::1;::::0;;;::::1;::::0;;7479:112::o;8308:323::-;7375:20;;-1:-1:-1;;;;;7375:20:0;7361:10;:34;7353:100;;;;-1:-1:-1;;;7353:100:0;;;;;;;:::i;:::-;8502:38:::1;::::0;;;::::1;;::::0;::::1;::::0;;::::1;;::::0;;;;;;;;::::1;::::0;;;;;;;;8514:12;;;;;;8502:38;;8514:12;;;;8502:38;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;;;8502:38:0;;;-1:-1:-1;8502:38:0::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;::::0;;8528:11;;;;;;8502:38;::::1;8528:11:::0;;;;8502:38;::::1;;::::0;::::1;::::0;;;-1:-1:-1;8502:38:0;;;;-1:-1:-1;;;;;;;8467:32:0;::::1;::::0;;:21:::1;:32;::::0;;;;;;;:73;;;;:32;;-1:-1:-1;8467:73:0::1;::::0;:32;;:73;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;8467:73:0::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;8574:9;-1:-1:-1::0;;;;;8556:67:0::1;;8585:10;8597:12;;8611:11;;8556:67;;;;;;;;;;:::i;:::-;;;;;;;;8308:323:::0;;;;;:::o;13814:258::-;-1:-1:-1;;;;;12448:33:0;;;12431:14;12448:33;;;:22;:33;;;;;;13923:9;;12448:33;:125;;12555:9;-1:-1:-1;;;;;12548:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12448:125;;;-1:-1:-1;;;;;12512:33:0;;;;;;;:22;:33;;;;;;;12448:125;12431:142;-1:-1:-1;12594:10:0;-1:-1:-1;;;;;12594:20:0;;;12586:77;;;;-1:-1:-1;;;12586:77:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12682:28:0;;;;;;:17;:28;;;;;;;;12674:90;;;;-1:-1:-1;;;12674:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13945:40:0;;::::1;;::::0;;;:29:::1;:40;::::0;;;;;;;:51;;::::1;::::0;;;;;;;;;;:59;;-1:-1:-1;;13945:59:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14020:44;;11915:51:1;;;11982:18;;;11975:50;13945:40:0;;14020:44:::1;::::0;11888:18:1;14020:44:0::1;11747:284:1::0;11614:709:0;11717:9;-1:-1:-1;;;;;11710:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11696:39:0;:10;-1:-1:-1;;;;;11696:39:0;;11688:96;;;;-1:-1:-1;;;11688:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11804:28:0;;;;;;:17;:28;;;;;;;;11803:29;11795:97;;;;-1:-1:-1;;;11795:97:0;;18272:2:1;11795:97:0;;;18254:21:1;18311:2;18291:18;;;18284:30;18350:34;18330:18;;;18323:62;-1:-1:-1;;;18401:18:1;;;18394:40;18451:19;;11795:97:0;18070:406:1;11795:97:0;11940:17;;11911:3;;:25;;-1:-1:-1;;;11911:25:0;;11925:10;11911:25;;;10996:51:1;-1:-1:-1;;;;;11911:3:0;;;;:13;;10969:18:1;;11911:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;11903:99;;;;-1:-1:-1;;;11903:99:0;;23995:2:1;11903:99:0;;;23977:21:1;24034:2;24014:18;;;24007:30;24073:29;24053:18;;;24046:57;24120:18;;11903:99:0;23793:351:1;11903:99:0;12023:3;;12052:21;;;12075:17;;12023:70;;-1:-1:-1;;;12023:70:0;;12040:10;12023:70;;;11607:34:1;;;;-1:-1:-1;;;;;12052:21:0;;;11657:18:1;;;11650:43;11709:18;;;11702:34;12023:3:0;;;;:16;;11542:18:1;;12023:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;12114:28:0;;;;;;:17;:28;;;;;;;;:35;;12145:4;-1:-1:-1;;12114:35:0;;;;;;;;12160:21;:32;;;;;:39;;;;;;;;;;12210:29;12114:28;12210:18;:29::i;:::-;12297:17;;12255:60;;;12285:10;13125:51:1;;13207:2;13192:18;;13185:34;;;;-1:-1:-1;;;;;12255:60:0;;;;;13098:18:1;12255:60:0;;;;;;;11614:709;:::o;6988:321::-;4804:5;;-1:-1:-1;;;;;4804:5:0;4813:10;4804:19;4796:42;;;;-1:-1:-1;;;4796:42:0;;;;;;;:::i;:::-;7159:20:::1;::::0;-1:-1:-1;;;;;7159:20:0::1;7151:100;;;::::0;-1:-1:-1;;;7151:100:0;;20600:2:1;7151:100:0::1;::::0;::::1;20582:21:1::0;20639:2;20619:18;;;20612:30;20678:34;20658:18;;;20651:62;-1:-1:-1;;;20729:18:1;;;20722:38;20777:19;;7151:100:0::1;20398:404:1::0;7151:100:0::1;7264:20;:37:::0;;-1:-1:-1;;;;;;7264:37:0::1;-1:-1:-1::0;;;;;7264:37:0;;;::::1;::::0;;;::::1;::::0;;6988:321::o;18882:177::-;-1:-1:-1;;;;;19010:33:0;;;;;;:22;:33;;;;;;;;:41;;;;;;;;;19003:48;;;;;;;;;;;;;;;;;18973:16;;19003:48;;;19010:41;19003:48;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19003:48:0;;;;;;;;;;;;;;;;;;;;;;;18882:177;;;;:::o;9949:131::-;7652:15;;-1:-1:-1;;;;;7652:15:0;7638:10;:29;7630:89;;;;-1:-1:-1;;;7630:89:0;;;;;;;:::i;:::-;10038:21:::1;:34:::0;;-1:-1:-1;;;;;;10038:34:0::1;-1:-1:-1::0;;;;;10038:34:0;;;::::1;::::0;;;::::1;::::0;;9949:131::o;13314:60::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15033:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15033:67:0;;;;;;;;;;;;;;;;-1:-1:-1;;;15033:67:0;;;;;-1:-1:-1;;;;15033:67:0;;;;;-1:-1:-1;15033:67:0;:::o;16321:641::-;-1:-1:-1;;;;;12872:40:0;;;;;;:29;:40;;;;;;;;16468:10;12872:51;;;;;;;;;16457:9;;16468:10;12872:51;;;:209;;-1:-1:-1;;;;;;12955:33:0;;;13000:1;12955:33;;;:22;:33;;;;;;;:125;;13062:9;-1:-1:-1;;;;;13055:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12955:125;;;-1:-1:-1;;;;;13019:33:0;;;;;;;:22;:33;;;;;;;12955:125;-1:-1:-1;;;;;12940:141:0;:10;-1:-1:-1;;;;;12940:141:0;;12872:209;12864:282;;;;-1:-1:-1;;;12864:282:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16520:35:0;::::1;16491:26;16520:35:::0;;;:24:::1;:35;::::0;;;;:43;;16556:6;;16520:43;::::1;;;;;:::i;:::-;;;;;;;;;;;16491:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;16491:72:0;;;-1:-1:-1;;16491:72:0::1;::::0;::::1;::::0;::::1;::::0;;::::1;;::::0;::::1;::::0;-1:-1:-1;;;16491:72:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;16491:72:0;;::::1;;::::0;;;;::::1;::::0;;::::1;::::0;;;;;;16590:11;;16584:25;16491:72;;-1:-1:-1;16576:89:0::1;;;;-1:-1:-1::0;;;16576:89:0::1;;;;;;;:::i;:::-;16718:5;:21;;;16684:55;;:14;:30;;;:55;;;;16676:126;;;::::0;-1:-1:-1;;;16676:126:0;;22055:2:1;16676:126:0::1;::::0;::::1;22037:21:1::0;22094:2;22074:18;;;22067:30;22133:34;22113:18;;;22106:62;-1:-1:-1;;;22184:18:1;;;22177:43;22237:19;;16676:126:0::1;21853:409:1::0;16676:126:0::1;-1:-1:-1::0;;;;;16823:35:0;::::1;;::::0;;;:24:::1;:35;::::0;;;;:43;;16869:14;;16823:35;16859:6;;16823:43;::::1;;;;;:::i;:::-;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;16823:60:0::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;16823:60:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;16823:60:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;16823:60:0::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;;16823:60:0::1;-1:-1:-1::0;;16823:60:0;;::::1;-1:-1:-1::0;;;16823:60:0::1;-1:-1:-1::0;;16823:60:0;;;;;;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;16899:55:::1;::::0;-1:-1:-1;;;;;16899:55:0;::::1;::::0;::::1;::::0;::::1;::::0;16932:5;;16939:14;;16899:55:::1;:::i;:::-;;;;;;;;16480:482;16321:641:::0;;;;;:::o;9828:115::-;7652:15;;-1:-1:-1;;;;;7652:15:0;7638:10;:29;7630:89;;;;-1:-1:-1;;;7630:89:0;;;;;;;:::i;:::-;9909:17:::1;:26:::0;9828:115::o;10086:167::-;7652:15;;-1:-1:-1;;;;;7652:15:0;7638:10;:29;7630:89;;;;-1:-1:-1;;;7630:89:0;;;;;;;:::i;:::-;10173:3:::1;::::0;10216:28:::1;::::0;-1:-1:-1;;;10216:28:0;;10198:4:::1;10216:28;::::0;::::1;10996:51:1::0;;;-1:-1:-1;;;;;10173:3:0;;::::1;::::0;:16:::1;::::0;10205:9;;10173:3;;10216:13:::1;::::0;10969:18:1;;10216:28:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10173:72;::::0;-1:-1:-1;;;;;;10173:72:0::1;::::0;;;;;;-1:-1:-1;;;;;11625:15:1;;;10173:72:0::1;::::0;::::1;11607:34:1::0;11677:15;;;;11657:18;;;11650:43;11709:18;;;11702:34;11542:18;;10173:72:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10086:167:::0;:::o;15371:944::-;-1:-1:-1;;;;;12872:40:0;;;;;;:29;:40;;;;;;;;15644:10;12872:51;;;;;;;;;15633:9;;15644:10;12872:51;;;:209;;-1:-1:-1;;;;;;12955:33:0;;;13000:1;12955:33;;;:22;:33;;;;;;;:125;;13062:9;-1:-1:-1;;;;;13055:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12955:125;;;-1:-1:-1;;;;;13019:33:0;;;;;;;:22;:33;;;;;;;12955:125;-1:-1:-1;;;;;12940:141:0;:10;-1:-1:-1;;;;;12940:141:0;;12872:209;12864:282;;;;-1:-1:-1;;;12864:282:0;;;;;;;:::i;:::-;15675:24;15667:75:::1;;;::::0;-1:-1:-1;;;15667:75:0;;21701:2:1;15667:75:0::1;::::0;::::1;21683:21:1::0;21740:2;21720:18;;;21713:30;21779:27;21759:18;;;21752:55;21824:18;;15667:75:0::1;21499:349:1::0;15667:75:0::1;15782:15;15769:9;15761:18;;:36;15753:88;;;::::0;-1:-1:-1;;;15753:88:0;;25531:2:1;15753:88:0::1;::::0;::::1;25513:21:1::0;25570:2;25550:18;;;25543:30;25609:28;25589:18;;;25582:56;25655:18;;15753:88:0::1;25329:350:1::0;15753:88:0::1;15854:24;:35;15879:9;-1:-1:-1::0;;;;;15854:35:0::1;-1:-1:-1::0;;;;;15854:35:0::1;;;;;;;;;;;;15909:250;;;;;;;;15941:6;;15909:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15966:9;;15909:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;15909:250:0;;;-1:-1:-1;15909:250:0::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;::::0;;15994:11;;;;;;15909:250;::::1;15994:11:::0;;;;15909:250;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;;;15909:250:0;;;-1:-1:-1;15909:250:0::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;::::0;;16024:12;;;;;;15909:250;::::1;16024:12:::0;;;;15909:250;::::1;;::::0;::::1;::::0;;;-1:-1:-1;15909:250:0;;;-1:-1:-1;;;15909:250:0::1;::::0;;::::1;;::::0;;::::1;::::0;;;;;;;;;;;;::::1;::::0;;;;;;;;;;;15854:316;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;::::1;;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;15854:316:0::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;15854:316:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;15854:316:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16205:9;-1:-1:-1::0;;;;;16186:121:0::1;;16216:6;;16224:9;;16235:11;;16248:12;;16271:16;16289:9;16300:6;16186:121;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;15371:944:::0;;;;;;;;;;;;;;:::o;8637:1078::-;7375:20;;-1:-1:-1;;;;;7375:20:0;7361:10;:34;7353:100;;;;-1:-1:-1;;;7353:100:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9063:32:0;::::1;;::::0;;;:21:::1;:32;::::0;;;;;::::1;;9062:33;9054:106;;;::::0;-1:-1:-1;;;9054:106:0;;22816:2:1;9054:106:0::1;::::0;::::1;22798:21:1::0;22855:2;22835:18;;;22828:30;22894:34;22874:18;;;22867:62;-1:-1:-1;;;22945:18:1;;;22938:45;23000:19;;9054:106:0::1;22614:411:1::0;9054:106:0::1;-1:-1:-1::0;;;;;9427:35:0;::::1;;::::0;;;:24:::1;:35;::::0;;;;:42;:47;9419:99:::1;;;::::0;-1:-1:-1;;;9419:99:0;;17917:2:1;9419:99:0::1;::::0;::::1;17899:21:1::0;17956:2;17936:18;;;17929:30;17995:28;17975:18;;;17968:56;18041:18;;9419:99:0::1;17715:350:1::0;9419:99:0::1;-1:-1:-1::0;;;;;9543:33:0;;::::1;;::::0;;;:22:::1;:33;::::0;;;;;;;;:49;;-1:-1:-1;;;;;;9543:49:0::1;::::0;;::::1;::::0;;;::::1;::::0;;;9666:25;;-1:-1:-1;;;9666:25:0;;;;9640:10:::1;::::0;9608:99:::1;::::0;9543:33;;9666:23:::1;::::0;:25:::1;::::0;;::::1;::::0;9543:33;;9666:25;;;;;;9543:33;9666:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9608:99;::::0;;-1:-1:-1;;;;;11288:15:1;;;11270:34;;11340:15;;;11335:2;11320:18;;11313:43;11205:18;9608:99:0::1;;;;;;;8637:1078:::0;;:::o;13387:325::-;-1:-1:-1;;;;;12448:33:0;;;12431:14;12448:33;;;:22;:33;;;;;;13526:9;;12448:33;:125;;12555:9;-1:-1:-1;;;;;12548:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12448:125;;;-1:-1:-1;;;;;12512:33:0;;;;;;;:22;:33;;;;;;;12448:125;12431:142;-1:-1:-1;12594:10:0;-1:-1:-1;;;;;12594:20:0;;;12586:77;;;;-1:-1:-1;;;12586:77:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12682:28:0;;;;;;:17;:28;;;;;;;;12674:90;;;;-1:-1:-1;;;12674:90:0;;;;;;;:::i;:::-;13583:38:::1;::::0;;;::::1;;::::0;::::1;::::0;;::::1;;::::0;;;;;;;;::::1;::::0;;;;;;;;13595:12;;;;;;13583:38;;13595:12;;;;13583:38;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;;;13583:38:0;;;-1:-1:-1;13583:38:0::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;::::0;;13609:11;;;;;;13583:38;::::1;13609:11:::0;;;;13583:38;::::1;;::::0;::::1;::::0;;;-1:-1:-1;13583:38:0;;;;-1:-1:-1;;;;;;;13548:32:0;::::1;::::0;;:21:::1;:32;::::0;;;;;;;:73;;;;:32;;-1:-1:-1;13548:73:0::1;::::0;:32;;:73;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;13548:73:0::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;13655:9;-1:-1:-1::0;;;;;13637:67:0::1;;13666:10;13678:12;;13692:11;;13637:67;;;;;;;;;;:::i;:::-;;;;;;;;12420:364:::0;13387:325;;;;;;:::o;10543:117::-;10600:16;10636;10629:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10629:23:0;;;;;;;;;;;;;;;;;;;;;;;10543:117;:::o;6535:94::-;4804:5;;-1:-1:-1;;;;;4804:5:0;4813:10;4804:19;4796:42;;;;-1:-1:-1;;;4796:42:0;;;;;;;:::i;:::-;6599:3:::1;:22:::0;;-1:-1:-1;;;;;;6599:22:0::1;-1:-1:-1::0;;;;;6599:22:0;;;::::1;::::0;;;::::1;::::0;;6535:94::o;19398:472::-;19511:22;19546:20;19569:13;19576:6;19569:4;:13;:::i;:::-;:17;;19585:1;19569:17;:::i;:::-;19546:40;;19597:29;19650:12;19629:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19629:34:0;;;;;;;;;;;;;;;;-1:-1:-1;19597:66:0;-1:-1:-1;19674:14:0;;19701:136;19725:12;19721:1;:16;19701:136;;;-1:-1:-1;;;;;19778:35:0;;;;;;:24;:35;;;;;19814:10;19823:1;19814:6;:10;:::i;:::-;19778:47;;;;;;;;:::i;:::-;;;;;;;;;;;19759:66;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19759:66:0;;;-1:-1:-1;;19759:66:0;;;;;;;;;;;;-1:-1:-1;;;19759:66:0;;;;;;;;-1:-1:-1;;;19759:66:0;;;;;;;;;;;;;;;;;;:6;19766:8;;;;:::i;:::-;;;19759:16;;;;;;;;:::i;:::-;;;;;;:66;;;;19739:3;;;;;:::i;:::-;;;;19701:136;;;-1:-1:-1;19856:6:0;;19398:472;-1:-1:-1;;;;;;19398:472:0:o;17544:1307::-;-1:-1:-1;;;;;17714:35:0;;17685:26;17714:35;;;:24;:35;;;;;:43;;17750:6;;17714:43;;;;;;:::i;:::-;;;;;;;;;;;17685:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17685:72:0;;;-1:-1:-1;;17685:72:0;;;;;;;;;;;;-1:-1:-1;;;17685:72:0;;;;;;;;-1:-1:-1;;;17685:72:0;;;;;;;;;;;;;;;;;;17841:11;;17835:25;17685:72;;-1:-1:-1;17827:89:0;;;;-1:-1:-1;;;17827:89:0;;;;;;;:::i;:::-;17959:5;:21;;;17935:45;;:5;:21;;;:45;;;17927:92;;;;-1:-1:-1;;;17927:92:0;;24351:2:1;17927:92:0;;;24333:21:1;24390:2;24370:18;;;24363:30;-1:-1:-1;;;24409:18:1;;;24402:51;24470:18;;17927:92:0;24149:345:1;17927:92:0;18056:15;18038:5;:14;;;:33;;;;18030:75;;;;-1:-1:-1;;;18030:75:0;;21356:2:1;18030:75:0;;;21338:21:1;21395:2;21375:18;;;21368:30;-1:-1:-1;;;21414:18:1;;;21407:46;21470:18;;18030:75:0;21154:340:1;18030:75:0;-1:-1:-1;;;;;18125:32:0;;;;;;:21;:32;;;;;;;;:40;;;;;;;;18166:10;18125:52;;;;;;;;;;18124:53;18116:98;;;;-1:-1:-1;;;18116:98:0;;22469:2:1;18116:98:0;;;22451:21:1;22508:2;22488:18;;;22481:30;-1:-1:-1;;;22527:18:1;;;22520:48;22585:18;;18116:98:0;22267:342:1;18116:98:0;18276:11;;;;18233:39;;-1:-1:-1;;;18233:39:0;;18261:10;18233:39;;;10996:51:1;-1:-1:-1;;;;;18233:27:0;;;;;10969:18:1;;18233:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;18225:98;;;;-1:-1:-1;;;18225:98:0;;21009:2:1;18225:98:0;;;20991:21:1;21048:2;21028:18;;;21021:30;-1:-1:-1;;;21067:18:1;;;21060:48;21125:18;;18225:98:0;20807:342:1;18225:98:0;18370:9;-1:-1:-1;;;;;18363:30:0;;18408:10;18420:23;18433:9;18420:12;:23::i;:::-;18445:5;:11;;;18363:94;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11625:15:1;;;11607:34;;11677:15;;;;11672:2;11657:18;;11650:43;11724:2;11709:18;;11702:34;;;;11557:2;11542:18;;11367:375;18363:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;18524:32:0;;;;;;:21;:32;;;;;;;;:40;;;;;;;;18565:10;18524:52;;;;;;;;;:59;;-1:-1:-1;;18524:59:0;18579:4;18524:59;;;;;;18594:33;;;:22;:33;;;;;:41;;;;;;;;:58;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18594:58:0;;;;;;18704:35;;;:24;:35;;;:43;;18524:40;;18704:43;;;;;;:::i;:::-;;;;;;;;;:59;:43;;;;;:59;;:61;;;-1:-1:-1;;;18704:61:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;18806:9;-1:-1:-1;;;;;18783:60:0;;18817:6;18825:10;18837:5;18783:60;;;;;;;;:::i;:::-;;;;;;;;17619:1232;17544:1307;;:::o;10438:33::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10438:33:0;;-1:-1:-1;10438:33:0;:::o;16970:523::-;-1:-1:-1;;;;;12872:40:0;;;;;;:29;:40;;;;;;;;17068:10;12872:51;;;;;;;;;17057:9;;17068:10;12872:51;;;:209;;-1:-1:-1;;;;;;12955:33:0;;;13000:1;12955:33;;;:22;:33;;;;;;;:125;;13062:9;-1:-1:-1;;;;;13055:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12955:125;;;-1:-1:-1;;;;;13019:33:0;;;;;;;:22;:33;;;;;;;12955:125;-1:-1:-1;;;;;12940:141:0;:10;-1:-1:-1;;;;;12940:141:0;;12872:209;12864:282;;;;-1:-1:-1;;;12864:282:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17112:35:0;::::1;17091:18;17112:35:::0;;;:24:::1;:35;::::0;;;;:42;:46:::1;::::0;17157:1:::1;::::0;17112:46:::1;:::i;:::-;-1:-1:-1::0;;;;;17200:35:0;::::1;17171:26;17200:35:::0;;;:24:::1;:35;::::0;;;;:47;;17091:67;;-1:-1:-1;17171:26:0;;17091:67;;17200:47;::::1;;;;;:::i;:::-;;;;;;;;;;;17171:76;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;17171:76:0;;;-1:-1:-1;;17171:76:0::1;::::0;::::1;::::0;::::1;::::0;;::::1;;::::0;::::1;::::0;-1:-1:-1;;;17171:76:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17171:76:0;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;;;;17268:21:::1;::::0;::::1;::::0;17171:76;;-1:-1:-1;17268:26:0::1;::::0;17260:97:::1;;;::::0;-1:-1:-1;;;17260:97:0;;24701:2:1;17260:97:0::1;::::0;::::1;24683:21:1::0;24740:2;24720:18;;;24713:30;24779:34;24759:18;;;24752:62;-1:-1:-1;;;24830:18:1;;;24823:43;24883:19;;17260:97:0::1;24499:409:1::0;17260:97:0::1;-1:-1:-1::0;;;;;17378:35:0;::::1;;::::0;;;:24:::1;:35;::::0;;;;:41;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;-1:-1:-1;;17378:41:0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;::::1;:::i;:::-;;;::::0;::::1;;;:::i;:::-;;;::::0;::::1;;;:::i;:::-;;;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;17378:41:0::1;::::0;::::1;::::0;;-1:-1:-1;;17378:41:0;;;::::1;;::::0;;::::1;::::0;;;17435:50:::1;::::0;-1:-1:-1;;;;;17435:50:0;::::1;::::0;::::1;::::0;::::1;::::0;17467:10:::1;::::0;17479:5;;17435:50:::1;:::i;19065:163::-:0;-1:-1:-1;;;;;19185:35:0;;;;;;:24;:35;;;;;;;;19178:42;;;;;;;;;;;;;;;;;19143:22;;19178:42;;19185:35;;19178:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19178:42:0;;;-1:-1:-1;;19178:42:0;;;;;;;;;;;;;;;;-1:-1:-1;;;19178:42:0;;;;;;;;-1:-1:-1;;;19178:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19065:163;;;:::o;7847:455::-;7375:20;;-1:-1:-1;;;;;7375:20:0;7361:10;:34;7353:100;;;;-1:-1:-1;;;7353:100:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7962:28:0;::::1;;::::0;;;:17:::1;:28;::::0;;;;;::::1;;:37;;::::0;::::1;;;;7954:95;;;::::0;-1:-1:-1;;;7954:95:0;;19427:2:1;7954:95:0::1;::::0;::::1;19409:21:1::0;;;19446:18;;;19439:30;19505:34;19485:18;;;19478:62;19557:18;;7954:95:0::1;19225:356:1::0;7954:95:0::1;-1:-1:-1::0;;;;;8107:28:0;::::1;;::::0;;;:17:::1;:28;::::0;;;;:36;;-1:-1:-1;;8107:36:0::1;::::0;::::1;;;::::0;;;8154:74:::1;;8194:34;8218:9;8194:23;:34::i;:::-;8154:74;;;8162:29;8181:9;8162:18;:29::i;:::-;8244:50;::::0;;8276:10:::1;11915:51:1::0;;12009:14;;12002:22;11997:2;11982:18;;11975:50;-1:-1:-1;;;;;8244:50:0;::::1;::::0;::::1;::::0;11888:18:1;8244:50:0::1;;;;;;;7847:455:::0;;:::o;4850:77::-;4804:5;;-1:-1:-1;;;;;4804:5:0;4813:10;4804:19;4796:42;;;;-1:-1:-1;;;4796:42:0;;;;;;;:::i;:::-;4912:5:::1;:12:::0;;-1:-1:-1;;;;;;4912:12:0::1;-1:-1:-1::0;;;;;4912:12:0;;;::::1;::::0;;;::::1;::::0;;4850:77::o;14456:230::-;-1:-1:-1;;;;;12448:33:0;;;12431:14;12448:33;;;:22;:33;;;;;;14555:9;;12448:33;:125;;12555:9;-1:-1:-1;;;;;12548:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12448:125;;;-1:-1:-1;;;;;12512:33:0;;;;;;;:22;:33;;;;;;;12448:125;12431:142;-1:-1:-1;12594:10:0;-1:-1:-1;;;;;12594:20:0;;;12586:77;;;;-1:-1:-1;;;12586:77:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12682:28:0;;;;;;:17;:28;;;;;;;;12674:90;;;;-1:-1:-1;;;12674:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14577:36:0;;::::1;;::::0;;;:25:::1;:36;::::0;;;;;;;;:48;;-1:-1:-1;;;;;;14577:48:0::1;::::0;;::::1;::::0;;::::1;::::0;;14641:37;;10996:51:1;;;14577:36:0;;14641:37:::1;::::0;10969:18:1;14641:37:0::1;;;;;;;12420:364:::0;14456:230;;;:::o;10666:176::-;10768:16;:23;;-1:-1:-1;;;;;10733:32:0;;;;;;;:21;:32;;;;;:58;;;10802:32;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10802:32:0;;;;;;10666:176::o;14233:217::-;-1:-1:-1;;;;;14324:36:0;;;14297:7;14324:36;;;:25;:36;;;;;;14297:7;;14324:36;:117;;14430:11;;-1:-1:-1;;;;;14430:11:0;14324:117;;;-1:-1:-1;;;;;14391:36:0;;;;;;;:25;:36;;;;;;;14324:117;14317:124;14233:217;-1:-1:-1;;14233:217:0:o;10848:664::-;10941:16;:23;10920:18;;10941:27;;10967:1;;10941:27;:::i;:::-;-1:-1:-1;;;;;11003:32:0;;10979:21;11003:32;;;:21;:32;;;;;;10920:48;;-1:-1:-1;11118:27:0;;;11114:244;;11234:20;11257:16;11274:10;11257:28;;;;;;;;:::i;:::-;;;;;;;;;;;11300:16;:31;;-1:-1:-1;;;;;11257:28:0;;;;-1:-1:-1;11257:28:0;;11317:13;;11300:31;;;;;;:::i;:::-;;;;;;;;;:46;;;;;-1:-1:-1;;;;;11300:46:0;;;;;-1:-1:-1;;;;;11300:46:0;;;;;;11147:211;11114:244;11403:16;:22;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;11403:22:0;;;;;-1:-1:-1;;;;;;11403:22:0;;;;;;;;;-1:-1:-1;;;;;11472:32:0;;;;;;:21;:32;;;-1:-1:-1;;11472:32:0;;;11465:39;10848:664::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;14:134:1;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:160::-;218:20;;274:13;;267:21;257:32;;247:60;;303:1;300;293:12;318:348;370:8;380:6;434:3;427:4;419:6;415:17;411:27;401:55;;452:1;449;442:12;401:55;-1:-1:-1;475:20:1;;518:18;507:30;;504:50;;;550:1;547;540:12;504:50;587:4;579:6;575:17;563:29;;639:3;632:4;623:6;615;611:19;607:30;604:39;601:59;;;656:1;653;646:12;601:59;318:348;;;;;:::o;671:719::-;714:5;767:3;760:4;752:6;748:17;744:27;734:55;;785:1;782;775:12;734:55;821:6;808:20;847:18;884:2;880;877:10;874:36;;;890:18;;:::i;:::-;965:2;959:9;933:2;1019:13;;-1:-1:-1;;1015:22:1;;;1039:2;1011:31;1007:40;995:53;;;1063:18;;;1083:22;;;1060:46;1057:72;;;1109:18;;:::i;:::-;1149:10;1145:2;1138:22;1184:2;1176:6;1169:18;1230:3;1223:4;1218:2;1210:6;1206:15;1202:26;1199:35;1196:55;;;1247:1;1244;1237:12;1196:55;1311:2;1304:4;1296:6;1292:17;1285:4;1277:6;1273:17;1260:54;1358:1;1351:4;1346:2;1338:6;1334:15;1330:26;1323:37;1378:6;1369:15;;;;;;671:719;;;;:::o;1395:163::-;1462:20;;1522:10;1511:22;;1501:33;;1491:61;;1548:1;1545;1538:12;1563:247;1622:6;1675:2;1663:9;1654:7;1650:23;1646:32;1643:52;;;1691:1;1688;1681:12;1643:52;1730:9;1717:23;1749:31;1774:5;1749:31;:::i;:::-;1799:5;1563:247;-1:-1:-1;;;1563:247:1:o;1815:251::-;1885:6;1938:2;1926:9;1917:7;1913:23;1909:32;1906:52;;;1954:1;1951;1944:12;1906:52;1986:9;1980:16;2005:31;2030:5;2005:31;:::i;2071:388::-;2139:6;2147;2200:2;2188:9;2179:7;2175:23;2171:32;2168:52;;;2216:1;2213;2206:12;2168:52;2255:9;2242:23;2274:31;2299:5;2274:31;:::i;:::-;2324:5;-1:-1:-1;2381:2:1;2366:18;;2353:32;2394:33;2353:32;2394:33;:::i;:::-;2446:7;2436:17;;;2071:388;;;;;:::o;2464:456::-;2538:6;2546;2554;2607:2;2595:9;2586:7;2582:23;2578:32;2575:52;;;2623:1;2620;2613:12;2575:52;2662:9;2649:23;2681:31;2706:5;2681:31;:::i;:::-;2731:5;-1:-1:-1;2788:2:1;2773:18;;2760:32;2801:33;2760:32;2801:33;:::i;:::-;2853:7;-1:-1:-1;2879:35:1;2910:2;2895:18;;2879:35;:::i;:::-;2869:45;;2464:456;;;;;:::o;2925:315::-;2990:6;2998;3051:2;3039:9;3030:7;3026:23;3022:32;3019:52;;;3067:1;3064;3057:12;3019:52;3106:9;3093:23;3125:31;3150:5;3125:31;:::i;:::-;3175:5;-1:-1:-1;3199:35:1;3230:2;3215:18;;3199:35;:::i;:::-;3189:45;;2925:315;;;;;:::o;3245:856::-;3346:6;3354;3362;3370;3378;3431:2;3419:9;3410:7;3406:23;3402:32;3399:52;;;3447:1;3444;3437:12;3399:52;3486:9;3473:23;3505:31;3530:5;3505:31;:::i;:::-;3555:5;-1:-1:-1;3611:2:1;3596:18;;3583:32;3634:18;3664:14;;;3661:34;;;3691:1;3688;3681:12;3661:34;3730:59;3781:7;3772:6;3761:9;3757:22;3730:59;:::i;:::-;3808:8;;-1:-1:-1;3704:85:1;-1:-1:-1;3896:2:1;3881:18;;3868:32;;-1:-1:-1;3912:16:1;;;3909:36;;;3941:1;3938;3931:12;3909:36;;3980:61;4033:7;4022:8;4011:9;4007:24;3980:61;:::i;:::-;3245:856;;;;-1:-1:-1;3245:856:1;;-1:-1:-1;4060:8:1;;3954:87;3245:856;-1:-1:-1;;;3245:856:1:o;4106:1592::-;4274:6;4282;4290;4298;4306;4314;4322;4330;4338;4346;4354:7;4363;4417:3;4405:9;4396:7;4392:23;4388:33;4385:53;;;4434:1;4431;4424:12;4385:53;4457:29;4476:9;4457:29;:::i;:::-;4447:39;;4535:18;4529:2;4518:9;4514:18;4501:32;4498:56;4495:76;;;4567:1;4564;4557:12;4495:76;4606:85;4683:7;4676:2;4665:9;4661:18;4648:32;4637:9;4633:48;4606:85;:::i;:::-;4710:8;;-1:-1:-1;4737:8:1;-1:-1:-1;4794:18:1;4788:2;4773:18;;4760:32;4757:56;4754:76;;;4826:1;4823;4816:12;4754:76;4865:85;4942:7;4935:2;4924:9;4920:18;4907:32;4896:9;4892:48;4865:85;:::i;:::-;4969:8;;-1:-1:-1;4996:8:1;-1:-1:-1;5053:18:1;5047:2;5032:18;;5019:32;5016:56;5013:76;;;5085:1;5082;5075:12;5013:76;5124:85;5201:7;5194:2;5183:9;5179:18;5166:32;5155:9;5151:48;5124:85;:::i;:::-;5228:8;;-1:-1:-1;5255:8:1;-1:-1:-1;5313:18:1;5306:3;5291:19;;5278:33;5275:57;5272:77;;;5345:1;5342;5335:12;5272:77;5384:86;5462:7;5454:3;5443:9;5439:19;5426:33;5415:9;5411:49;5384:86;:::i;:::-;5489:8;;-1:-1:-1;5516:8:1;-1:-1:-1;5543:38:1;5576:3;5561:19;;5543:38;:::i;:::-;5533:48;;5601:38;5634:3;5623:9;5619:19;5601:38;:::i;:::-;5590:49;;5687:3;5676:9;5672:19;5659:33;5648:44;;4106:1592;;;;;;;;;;;;;;:::o;5703:315::-;5771:6;5779;5832:2;5820:9;5811:7;5807:23;5803:32;5800:52;;;5848:1;5845;5838:12;5800:52;5887:9;5874:23;5906:31;5931:5;5906:31;:::i;:::-;5956:5;6008:2;5993:18;;;;5980:32;;-1:-1:-1;;;5703:315:1:o;6023:456::-;6100:6;6108;6116;6169:2;6157:9;6148:7;6144:23;6140:32;6137:52;;;6185:1;6182;6175:12;6137:52;6224:9;6211:23;6243:31;6268:5;6243:31;:::i;:::-;6293:5;-1:-1:-1;6345:2:1;6330:18;;6317:32;;-1:-1:-1;6401:2:1;6386:18;;6373:32;6414:33;6373:32;6414:33;:::i;:::-;6466:7;6456:17;;;6023:456;;;;;:::o;6484:1608::-;6591:6;6599;6607;6660:2;6648:9;6639:7;6635:23;6631:32;6628:52;;;6676:1;6673;6666:12;6628:52;6715:9;6702:23;6734:31;6759:5;6734:31;:::i;:::-;6784:5;-1:-1:-1;6836:2:1;6821:18;;6808:32;;-1:-1:-1;6891:2:1;6876:18;;6863:32;6914:18;6944:14;;;6941:34;;;6971:1;6968;6961:12;6941:34;6994:22;;;;7050:6;7032:16;;;7028:29;7025:49;;;7070:1;7067;7060:12;7025:49;7098:17;;:::i;:::-;7153:2;7140:16;7181:2;7171:8;7168:16;7165:36;;;7197:1;7194;7187:12;7165:36;7226:45;7263:7;7252:8;7248:2;7244:17;7226:45;:::i;:::-;7217:7;7210:62;;7318:2;7314;7310:11;7297:25;7347:2;7337:8;7334:16;7331:36;;;7363:1;7360;7353:12;7331:36;7401:45;7438:7;7427:8;7423:2;7419:17;7401:45;:::i;:::-;7396:2;7387:7;7383:16;7376:71;;7493:2;7489;7485:11;7472:25;7522:2;7512:8;7509:16;7506:36;;;7538:1;7535;7528:12;7506:36;7576:45;7613:7;7602:8;7598:2;7594:17;7576:45;:::i;:::-;7571:2;7562:7;7558:16;7551:71;;7668:2;7664;7660:11;7647:25;7697:2;7687:8;7684:16;7681:36;;;7713:1;7710;7703:12;7681:36;7751:45;7788:7;7777:8;7773:2;7769:17;7751:45;:::i;:::-;7746:2;7737:7;7733:16;7726:71;;7832:31;7858:3;7854:2;7850:12;7832:31;:::i;:::-;7826:3;7817:7;7813:17;7806:58;7899:31;7925:3;7921:2;7917:12;7899:31;:::i;:::-;7893:3;7884:7;7880:17;7873:58;7966:31;7992:3;7988:2;7984:12;7966:31;:::i;:::-;7960:3;7951:7;7947:17;7940:58;8054:3;8050:2;8046:12;8033:26;8027:3;8018:7;8014:17;8007:53;8079:7;8069:17;;;;;6484:1608;;;;;:::o;8097:383::-;8174:6;8182;8190;8243:2;8231:9;8222:7;8218:23;8214:32;8211:52;;;8259:1;8256;8249:12;8211:52;8298:9;8285:23;8317:31;8342:5;8317:31;:::i;:::-;8367:5;8419:2;8404:18;;8391:32;;-1:-1:-1;8470:2:1;8455:18;;;8442:32;;8097:383;-1:-1:-1;;;8097:383:1:o;8485:180::-;8544:6;8597:2;8585:9;8576:7;8572:23;8568:32;8565:52;;;8613:1;8610;8603:12;8565:52;-1:-1:-1;8636:23:1;;8485:180;-1:-1:-1;8485:180:1:o;8670:184::-;8740:6;8793:2;8781:9;8772:7;8768:23;8764:32;8761:52;;;8809:1;8806;8799:12;8761:52;-1:-1:-1;8832:16:1;;8670:184;-1:-1:-1;8670:184:1:o;8859:267::-;8948:6;8943:3;8936:19;9000:6;8993:5;8986:4;8981:3;8977:14;8964:43;-1:-1:-1;9052:1:1;9027:16;;;9045:4;9023:27;;;9016:38;;;;9108:2;9087:15;;;-1:-1:-1;;9083:29:1;9074:39;;;9070:50;;8859:267::o;9131:472::-;9173:3;9211:5;9205:12;9238:6;9233:3;9226:19;9263:1;9273:162;9287:6;9284:1;9281:13;9273:162;;;9349:4;9405:13;;;9401:22;;9395:29;9377:11;;;9373:20;;9366:59;9302:12;9273:162;;;9453:6;9450:1;9447:13;9444:87;;;9519:1;9512:4;9503:6;9498:3;9494:16;9490:27;9483:38;9444:87;-1:-1:-1;9585:2:1;9564:15;-1:-1:-1;;9560:29:1;9551:39;;;;9592:4;9547:50;;9131:472;-1:-1:-1;;9131:472:1:o;9608:1138::-;9664:3;9692:6;9733:5;9727:12;9760:2;9755:3;9748:15;9784:45;9825:2;9820:3;9816:12;9802;9784:45;:::i;:::-;9772:57;;;9877:4;9870:5;9866:16;9860:23;9925:3;9919:4;9915:14;9908:4;9903:3;9899:14;9892:38;9953:39;9987:4;9971:14;9953:39;:::i;:::-;9939:53;;;10040:4;10033:5;10029:16;10023:23;10090:3;10082:6;10078:16;10071:4;10066:3;10062:14;10055:40;10118:41;10152:6;10136:14;10118:41;:::i;:::-;10104:55;;;10207:4;10200:5;10196:16;10190:23;10257:3;10249:6;10245:16;10238:4;10233:3;10229:14;10222:40;10285:41;10319:6;10303:14;10285:41;:::i;:::-;10271:55;;;10374:4;10367:5;10363:16;10357:23;10389:49;10432:4;10427:3;10423:14;10407;10827:10;10816:22;10804:35;;10751:94;10389:49;;10486:4;10479:5;10475:16;10469:23;10501:49;10544:4;10539:3;10535:14;10519;10827:10;10816:22;10804:35;;10751:94;10501:49;;10598:4;10591:5;10587:16;10581:23;10613:49;10656:4;10651:3;10647:14;10631;10827:10;10816:22;10804:35;;10751:94;10613:49;;10711:4;10704:5;10700:16;10694:23;10687:4;10682:3;10678:14;10671:47;10734:6;10727:13;;;9608:1138;;;;:::o;12036:534::-;-1:-1:-1;;;;;12281:32:1;;12263:51;;12350:2;12345;12330:18;;12323:30;;;-1:-1:-1;;12376:62:1;;12419:18;;12411:6;12403;12376:62;:::i;:::-;12486:9;12478:6;12474:22;12469:2;12458:9;12454:18;12447:50;12514;12557:6;12549;12541;12514:50;:::i;:::-;12506:58;12036:534;-1:-1:-1;;;;;;;;12036:534:1:o;12575:371::-;-1:-1:-1;;;;;12792:32:1;;12774:51;;12861:2;12856;12841:18;;12834:30;;;-1:-1:-1;;12881:59:1;;12921:18;;12913:6;12881:59;:::i;:::-;12873:67;12575:371;-1:-1:-1;;;;12575:371:1:o;13230:658::-;13401:2;13453:21;;;13523:13;;13426:18;;;13545:22;;;13372:4;;13401:2;13624:15;;;;13598:2;13583:18;;;13372:4;13667:195;13681:6;13678:1;13675:13;13667:195;;;13746:13;;-1:-1:-1;;;;;13742:39:1;13730:52;;13837:15;;;;13802:12;;;;13778:1;13696:9;13667:195;;13893:857;14095:4;14124:2;14164;14153:9;14149:18;14194:2;14183:9;14176:21;14217:6;14252;14246:13;14283:6;14275;14268:22;14321:2;14310:9;14306:18;14299:25;;14383:2;14373:6;14370:1;14366:14;14355:9;14351:30;14347:39;14333:53;;14421:2;14413:6;14409:15;14442:1;14452:269;14466:6;14463:1;14460:13;14452:269;;;14559:2;14555:7;14543:9;14535:6;14531:22;14527:36;14522:3;14515:49;14587:54;14634:6;14625;14619:13;14587:54;:::i;:::-;14577:64;-1:-1:-1;14699:12:1;;;;14664:15;;;;14488:1;14481:9;14452:269;;;-1:-1:-1;14738:6:1;;13893:857;-1:-1:-1;;;;;;;13893:857:1:o;15168:1080::-;15582:3;15571:9;15564:22;15545:4;15609:63;15667:3;15656:9;15652:19;15644:6;15636;15609:63;:::i;:::-;15720:9;15712:6;15708:22;15703:2;15692:9;15688:18;15681:50;15754;15797:6;15789;15781;15754:50;:::i;:::-;15740:64;;15852:9;15844:6;15840:22;15835:2;15824:9;15820:18;15813:50;15886;15929:6;15921;15913;15886:50;:::i;:::-;15872:64;;15984:9;15976:6;15972:22;15967:2;15956:9;15952:18;15945:50;16012;16055:6;16047;16039;16012:50;:::i;:::-;16081:10;16128:15;;;16122:3;16107:19;;16100:44;16181:15;;;;16175:3;16160:19;;16153:44;-1:-1:-1;16228:3:1;16213:19;16206:36;16004:58;15168:1080;-1:-1:-1;;;;;;;;;15168:1080:1:o;16253:383::-;16450:2;16439:9;16432:21;16413:4;16476:45;16517:2;16506:9;16502:18;16494:6;16476:45;:::i;:::-;16569:9;16561:6;16557:22;16552:2;16541:9;16537:18;16530:50;16597:33;16623:6;16615;16597:33;:::i;:::-;16589:41;16253:383;-1:-1:-1;;;;;16253:383:1:o;16641:1069::-;17003:4;17032:3;17062:2;17051:9;17044:21;17088:45;17129:2;17118:9;17114:18;17106:6;17088:45;:::i;:::-;17074:59;;17181:9;17173:6;17169:22;17164:2;17153:9;17149:18;17142:50;17215:33;17241:6;17233;17215:33;:::i;:::-;17201:47;;17296:9;17288:6;17284:22;17279:2;17268:9;17264:18;17257:50;17330:33;17356:6;17348;17330:33;:::i;:::-;17316:47;;17411:9;17403:6;17399:22;17394:2;17383:9;17379:18;17372:50;17439:33;17465:6;17457;17439:33;:::i;:::-;17491:10;17538:15;;;17532:3;17517:19;;17510:44;17591:15;;;17585:3;17570:19;;17563:44;-1:-1:-1;;17644:15:1;;;;17638:3;17623:19;;17616:44;17691:3;17676:19;17669:35;;;;17431:41;16641:1069;-1:-1:-1;;;;16641:1069:1:o;18481:334::-;18683:2;18665:21;;;18722:2;18702:18;;;18695:30;-1:-1:-1;;;18756:2:1;18741:18;;18734:40;18806:2;18791:18;;18481:334::o;18820:400::-;19022:2;19004:21;;;19061:2;19041:18;;;19034:30;19100:34;19095:2;19080:18;;19073:62;-1:-1:-1;;;19166:2:1;19151:18;;19144:34;19210:3;19195:19;;18820:400::o;19586:398::-;19788:2;19770:21;;;19827:2;19807:18;;;19800:30;19866:34;19861:2;19846:18;;19839:62;-1:-1:-1;;;19932:2:1;19917:18;;19910:32;19974:3;19959:19;;19586:398::o;19989:404::-;20191:2;20173:21;;;20230:2;20210:18;;;20203:30;20269:34;20264:2;20249:18;;20242:62;-1:-1:-1;;;20335:2:1;20320:18;;20313:38;20383:3;20368:19;;19989:404::o;23030:398::-;23232:2;23214:21;;;23271:2;23251:18;;;23244:30;23310:34;23305:2;23290:18;;23283:62;-1:-1:-1;;;23376:2:1;23361:18;;23354:32;23418:3;23403:19;;23030:398::o;23433:355::-;23635:2;23617:21;;;23674:2;23654:18;;;23647:30;23713:33;23708:2;23693:18;;23686:61;23779:2;23764:18;;23433:355::o;24913:411::-;25115:2;25097:21;;;25154:2;25134:18;;;25127:30;25193:34;25188:2;25173:18;;25166:62;-1:-1:-1;;;25259:2:1;25244:18;;25237:45;25314:3;25299:19;;24913:411::o;25684:491::-;25961:2;25950:9;25943:21;25924:4;25987:59;26042:2;26031:9;26027:18;26019:6;25987:59;:::i;:::-;26094:9;26086:6;26082:22;26077:2;26066:9;26062:18;26055:50;26122:47;26162:6;26154;26122:47;:::i;26362:442::-;26589:25;;;-1:-1:-1;;;;;26650:32:1;;26645:2;26630:18;;26623:60;26719:2;26714;26699:18;;26692:30;;;-1:-1:-1;;26739:59:1;;26779:18;;26771:6;26739:59;:::i;26809:250::-;26876:2;26870:9;26918:6;26906:19;;26955:18;26940:34;;26976:22;;;26937:62;26934:88;;;27002:18;;:::i;:::-;27038:2;27031:22;26809:250;:::o;27064:128::-;27104:3;27135:1;27131:6;27128:1;27125:13;27122:39;;;27141:18;;:::i;:::-;-1:-1:-1;27177:9:1;;27064:128::o;27197:125::-;27237:4;27265:1;27262;27259:8;27256:34;;;27270:18;;:::i;:::-;-1:-1:-1;27307:9:1;;27197:125::o;27327:380::-;27406:1;27402:12;;;;27449;;;27470:61;;27524:4;27516:6;27512:17;27502:27;;27470:61;27577:2;27569:6;27566:14;27546:18;27543:38;27540:161;;;27623:10;27618:3;27614:20;27611:1;27604:31;27658:4;27655:1;27648:15;27686:4;27683:1;27676:15;27540:161;;27327:380;;;:::o;27712:135::-;27751:3;-1:-1:-1;;27772:17:1;;27769:43;;;27792:18;;:::i;:::-;-1:-1:-1;27839:1:1;27828:13;;27712:135::o;27852:201::-;27890:3;27918:10;27963:2;27956:5;27952:14;27990:2;27981:7;27978:15;27975:41;;;27996:18;;:::i;:::-;28045:1;28032:15;;27852:201;-1:-1:-1;;;27852:201:1:o;28058:127::-;28119:10;28114:3;28110:20;28107:1;28100:31;28150:4;28147:1;28140:15;28174:4;28171:1;28164:15;28190:127;28251:10;28246:3;28242:20;28239:1;28232:31;28282:4;28279:1;28272:15;28306:4;28303:1;28296:15;28322:127;28383:10;28378:3;28374:20;28371:1;28364:31;28414:4;28411:1;28404:15;28438:4;28435:1;28428:15;28454:127;28515:10;28510:3;28506:20;28503:1;28496:31;28546:4;28543:1;28536:15;28570:4;28567:1;28560:15;28586:131;-1:-1:-1;;;;;28661:31:1;;28651:42;;28641:70;;28707:1;28704;28697:12

Swarm Source

ipfs://08214d9cc81f6078b879cb8408c62eff112d8ed47a9e56b36c9cd73db1793a7d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.