ETH Price: $3,454.25 (+1.87%)
Gas: 9 Gwei

Contract

0x7d4e35A2090b3ba805ddB39B2c4b83612890Df87
 

Overview

ETH Balance

1.78728 ETH

Eth Value

$6,173.71 (@ $3,454.25/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Set Approval For...165627492023-02-05 13:01:47512 days ago1675602107IN
0x7d4e35A2...12890Df87
0 ETH0.0017633271.60428306
Set Approval For...144153412022-03-19 6:46:48835 days ago1647672408IN
0x7d4e35A2...12890Df87
0 ETH0.000377815.34178562
Set Approval For...142264002022-02-17 22:38:16864 days ago1645137496IN
0x7d4e35A2...12890Df87
0 ETH0.0032137769.0570233
Set Approval For...139812472022-01-11 1:25:38902 days ago1641864338IN
0x7d4e35A2...12890Df87
0 ETH0.0090756195.01489533
Set Approval For...139772542022-01-10 10:32:18903 days ago1641810738IN
0x7d4e35A2...12890Df87
0 ETH0.0106984229.88536961
Set Approval For...139567622022-01-07 6:45:22906 days ago1641537922IN
0x7d4e35A2...12890Df87
0 ETH0.00612602131.63480762
Set Approval For...132484782021-09-18 8:02:021017 days ago1631952122IN
0x7d4e35A2...12890Df87
0 ETH0.0020273643.57479773
Set Approval For...131368372021-09-01 1:32:121034 days ago1630459932IN
0x7d4e35A2...12890Df87
0 ETH0.00483336103.85836994
Set Approval For...131055182021-08-27 5:03:511039 days ago1630040631IN
0x7d4e35A2...12890Df87
0 ETH0.0033742572.50530732
Set Approval For...130353582021-08-16 9:05:411050 days ago1629104741IN
0x7d4e35A2...12890Df87
0 ETH0.0019182541.21905107
Withdraw129266612021-07-30 11:20:091067 days ago1627644009IN
0x7d4e35A2...12890Df87
0 ETH0.0010876331
Set Approval For...128863992021-07-24 2:46:051073 days ago1627094765IN
0x7d4e35A2...12890Df87
0 ETH0.000744616
Set Approval For...126500242021-06-17 5:18:481110 days ago1623907128IN
0x7d4e35A2...12890Df87
0 ETH0.0006515314
Withdraw126448342021-06-16 10:02:201111 days ago1623837740IN
0x7d4e35A2...12890Df87
0 ETH0.0017610511
Withdraw126447632021-06-16 9:47:031111 days ago1623836823IN
0x7d4e35A2...12890Df87
0 ETH0.0017610511
Withdraw126238732021-06-13 3:59:331114 days ago1623556773IN
0x7d4e35A2...12890Df87
0 ETH0.0016009610
Withdraw Multipl...126236862021-06-13 3:20:511114 days ago1623554451IN
0x7d4e35A2...12890Df87
0 ETH0.017032919
Withdraw Multipl...126236422021-06-13 3:11:431114 days ago1623553903IN
0x7d4e35A2...12890Df87
0 ETH0.0344804110
Withdraw Multipl...126236302021-06-13 3:08:311114 days ago1623553711IN
0x7d4e35A2...12890Df87
0 ETH0.028232479
Withdraw Multipl...126235862021-06-13 2:56:591114 days ago1623553019IN
0x7d4e35A2...12890Df87
0 ETH0.025535619
Withdraw Multipl...126235582021-06-13 2:50:241114 days ago1623552624IN
0x7d4e35A2...12890Df87
0 ETH0.028232479
Withdraw Multipl...126232492021-06-13 1:42:221114 days ago1623548542IN
0x7d4e35A2...12890Df87
0 ETH0.0313040810
Withdraw Multipl...126232342021-06-13 1:40:401114 days ago1623548440IN
0x7d4e35A2...12890Df87
0 ETH0.0401646210
Withdraw Multipl...126232092021-06-13 1:36:091114 days ago1623548169IN
0x7d4e35A2...12890Df87
0 ETH0.0401646210
Withdraw Multipl...126231962021-06-13 1:31:551114 days ago1623547915IN
0x7d4e35A2...12890Df87
0 ETH0.0481975412
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
126448342021-06-16 10:02:201111 days ago1623837740
0x7d4e35A2...12890Df87
0.0042 ETH
126447632021-06-16 9:47:031111 days ago1623836823
0x7d4e35A2...12890Df87
0.0042 ETH
126238732021-06-13 3:59:331114 days ago1623556773
0x7d4e35A2...12890Df87
0.0042 ETH
126236862021-06-13 3:20:511114 days ago1623554451
0x7d4e35A2...12890Df87
0.01188 ETH
126236862021-06-13 3:20:511114 days ago1623554451
0x7d4e35A2...12890Df87
0.01188 ETH
126236862021-06-13 3:20:511114 days ago1623554451
0x7d4e35A2...12890Df87
0.01188 ETH
126236862021-06-13 3:20:511114 days ago1623554451
0x7d4e35A2...12890Df87
0.01188 ETH
126236862021-06-13 3:20:511114 days ago1623554451
0x7d4e35A2...12890Df87
0.01188 ETH
126236862021-06-13 3:20:511114 days ago1623554451
0x7d4e35A2...12890Df87
0.01188 ETH
126236422021-06-13 3:11:431114 days ago1623553903
0x7d4e35A2...12890Df87
0.01188 ETH
126236422021-06-13 3:11:431114 days ago1623553903
0x7d4e35A2...12890Df87
0.01188 ETH
126236422021-06-13 3:11:431114 days ago1623553903
0x7d4e35A2...12890Df87
0.01188 ETH
126236422021-06-13 3:11:431114 days ago1623553903
0x7d4e35A2...12890Df87
0.01188 ETH
126236422021-06-13 3:11:431114 days ago1623553903
0x7d4e35A2...12890Df87
0.01188 ETH
126236422021-06-13 3:11:431114 days ago1623553903
0x7d4e35A2...12890Df87
0.01188 ETH
126236422021-06-13 3:11:431114 days ago1623553903
0x7d4e35A2...12890Df87
0.01188 ETH
126236422021-06-13 3:11:431114 days ago1623553903
0x7d4e35A2...12890Df87
0.01188 ETH
126236422021-06-13 3:11:431114 days ago1623553903
0x7d4e35A2...12890Df87
0.01188 ETH
126236422021-06-13 3:11:431114 days ago1623553903
0x7d4e35A2...12890Df87
0.01188 ETH
126236422021-06-13 3:11:431114 days ago1623553903
0x7d4e35A2...12890Df87
0.01188 ETH
126236302021-06-13 3:08:311114 days ago1623553711
0x7d4e35A2...12890Df87
0.01188 ETH
126236302021-06-13 3:08:311114 days ago1623553711
0x7d4e35A2...12890Df87
0.01188 ETH
126236302021-06-13 3:08:311114 days ago1623553711
0x7d4e35A2...12890Df87
0.01188 ETH
126236302021-06-13 3:08:311114 days ago1623553711
0x7d4e35A2...12890Df87
0.01188 ETH
126236302021-06-13 3:08:311114 days ago1623553711
0x7d4e35A2...12890Df87
0.01188 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
POWNFT

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

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

// SPDX-License-Identifier: This smart contract is guarded by an angry ghost
pragma solidity ^0.8.0;

contract POWNFT{


    constructor(){
        supportedInterfaces[0x80ac58cd] = true; //ERC721
        supportedInterfaces[0x5b5e139f] = true; //ERC721Metadata
        supportedInterfaces[0x780e9d63] = true; //ERC721Enumerable
        supportedInterfaces[0x01ffc9a7] = true; //ERC165

        //Issue token 0 to creator
        mint(1,bytes32(0));
    }


    //////===721 Standard
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

    //////===721 Implementation
    mapping(address => uint256) internal BALANCES;
    mapping (uint256 => address) internal ALLOWANCE;
    mapping (address => mapping (address => bool)) internal AUTHORISED;

    bytes32[] TOKENS;  //Array of all tokens [hash,hash,...]
    mapping(uint256 => address) OWNERS;  //Mapping of owners


    mapping(uint256 => uint256) WITHDRAWALS;

    //    METADATA VARS
    string private __name = "POW NFT";
    string private __symbol = "POW";
    bytes private __uriBase = bytes("https://www.pownftmetadata.com/d/");


    //    ENUMERABLE VARS
    mapping(address => uint[]) internal OWNER_INDEX_TO_ID;
    mapping(uint => uint) internal OWNER_ID_TO_INDEX;
    mapping(uint => uint) internal ID_TO_INDEX;


    //      MINING VARS
    uint BASE_COST = 0.00003 ether;
    uint BASE_DIFFICULTY = uint(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)/uint(2);
    uint DIFFICULTY_RAMP = 5;


    //      MINING EVENTS
    event Mined(uint indexed _tokenId, bytes32 hash);
    event Withdraw(uint indexed _tokenId, uint value);

    //      MINING FUNCTIONS
    function generationOf(uint _tokenId) private pure returns(uint generation){
        for(generation = 0; _tokenId > 0; generation++){
            _tokenId /= 2;
        }
        return generation - 1;
    }
    function hashOf(uint _tokenId) public view returns(bytes32){
        require(isValidToken(_tokenId),"invalid");
        return TOKENS[_tokenId - 1];
    }

    function withdraw(uint _tokenId) public{
        require(msg.sender == ownerOf(_tokenId),'owner');

        uint generation = generationOf(_tokenId);


        uint last = 2**(generation+1)-1;
        uint payout = 0;
        for(uint i = TOKENS.length; i > last && i > WITHDRAWALS[_tokenId]; i--){
            payout += BASE_COST;
        }
        WITHDRAWALS[_tokenId] = TOKENS.length;
        emit Withdraw(_tokenId,payout);
        payable(msg.sender).transfer(payout);

    }
    function withdrawMultiple(uint[] calldata _tokenIds) public{
        for(uint i = 0; i < _tokenIds.length; i++){
            withdraw(_tokenIds[i]);
        }
    }

    function mine(uint nonce) external payable{
        uint tokenId = TOKENS.length + 1;
        uint generation = generationOf(tokenId);

        uint difficulty = BASE_DIFFICULTY / (DIFFICULTY_RAMP**generation);
        if(generation > 13){
            difficulty /= (tokenId - 2**14 + 1);
        }


        uint cost = (2**generation - 1)* BASE_COST;


        bytes32 hash = keccak256(abi.encodePacked(msg.sender,TOKENS[tokenId-2],nonce));

        require(uint(hash) < difficulty,"difficulty");
        require(msg.value ==cost,"cost");

        mint(tokenId,keccak256(abi.encodePacked(hash,block.timestamp)));
    }

    function mint(uint tokenId, bytes32 hash) private{
        OWNERS[tokenId] = msg.sender;
        BALANCES[msg.sender]++;
        OWNER_ID_TO_INDEX[tokenId] = OWNER_INDEX_TO_ID[msg.sender].length;
        OWNER_INDEX_TO_ID[msg.sender].push(tokenId);

        ID_TO_INDEX[tokenId] = TOKENS.length;
        TOKENS.push(hash);

        emit Mined(tokenId,hash);
        emit Transfer(address(0),msg.sender,tokenId);
    }


    function isValidToken(uint256 _tokenId) internal view returns(bool){
        return OWNERS[_tokenId] != address(0);
    }

    function balanceOf(address _owner) external view returns (uint256){
        return BALANCES[_owner];
    }

    function ownerOf(uint256 _tokenId) public view returns(address){
        require(isValidToken(_tokenId),"invalid");
        return OWNERS[_tokenId];
    }


    function approve(address _approved, uint256 _tokenId)  external{
        address owner = ownerOf(_tokenId);
        require( owner == msg.sender                    //Require Sender Owns Token
            || AUTHORISED[owner][msg.sender]                //  or is approved for all.
        ,"permission");
        emit Approval(owner, _approved, _tokenId);
        ALLOWANCE[_tokenId] = _approved;
    }

    function getApproved(uint256 _tokenId) external view returns (address) {
        require(isValidToken(_tokenId),"invalid");
        return ALLOWANCE[_tokenId];
    }

    function isApprovedForAll(address _owner, address _operator) external view returns (bool) {
        return AUTHORISED[_owner][_operator];
    }


    function setApprovalForAll(address _operator, bool _approved) external {
        emit ApprovalForAll(msg.sender,_operator, _approved);
        AUTHORISED[msg.sender][_operator] = _approved;
    }


    function transferFrom(address _from, address _to, uint256 _tokenId) public {

        //Check Transferable
        //There is a token validity check in ownerOf
        address owner = ownerOf(_tokenId);

        require ( owner == msg.sender             //Require sender owns token
        //Doing the two below manually instead of referring to the external methods saves gas
        || ALLOWANCE[_tokenId] == msg.sender      //or is approved for this token
            || AUTHORISED[owner][msg.sender]          //or is approved for all
        ,"permission");
        require(owner == _from,"owner");
        require(_to != address(0),"zero");

        emit Transfer(_from, _to, _tokenId);


        OWNERS[_tokenId] =_to;

        BALANCES[_from]--;
        BALANCES[_to]++;

        //Reset approved if there is one
        if(ALLOWANCE[_tokenId] != address(0)){
            delete ALLOWANCE[_tokenId];
        }

        //Enumerable Additions
        uint oldIndex = OWNER_ID_TO_INDEX[_tokenId];
        //If the token isn't the last one in the owner's index
        if(oldIndex != OWNER_INDEX_TO_ID[_from].length - 1){
            //Move the old one in the index list
            OWNER_INDEX_TO_ID[_from][oldIndex] = OWNER_INDEX_TO_ID[_from][OWNER_INDEX_TO_ID[_from].length - 1];
            //Update the token's reference to its place in the index list
            OWNER_ID_TO_INDEX[OWNER_INDEX_TO_ID[_from][oldIndex]] = oldIndex;
        }
        //OWNER_INDEX_TO_ID[_from].length--;
        OWNER_INDEX_TO_ID[_from].pop();

        OWNER_ID_TO_INDEX[_tokenId] = OWNER_INDEX_TO_ID[_to].length;
        OWNER_INDEX_TO_ID[_to].push(_tokenId);

    }

    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) public {
        transferFrom(_from, _to, _tokenId);

        //Get size of "_to" address, if 0 it's a wallet
        uint32 size;
        assembly {
            size := extcodesize(_to)
        }
        if(size > 0){
            ERC721TokenReceiver receiver = ERC721TokenReceiver(_to);
            require(receiver.onERC721Received(msg.sender,_from,_tokenId,data) == bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")),"receiver");
        }

    }

    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external {
        safeTransferFrom(_from,_to,_tokenId,"");
    }


    // METADATA FUNCTIONS
    function tokenURI(uint256 _tokenId) public view returns (string memory){
        //Note: changed visibility to public
        require(isValidToken(_tokenId),'tokenId');

        uint _i = _tokenId;
        uint j = _i;
        uint len;
        while (j != 0) {
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len;
        while (_i != 0) {
            k = k-1;
            uint8 temp = (48 + uint8(_i - _i / 10 * 10));
            bytes1 b1 = bytes1(temp);
            bstr[k] = b1;
            _i /= 10;
        }


        return string(abi.encodePacked(__uriBase,bstr));

    }



    function name() external view returns (string memory _name){
        return __name;
    }

    function symbol() external view returns (string memory _symbol){
        return __symbol;
    }


    // ENUMERABLE FUNCTIONS
    function totalSupply() external view returns (uint256){
        return TOKENS.length;
    }

    function tokenByIndex(uint256 _index) external view returns(uint256){
        require(_index < TOKENS.length,"index");
        return _index + 1;
    }

    function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256){
        require(_index < BALANCES[_owner],"index");
        return OWNER_INDEX_TO_ID[_owner][_index];
    }

    // End 721 Implementation

    ///////===165 Implementation
    mapping (bytes4 => bool) internal supportedInterfaces;
    function supportsInterface(bytes4 interfaceID) external view returns (bool){
        return supportedInterfaces[interfaceID];
    }
    ///==End 165
}




interface ERC721TokenReceiver {
    //note: the national treasure is buried under parliament house
    function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns(bytes4);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"Mined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"hashOf","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"mine","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"_name","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"withdrawMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280600781526020017f504f57204e4654000000000000000000000000000000000000000000000000008152506006908051906020019062000051929190620004cd565b506040518060400160405280600381526020017f504f570000000000000000000000000000000000000000000000000000000000815250600790805190602001906200009f929190620004cd565b50604051806060016040528060218152602001620037c86021913960089080519060200190620000d19291906200055e565b50651b48eb57e000600c5560027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200010b91906200063c565b600d556005600e553480156200012057600080fd5b506001600f60006380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600063780e9d6360e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60006301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506200027f60016000801b6200028560201b60201c565b62000799565b336004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906200032890620006be565b9190505550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600a600084815260200190815260200160002081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190915055600380549050600b6000848152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190915055817f5570ed3da2dab8635dcc918badc12e05d60cbc9185347ef0065ab7335568cdae826040516200046591906200061f565b60405180910390a2813373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b828054620004db9062000688565b90600052602060002090601f016020900481019282620004ff57600085556200054b565b82601f106200051a57805160ff19168380011785556200054b565b828001600101855582156200054b579182015b828111156200054a5782518255916020019190600101906200052d565b5b5090506200055a9190620005ef565b5090565b8280546200056c9062000688565b90600052602060002090601f016020900481019282620005905760008555620005dc565b82601f10620005ab57805160ff1916838001178555620005dc565b82800160010185558215620005dc579182015b82811115620005db578251825591602001919060010190620005be565b5b509050620005eb9190620005ef565b5090565b5b808211156200060a576000816000905550600101620005f0565b5090565b620006198162000674565b82525050565b60006020820190506200063660008301846200060e565b92915050565b600062000649826200067e565b915062000656836200067e565b9250826200066957620006686200073b565b5b828204905092915050565b6000819050919050565b6000819050919050565b60006002820490506001821680620006a157607f821691505b60208210811415620006b857620006b76200076a565b5b50919050565b6000620006cb826200067e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156200070157620007006200070c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61301f80620007a96000396000f3fe60806040526004361061011f5760003560e01c80634f6ccce7116100a0578063a22cb46511610064578063a22cb46514610410578063b88d4fde14610439578063c87b56dd14610462578063e5b791061461049f578063e985e9c5146104c85761011f565b80634f6ccce7146102f15780636352211e1461032e57806370a082311461036b5780637e551b75146103a857806395d89b41146103e55761011f565b806323b872dd116100e757806323b872dd1461021d5780632e1a7d4d146102465780632f745c591461026f57806342842e0e146102ac5780634d474898146102d55761011f565b806301ffc9a71461012457806306fdde0314610161578063081812fc1461018c578063095ea7b3146101c957806318160ddd146101f2575b600080fd5b34801561013057600080fd5b5061014b600480360381019061014691906122a1565b610505565b60405161015891906127f3565b60405180910390f35b34801561016d57600080fd5b5061017661056d565b6040516101839190612829565b60405180910390f35b34801561019857600080fd5b506101b360048036038101906101ae91906122f3565b6105ff565b6040516101c0919061278c565b60405180910390f35b3480156101d557600080fd5b506101f060048036038101906101eb9190612220565b610684565b005b3480156101fe57600080fd5b50610207610842565b604051610214919061296b565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f919061211a565b61084f565b005b34801561025257600080fd5b5061026d600480360381019061026891906122f3565b611043565b005b34801561027b57600080fd5b5061029660048036038101906102919190612220565b6111e6565b6040516102a3919061296b565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce919061211a565b6112f2565b005b6102ef60048036038101906102ea91906122f3565b611312565b005b3480156102fd57600080fd5b50610318600480360381019061031391906122f3565b6114ef565b604051610325919061296b565b60405180910390f35b34801561033a57600080fd5b50610355600480360381019061035091906122f3565b61154c565b604051610362919061278c565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d91906120b5565b6115d1565b60405161039f919061296b565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca91906122f3565b611619565b6040516103dc919061280e565b60405180910390f35b3480156103f157600080fd5b506103fa6116bb565b6040516104079190612829565b60405180910390f35b34801561041c57600080fd5b50610437600480360381019061043291906121e4565b61174d565b005b34801561044557600080fd5b50610460600480360381019061045b9190612169565b61184a565b005b34801561046e57600080fd5b50610489600480360381019061048491906122f3565b6119a8565b6040516104969190612829565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c1919061225c565b611ba6565b005b3480156104d457600080fd5b506104ef60048036038101906104ea91906120de565b611c14565b6040516104fc91906127f3565b60405180910390f35b6000600f6000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60606006805461057c90612df3565b80601f01602080910402602001604051908101604052809291908181526020018280546105a890612df3565b80156105f55780601f106105ca576101008083540402835291602001916105f5565b820191906000526020600020905b8154815290600101906020018083116105d857829003601f168201915b5050505050905090565b600061060a82611ca8565b610649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106409061294b565b60405180910390fd5b6001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061068f8261154c565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806107515750600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107879061288b565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4826001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600380549050905090565b600061085a8261154c565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806108f457503373ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806109855750600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb9061288b565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a299061284b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a999061286b565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610b9e90612dc9565b91905055506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610bf290612e25565b9190505550600073ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c95576001600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6000600a60008481526020019081526020016000205490506001600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610cfc9190612cc8565b8114610ef157600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610d909190612cc8565b81548110610dc7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610e49577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555080600a6000600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110610ed3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001548152602001908152602001600020819055505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480610f66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60019003818190600052602060002001600090559055600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600a600085815260200190815260200160002081905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208390806001815401808255809150506001900390600052602060002001600090919091909150555050505050565b61104c8161154c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b09061284b565b60405180910390fd5b60006110c482611d14565b90506000600180836110d69190612a3f565b60026110e29190612b50565b6110ec9190612cc8565b905060008060038054905090505b828111801561111b5750600560008681526020019081526020016000205481115b1561114357600c548261112e9190612a3f565b9150808061113b90612dc9565b9150506110fa565b506003805490506005600086815260200190815260200160002081905550837f56ca301a9219608c91e7bcee90e083c19671d2cdcc96752c7af291cee5f9c8c882604051611191919061296b565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111df573d6000803e3d6000fd5b5050505050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548210611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f9061290b565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106112df577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b61130d8383836040518060200160405280600081525061184a565b505050565b600060016003805490506113269190612a3f565b9050600061133382611d14565b9050600081600e546113459190612b50565b600d546113529190612acc565b9050600d8211156113855760016140008461136d9190612cc8565b6113779190612a3f565b816113829190612acc565b90505b6000600c5460018460026113999190612b50565b6113a39190612cc8565b6113ad9190612c6e565b905060003360036002876113c19190612cc8565b815481106113f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015487604051602001611416939291906126ff565b604051602081830303815290604052805190602001209050828160001c10611473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146a9061292b565b60405180910390fd5b8134146114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac906128eb565b60405180910390fd5b6114e78582426040516020016114cc92919061273c565b60405160208183030381529060405280519060200120611d56565b505050505050565b60006003805490508210611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f9061290b565b60405180910390fd5b6001826115459190612a3f565b9050919050565b600061155782611ca8565b611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d9061294b565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061162482611ca8565b611663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165a9061294b565b60405180910390fd5b60036001836116729190612cc8565b815481106116a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b6060600780546116ca90612df3565b80601f01602080910402602001604051908101604052809291908181526020018280546116f690612df3565b80156117435780601f1061171857610100808354040283529160200191611743565b820191906000526020600020905b81548152906001019060200180831161172657829003601f168201915b5050505050905090565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117aa91906127f3565b60405180910390a380600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61185584848461084f565b6000833b905060008163ffffffff1611156119a15760008490507f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b81526004016118ee94939291906127a7565b602060405180830381600087803b15801561190857600080fd5b505af115801561191c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194091906122ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461199f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611996906128cb565b60405180910390fd5b505b5050505050565b60606119b382611ca8565b6119f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e9906128ab565b60405180910390fd5b6000829050600081905060005b60008214611a29578080611a1290612e25565b915050600a82611a229190612acc565b91506119ff565b60008167ffffffffffffffff811115611a6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611a9d5781602001600182028036833780820191505090505b50905060008290505b60008514611b7757600181611abb9190612cc8565b90506000600a8087611acd9190612acc565b611ad79190612c6e565b86611ae29190612cc8565b6030611aee9190612a95565b905060008160f81b905080848481518110611b32577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a87611b6e9190612acc565b96505050611aa6565b600882604051602001611b8b929190612768565b60405160208183030381529060405295505050505050919050565b60005b82829050811015611c0f57611bfc838383818110611bf0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135611043565b8080611c0790612e25565b915050611ba9565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60005b6000821115611d4257600282611d2d9190612acc565b91508080611d3a90612e25565b915050611d17565b600181611d4f9190612cc8565b9050919050565b336004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611df790612e25565b9190505550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600a600084815260200190815260200160002081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190915055600380549050600b6000848152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190915055817f5570ed3da2dab8635dcc918badc12e05d60cbc9185347ef0065ab7335568cdae82604051611f32919061280e565b60405180910390a2813373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000611fad611fa8846129b7565b612986565b905082815260208101848484011115611fc557600080fd5b611fd0848285612d87565b509392505050565b600081359050611fe781612f8d565b92915050565b60008083601f840112611fff57600080fd5b8235905067ffffffffffffffff81111561201857600080fd5b60208301915083602082028301111561203057600080fd5b9250929050565b60008135905061204681612fa4565b92915050565b60008135905061205b81612fbb565b92915050565b60008151905061207081612fbb565b92915050565b600082601f83011261208757600080fd5b8135612097848260208601611f9a565b91505092915050565b6000813590506120af81612fd2565b92915050565b6000602082840312156120c757600080fd5b60006120d584828501611fd8565b91505092915050565b600080604083850312156120f157600080fd5b60006120ff85828601611fd8565b925050602061211085828601611fd8565b9150509250929050565b60008060006060848603121561212f57600080fd5b600061213d86828701611fd8565b935050602061214e86828701611fd8565b925050604061215f868287016120a0565b9150509250925092565b6000806000806080858703121561217f57600080fd5b600061218d87828801611fd8565b945050602061219e87828801611fd8565b93505060406121af878288016120a0565b925050606085013567ffffffffffffffff8111156121cc57600080fd5b6121d887828801612076565b91505092959194509250565b600080604083850312156121f757600080fd5b600061220585828601611fd8565b925050602061221685828601612037565b9150509250929050565b6000806040838503121561223357600080fd5b600061224185828601611fd8565b9250506020612252858286016120a0565b9150509250929050565b6000806020838503121561226f57600080fd5b600083013567ffffffffffffffff81111561228957600080fd5b61229585828601611fed565b92509250509250929050565b6000602082840312156122b357600080fd5b60006122c18482850161204c565b91505092915050565b6000602082840312156122dc57600080fd5b60006122ea84828501612061565b91505092915050565b60006020828403121561230557600080fd5b6000612313848285016120a0565b91505092915050565b61232581612cfc565b82525050565b61233c61233782612cfc565b612e6e565b82525050565b61234b81612d0e565b82525050565b61235a81612d1a565b82525050565b61237161236c82612d1a565b612e80565b82525050565b6000612382826129fc565b61238c8185612a12565b935061239c818560208601612d96565b6123a581612f62565b840191505092915050565b60006123bb826129fc565b6123c58185612a23565b93506123d5818560208601612d96565b80840191505092915050565b600081546123ee81612df3565b6123f88186612a23565b94506001821660008114612413576001811461242457612457565b60ff19831686528186019350612457565b61242d856129e7565b60005b8381101561244f57815481890152600182019150602081019050612430565b838801955050505b50505092915050565b600061246b82612a07565b6124758185612a2e565b9350612485818560208601612d96565b61248e81612f62565b840191505092915050565b60006124a6600583612a2e565b91507f6f776e65720000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006124e6600483612a2e565b91507f7a65726f000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612526600a83612a2e565b91507f7065726d697373696f6e000000000000000000000000000000000000000000006000830152602082019050919050565b6000612566600783612a2e565b91507f746f6b656e4964000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006125a6600883612a2e565b91507f72656365697665720000000000000000000000000000000000000000000000006000830152602082019050919050565b60006125e6600483612a2e565b91507f636f7374000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612626600583612a2e565b91507f696e6465780000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612666600a83612a2e565b91507f646966666963756c7479000000000000000000000000000000000000000000006000830152602082019050919050565b60006126a6600783612a2e565b91507f696e76616c6964000000000000000000000000000000000000000000000000006000830152602082019050919050565b6126e281612d70565b82525050565b6126f96126f482612d70565b612e9c565b82525050565b600061270b828661232b565b60148201915061271b8285612360565b60208201915061272b82846126e8565b602082019150819050949350505050565b60006127488285612360565b60208201915061275882846126e8565b6020820191508190509392505050565b600061277482856123e1565b915061278082846123b0565b91508190509392505050565b60006020820190506127a1600083018461231c565b92915050565b60006080820190506127bc600083018761231c565b6127c9602083018661231c565b6127d660408301856126d9565b81810360608301526127e88184612377565b905095945050505050565b60006020820190506128086000830184612342565b92915050565b60006020820190506128236000830184612351565b92915050565b600060208201905081810360008301526128438184612460565b905092915050565b6000602082019050818103600083015261286481612499565b9050919050565b60006020820190508181036000830152612884816124d9565b9050919050565b600060208201905081810360008301526128a481612519565b9050919050565b600060208201905081810360008301526128c481612559565b9050919050565b600060208201905081810360008301526128e481612599565b9050919050565b60006020820190508181036000830152612904816125d9565b9050919050565b6000602082019050818103600083015261292481612619565b9050919050565b6000602082019050818103600083015261294481612659565b9050919050565b6000602082019050818103600083015261296481612699565b9050919050565b600060208201905061298060008301846126d9565b92915050565b6000604051905081810181811067ffffffffffffffff821117156129ad576129ac612f33565b5b8060405250919050565b600067ffffffffffffffff8211156129d2576129d1612f33565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612a4a82612d70565b9150612a5583612d70565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a8a57612a89612ea6565b5b828201905092915050565b6000612aa082612d7a565b9150612aab83612d7a565b92508260ff03821115612ac157612ac0612ea6565b5b828201905092915050565b6000612ad782612d70565b9150612ae283612d70565b925082612af257612af1612ed5565b5b828204905092915050565b6000808291508390505b6001851115612b4757808604811115612b2357612b22612ea6565b5b6001851615612b325780820291505b8081029050612b4085612f80565b9450612b07565b94509492505050565b6000612b5b82612d70565b9150612b6683612d70565b9250612b937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b9b565b905092915050565b600082612bab5760019050612c67565b81612bb95760009050612c67565b8160018114612bcf5760028114612bd957612c08565b6001915050612c67565b60ff841115612beb57612bea612ea6565b5b8360020a915084821115612c0257612c01612ea6565b5b50612c67565b5060208310610133831016604e8410600b8410161715612c3d5782820a905083811115612c3857612c37612ea6565b5b612c67565b612c4a8484846001612afd565b92509050818404811115612c6157612c60612ea6565b5b81810290505b9392505050565b6000612c7982612d70565b9150612c8483612d70565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612cbd57612cbc612ea6565b5b828202905092915050565b6000612cd382612d70565b9150612cde83612d70565b925082821015612cf157612cf0612ea6565b5b828203905092915050565b6000612d0782612d50565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612db4578082015181840152602081019050612d99565b83811115612dc3576000848401525b50505050565b6000612dd482612d70565b91506000821415612de857612de7612ea6565b5b600182039050919050565b60006002820490506001821680612e0b57607f821691505b60208210811415612e1f57612e1e612f04565b5b50919050565b6000612e3082612d70565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e6357612e62612ea6565b5b600182019050919050565b6000612e7982612e8a565b9050919050565b6000819050919050565b6000612e9582612f73565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160011c9050919050565b612f9681612cfc565b8114612fa157600080fd5b50565b612fad81612d0e565b8114612fb857600080fd5b50565b612fc481612d24565b8114612fcf57600080fd5b50565b612fdb81612d70565b8114612fe657600080fd5b5056fea2646970667358221220ca0710f04cb88946a99fdfebe9cd1de12fdc8a2cc381e4b7edf828cdd0e45eb164736f6c6343000800003368747470733a2f2f7777772e706f776e66746d657461646174612e636f6d2f642f

Deployed Bytecode

0x60806040526004361061011f5760003560e01c80634f6ccce7116100a0578063a22cb46511610064578063a22cb46514610410578063b88d4fde14610439578063c87b56dd14610462578063e5b791061461049f578063e985e9c5146104c85761011f565b80634f6ccce7146102f15780636352211e1461032e57806370a082311461036b5780637e551b75146103a857806395d89b41146103e55761011f565b806323b872dd116100e757806323b872dd1461021d5780632e1a7d4d146102465780632f745c591461026f57806342842e0e146102ac5780634d474898146102d55761011f565b806301ffc9a71461012457806306fdde0314610161578063081812fc1461018c578063095ea7b3146101c957806318160ddd146101f2575b600080fd5b34801561013057600080fd5b5061014b600480360381019061014691906122a1565b610505565b60405161015891906127f3565b60405180910390f35b34801561016d57600080fd5b5061017661056d565b6040516101839190612829565b60405180910390f35b34801561019857600080fd5b506101b360048036038101906101ae91906122f3565b6105ff565b6040516101c0919061278c565b60405180910390f35b3480156101d557600080fd5b506101f060048036038101906101eb9190612220565b610684565b005b3480156101fe57600080fd5b50610207610842565b604051610214919061296b565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f919061211a565b61084f565b005b34801561025257600080fd5b5061026d600480360381019061026891906122f3565b611043565b005b34801561027b57600080fd5b5061029660048036038101906102919190612220565b6111e6565b6040516102a3919061296b565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce919061211a565b6112f2565b005b6102ef60048036038101906102ea91906122f3565b611312565b005b3480156102fd57600080fd5b50610318600480360381019061031391906122f3565b6114ef565b604051610325919061296b565b60405180910390f35b34801561033a57600080fd5b50610355600480360381019061035091906122f3565b61154c565b604051610362919061278c565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d91906120b5565b6115d1565b60405161039f919061296b565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca91906122f3565b611619565b6040516103dc919061280e565b60405180910390f35b3480156103f157600080fd5b506103fa6116bb565b6040516104079190612829565b60405180910390f35b34801561041c57600080fd5b50610437600480360381019061043291906121e4565b61174d565b005b34801561044557600080fd5b50610460600480360381019061045b9190612169565b61184a565b005b34801561046e57600080fd5b50610489600480360381019061048491906122f3565b6119a8565b6040516104969190612829565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c1919061225c565b611ba6565b005b3480156104d457600080fd5b506104ef60048036038101906104ea91906120de565b611c14565b6040516104fc91906127f3565b60405180910390f35b6000600f6000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60606006805461057c90612df3565b80601f01602080910402602001604051908101604052809291908181526020018280546105a890612df3565b80156105f55780601f106105ca576101008083540402835291602001916105f5565b820191906000526020600020905b8154815290600101906020018083116105d857829003601f168201915b5050505050905090565b600061060a82611ca8565b610649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106409061294b565b60405180910390fd5b6001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061068f8261154c565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806107515750600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107879061288b565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4826001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600380549050905090565b600061085a8261154c565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806108f457503373ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806109855750600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb9061288b565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a299061284b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a999061286b565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610b9e90612dc9565b91905055506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610bf290612e25565b9190505550600073ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c95576001600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6000600a60008481526020019081526020016000205490506001600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610cfc9190612cc8565b8114610ef157600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610d909190612cc8565b81548110610dc7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610e49577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555080600a6000600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110610ed3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001548152602001908152602001600020819055505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480610f66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60019003818190600052602060002001600090559055600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600a600085815260200190815260200160002081905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208390806001815401808255809150506001900390600052602060002001600090919091909150555050505050565b61104c8161154c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b09061284b565b60405180910390fd5b60006110c482611d14565b90506000600180836110d69190612a3f565b60026110e29190612b50565b6110ec9190612cc8565b905060008060038054905090505b828111801561111b5750600560008681526020019081526020016000205481115b1561114357600c548261112e9190612a3f565b9150808061113b90612dc9565b9150506110fa565b506003805490506005600086815260200190815260200160002081905550837f56ca301a9219608c91e7bcee90e083c19671d2cdcc96752c7af291cee5f9c8c882604051611191919061296b565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111df573d6000803e3d6000fd5b5050505050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548210611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f9061290b565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106112df577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b61130d8383836040518060200160405280600081525061184a565b505050565b600060016003805490506113269190612a3f565b9050600061133382611d14565b9050600081600e546113459190612b50565b600d546113529190612acc565b9050600d8211156113855760016140008461136d9190612cc8565b6113779190612a3f565b816113829190612acc565b90505b6000600c5460018460026113999190612b50565b6113a39190612cc8565b6113ad9190612c6e565b905060003360036002876113c19190612cc8565b815481106113f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015487604051602001611416939291906126ff565b604051602081830303815290604052805190602001209050828160001c10611473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146a9061292b565b60405180910390fd5b8134146114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac906128eb565b60405180910390fd5b6114e78582426040516020016114cc92919061273c565b60405160208183030381529060405280519060200120611d56565b505050505050565b60006003805490508210611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f9061290b565b60405180910390fd5b6001826115459190612a3f565b9050919050565b600061155782611ca8565b611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d9061294b565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061162482611ca8565b611663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165a9061294b565b60405180910390fd5b60036001836116729190612cc8565b815481106116a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b6060600780546116ca90612df3565b80601f01602080910402602001604051908101604052809291908181526020018280546116f690612df3565b80156117435780601f1061171857610100808354040283529160200191611743565b820191906000526020600020905b81548152906001019060200180831161172657829003601f168201915b5050505050905090565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117aa91906127f3565b60405180910390a380600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61185584848461084f565b6000833b905060008163ffffffff1611156119a15760008490507f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b81526004016118ee94939291906127a7565b602060405180830381600087803b15801561190857600080fd5b505af115801561191c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194091906122ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461199f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611996906128cb565b60405180910390fd5b505b5050505050565b60606119b382611ca8565b6119f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e9906128ab565b60405180910390fd5b6000829050600081905060005b60008214611a29578080611a1290612e25565b915050600a82611a229190612acc565b91506119ff565b60008167ffffffffffffffff811115611a6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611a9d5781602001600182028036833780820191505090505b50905060008290505b60008514611b7757600181611abb9190612cc8565b90506000600a8087611acd9190612acc565b611ad79190612c6e565b86611ae29190612cc8565b6030611aee9190612a95565b905060008160f81b905080848481518110611b32577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a87611b6e9190612acc565b96505050611aa6565b600882604051602001611b8b929190612768565b60405160208183030381529060405295505050505050919050565b60005b82829050811015611c0f57611bfc838383818110611bf0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135611043565b8080611c0790612e25565b915050611ba9565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60005b6000821115611d4257600282611d2d9190612acc565b91508080611d3a90612e25565b915050611d17565b600181611d4f9190612cc8565b9050919050565b336004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611df790612e25565b9190505550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600a600084815260200190815260200160002081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190915055600380549050600b6000848152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190915055817f5570ed3da2dab8635dcc918badc12e05d60cbc9185347ef0065ab7335568cdae82604051611f32919061280e565b60405180910390a2813373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000611fad611fa8846129b7565b612986565b905082815260208101848484011115611fc557600080fd5b611fd0848285612d87565b509392505050565b600081359050611fe781612f8d565b92915050565b60008083601f840112611fff57600080fd5b8235905067ffffffffffffffff81111561201857600080fd5b60208301915083602082028301111561203057600080fd5b9250929050565b60008135905061204681612fa4565b92915050565b60008135905061205b81612fbb565b92915050565b60008151905061207081612fbb565b92915050565b600082601f83011261208757600080fd5b8135612097848260208601611f9a565b91505092915050565b6000813590506120af81612fd2565b92915050565b6000602082840312156120c757600080fd5b60006120d584828501611fd8565b91505092915050565b600080604083850312156120f157600080fd5b60006120ff85828601611fd8565b925050602061211085828601611fd8565b9150509250929050565b60008060006060848603121561212f57600080fd5b600061213d86828701611fd8565b935050602061214e86828701611fd8565b925050604061215f868287016120a0565b9150509250925092565b6000806000806080858703121561217f57600080fd5b600061218d87828801611fd8565b945050602061219e87828801611fd8565b93505060406121af878288016120a0565b925050606085013567ffffffffffffffff8111156121cc57600080fd5b6121d887828801612076565b91505092959194509250565b600080604083850312156121f757600080fd5b600061220585828601611fd8565b925050602061221685828601612037565b9150509250929050565b6000806040838503121561223357600080fd5b600061224185828601611fd8565b9250506020612252858286016120a0565b9150509250929050565b6000806020838503121561226f57600080fd5b600083013567ffffffffffffffff81111561228957600080fd5b61229585828601611fed565b92509250509250929050565b6000602082840312156122b357600080fd5b60006122c18482850161204c565b91505092915050565b6000602082840312156122dc57600080fd5b60006122ea84828501612061565b91505092915050565b60006020828403121561230557600080fd5b6000612313848285016120a0565b91505092915050565b61232581612cfc565b82525050565b61233c61233782612cfc565b612e6e565b82525050565b61234b81612d0e565b82525050565b61235a81612d1a565b82525050565b61237161236c82612d1a565b612e80565b82525050565b6000612382826129fc565b61238c8185612a12565b935061239c818560208601612d96565b6123a581612f62565b840191505092915050565b60006123bb826129fc565b6123c58185612a23565b93506123d5818560208601612d96565b80840191505092915050565b600081546123ee81612df3565b6123f88186612a23565b94506001821660008114612413576001811461242457612457565b60ff19831686528186019350612457565b61242d856129e7565b60005b8381101561244f57815481890152600182019150602081019050612430565b838801955050505b50505092915050565b600061246b82612a07565b6124758185612a2e565b9350612485818560208601612d96565b61248e81612f62565b840191505092915050565b60006124a6600583612a2e565b91507f6f776e65720000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006124e6600483612a2e565b91507f7a65726f000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612526600a83612a2e565b91507f7065726d697373696f6e000000000000000000000000000000000000000000006000830152602082019050919050565b6000612566600783612a2e565b91507f746f6b656e4964000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006125a6600883612a2e565b91507f72656365697665720000000000000000000000000000000000000000000000006000830152602082019050919050565b60006125e6600483612a2e565b91507f636f7374000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612626600583612a2e565b91507f696e6465780000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612666600a83612a2e565b91507f646966666963756c7479000000000000000000000000000000000000000000006000830152602082019050919050565b60006126a6600783612a2e565b91507f696e76616c6964000000000000000000000000000000000000000000000000006000830152602082019050919050565b6126e281612d70565b82525050565b6126f96126f482612d70565b612e9c565b82525050565b600061270b828661232b565b60148201915061271b8285612360565b60208201915061272b82846126e8565b602082019150819050949350505050565b60006127488285612360565b60208201915061275882846126e8565b6020820191508190509392505050565b600061277482856123e1565b915061278082846123b0565b91508190509392505050565b60006020820190506127a1600083018461231c565b92915050565b60006080820190506127bc600083018761231c565b6127c9602083018661231c565b6127d660408301856126d9565b81810360608301526127e88184612377565b905095945050505050565b60006020820190506128086000830184612342565b92915050565b60006020820190506128236000830184612351565b92915050565b600060208201905081810360008301526128438184612460565b905092915050565b6000602082019050818103600083015261286481612499565b9050919050565b60006020820190508181036000830152612884816124d9565b9050919050565b600060208201905081810360008301526128a481612519565b9050919050565b600060208201905081810360008301526128c481612559565b9050919050565b600060208201905081810360008301526128e481612599565b9050919050565b60006020820190508181036000830152612904816125d9565b9050919050565b6000602082019050818103600083015261292481612619565b9050919050565b6000602082019050818103600083015261294481612659565b9050919050565b6000602082019050818103600083015261296481612699565b9050919050565b600060208201905061298060008301846126d9565b92915050565b6000604051905081810181811067ffffffffffffffff821117156129ad576129ac612f33565b5b8060405250919050565b600067ffffffffffffffff8211156129d2576129d1612f33565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612a4a82612d70565b9150612a5583612d70565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a8a57612a89612ea6565b5b828201905092915050565b6000612aa082612d7a565b9150612aab83612d7a565b92508260ff03821115612ac157612ac0612ea6565b5b828201905092915050565b6000612ad782612d70565b9150612ae283612d70565b925082612af257612af1612ed5565b5b828204905092915050565b6000808291508390505b6001851115612b4757808604811115612b2357612b22612ea6565b5b6001851615612b325780820291505b8081029050612b4085612f80565b9450612b07565b94509492505050565b6000612b5b82612d70565b9150612b6683612d70565b9250612b937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b9b565b905092915050565b600082612bab5760019050612c67565b81612bb95760009050612c67565b8160018114612bcf5760028114612bd957612c08565b6001915050612c67565b60ff841115612beb57612bea612ea6565b5b8360020a915084821115612c0257612c01612ea6565b5b50612c67565b5060208310610133831016604e8410600b8410161715612c3d5782820a905083811115612c3857612c37612ea6565b5b612c67565b612c4a8484846001612afd565b92509050818404811115612c6157612c60612ea6565b5b81810290505b9392505050565b6000612c7982612d70565b9150612c8483612d70565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612cbd57612cbc612ea6565b5b828202905092915050565b6000612cd382612d70565b9150612cde83612d70565b925082821015612cf157612cf0612ea6565b5b828203905092915050565b6000612d0782612d50565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612db4578082015181840152602081019050612d99565b83811115612dc3576000848401525b50505050565b6000612dd482612d70565b91506000821415612de857612de7612ea6565b5b600182039050919050565b60006002820490506001821680612e0b57607f821691505b60208210811415612e1f57612e1e612f04565b5b50919050565b6000612e3082612d70565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e6357612e62612ea6565b5b600182019050919050565b6000612e7982612e8a565b9050919050565b6000819050919050565b6000612e9582612f73565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160011c9050919050565b612f9681612cfc565b8114612fa157600080fd5b50565b612fad81612d0e565b8114612fb857600080fd5b50565b612fc481612d24565b8114612fcf57600080fd5b50565b612fdb81612d70565b8114612fe657600080fd5b5056fea2646970667358221220ca0710f04cb88946a99fdfebe9cd1de12fdc8a2cc381e4b7edf828cdd0e45eb164736f6c63430008000033

Deployed Bytecode Sourcemap

105:9476:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9427:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8590:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4910:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4494:408;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8825:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5449:1698;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2317:496;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9088:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7734:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2995:639;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8926:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4327:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4211:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2152:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8689:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5241:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7155:571;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7910:668;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2819:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5086:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9427:133;9497:4;9520:19;:32;9540:11;9520:32;;;;;;;;;;;;;;;;;;;;;;;;;;;9513:39;;9427:133;;;:::o;8590:91::-;8629:19;8667:6;8660:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8590:91;:::o;4910:168::-;4972:7;5000:22;5013:8;5000:12;:22::i;:::-;4992:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;5051:9;:19;5061:8;5051:19;;;;;;;;;;;;;;;;;;;;;5044:26;;4910:168;;;:::o;4494:408::-;4568:13;4584:17;4592:8;4584:7;:17::i;:::-;4568:33;;4630:10;4621:19;;:5;:19;;;:112;;;;4704:10;:17;4715:5;4704:17;;;;;;;;;;;;;;;:29;4722:10;4704:29;;;;;;;;;;;;;;;;;;;;;;;;;4621:112;4612:188;;;;;;;;;;;;:::i;:::-;;;;;;;;;4843:8;4832:9;4816:36;;4825:5;4816:36;;;;;;;;;;;;4885:9;4863;:19;4873:8;4863:19;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;4494:408;;;:::o;8825:93::-;8871:7;8897:6;:13;;;;8890:20;;8825:93;:::o;5449:1698::-;5621:13;5637:17;5645:8;5637:7;:17::i;:::-;5621:33;;5686:10;5677:19;;:5;:19;;;:200;;;;5867:10;5844:33;;:9;:19;5854:8;5844:19;;;;;;;;;;;;;;;;;;;;;:33;;;5677:200;:283;;;;5931:10;:17;5942:5;5931:17;;;;;;;;;;;;;;;:29;5949:10;5931:29;;;;;;;;;;;;;;;;;;;;;;;;;5677:283;5667:351;;;;;;;;;;;;:::i;:::-;;;;;;;;;6046:5;6037:14;;:5;:14;;;6029:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;6094:1;6079:17;;:3;:17;;;;6071:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;6143:8;6138:3;6122:30;;6131:5;6122:30;;;;;;;;;;;;6185:3;6167:6;:16;6174:8;6167:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;6201:8;:15;6210:5;6201:15;;;;;;;;;;;;;;;;:17;;;;;;;;;:::i;:::-;;;;;;6229:8;:13;6238:3;6229:13;;;;;;;;;;;;;;;;:15;;;;;;;;;:::i;:::-;;;;;;6333:1;6302:33;;:9;:19;6312:8;6302:19;;;;;;;;;;;;;;;;;;;;;:33;;;6299:90;;6358:9;:19;6368:8;6358:19;;;;;;;;;;;;6351:26;;;;;;;;;;;6299:90;6433:13;6449:17;:27;6467:8;6449:27;;;;;;;;;;;;6433:43;;6600:1;6566:17;:24;6584:5;6566:24;;;;;;;;;;;;;;;:31;;;;:35;;;;:::i;:::-;6554:8;:47;6551:380;;6704:17;:24;6722:5;6704:24;;;;;;;;;;;;;;;6763:1;6729:17;:24;6747:5;6729:24;;;;;;;;;;;;;;;:31;;;;:35;;;;:::i;:::-;6704:61;;;;;;;;;;;;;;;;;;;;;;;;6667:17;:24;6685:5;6667:24;;;;;;;;;;;;;;;6692:8;6667:34;;;;;;;;;;;;;;;;;;;;;;;:98;;;;6911:8;6855:17;:53;6873:17;:24;6891:5;6873:24;;;;;;;;;;;;;;;6898:8;6873:34;;;;;;;;;;;;;;;;;;;;;;;;6855:53;;;;;;;;;;;:64;;;;6551:380;6987:17;:24;7005:5;6987:24;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7060:17;:22;7078:3;7060:22;;;;;;;;;;;;;;;:29;;;;7030:17;:27;7048:8;7030:27;;;;;;;;;;;:59;;;;7100:17;:22;7118:3;7100:22;;;;;;;;;;;;;;;7128:8;7100:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5449:1698;;;;;:::o;2317:496::-;2389:17;2397:8;2389:7;:17::i;:::-;2375:31;;:10;:31;;;2367:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;2428:15;2446:22;2459:8;2446:12;:22::i;:::-;2428:40;;2483:9;2513:1;2510;2499:10;:12;;;;:::i;:::-;2495:1;:17;;;;:::i;:::-;:19;;;;:::i;:::-;2483:31;;2525:11;2555:6;2564;:13;;;;2555:22;;2551:117;2583:4;2579:1;:8;:37;;;;;2595:11;:21;2607:8;2595:21;;;;;;;;;;;;2591:1;:25;2579:37;2551:117;;;2647:9;;2637:19;;;;;:::i;:::-;;;2618:3;;;;;:::i;:::-;;;;2551:117;;;;2702:6;:13;;;;2678:11;:21;2690:8;2678:21;;;;;;;;;;;:37;;;;2740:8;2731:25;2749:6;2731:25;;;;;;:::i;:::-;;;;;;;;2775:10;2767:28;;:36;2796:6;2767:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2317:496;;;;:::o;9088:204::-;9172:7;9208:8;:16;9217:6;9208:16;;;;;;;;;;;;;;;;9199:6;:25;9191:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;9251:17;:25;9269:6;9251:25;;;;;;;;;;;;;;;9277:6;9251:33;;;;;;;;;;;;;;;;;;;;;;;;9244:40;;9088:204;;;;:::o;7734:139::-;7826:39;7843:5;7849:3;7853:8;7826:39;;;;;;;;;;;;:16;:39::i;:::-;7734:139;;;:::o;2995:639::-;3048:12;3079:1;3063:6;:13;;;;:17;;;;:::i;:::-;3048:32;;3091:15;3109:21;3122:7;3109:12;:21::i;:::-;3091:39;;3143:15;3197:10;3180:15;;:27;;;;:::i;:::-;3161:15;;:47;;;;:::i;:::-;3143:65;;3235:2;3222:10;:15;3219:81;;;3286:1;3278:5;3268:7;:15;;;;:::i;:::-;:19;;;;:::i;:::-;3253:35;;;;;:::i;:::-;;;3219:81;3314:9;3347;;3343:1;3330:10;3327:1;:13;;;;:::i;:::-;:17;;;;:::i;:::-;3326:30;;;;:::i;:::-;3314:42;;3371:12;3413:10;3424:6;3439:1;3431:7;:9;;;;:::i;:::-;3424:17;;;;;;;;;;;;;;;;;;;;;;;;3442:5;3396:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3386:63;;;;;;3371:78;;3483:10;3475:4;3470:10;;:23;3462:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;3538:4;3526:9;:16;3518:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;3563:63;3568:7;3603:4;3608:15;3586:38;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3576:49;;;;;;3563:4;:63::i;:::-;2995:639;;;;;;:::o;8926:154::-;8986:7;9022:6;:13;;;;9013:6;:22;9005:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;9071:1;9062:6;:10;;;;:::i;:::-;9055:17;;8926:154;;;:::o;4327:157::-;4382:7;4409:22;4422:8;4409:12;:22::i;:::-;4401:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;4460:6;:16;4467:8;4460:16;;;;;;;;;;;;;;;;;;;;;4453:23;;4327:157;;;:::o;4211:108::-;4269:7;4295:8;:16;4304:6;4295:16;;;;;;;;;;;;;;;;4288:23;;4211:108;;;:::o;2152:157::-;2203:7;2230:22;2243:8;2230:12;:22::i;:::-;2222:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;2281:6;2299:1;2288:8;:12;;;;:::i;:::-;2281:20;;;;;;;;;;;;;;;;;;;;;;;;2274:27;;2152:157;;;:::o;8689:97::-;8730:21;8770:8;8763:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8689:97;:::o;5241:198::-;5354:9;5328:47;;5343:10;5328:47;;;5365:9;5328:47;;;;;;:::i;:::-;;;;;;;;5422:9;5386:10;:22;5397:10;5386:22;;;;;;;;;;;;;;;:33;5409:9;5386:33;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;5241:198;;:::o;7155:571::-;7264:34;7277:5;7284:3;7289:8;7264:12;:34::i;:::-;7368:11;7434:3;7422:16;7414:24;;7469:1;7462:4;:8;;;7459:258;;;7486:28;7537:3;7486:55;;7632:60;7564:129;;;:8;:25;;;7590:10;7601:5;7607:8;7616:4;7564:57;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:129;;;;7556:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;7459:258;;7155:571;;;;;:::o;7910:668::-;7967:13;8046:22;8059:8;8046:12;:22::i;:::-;8038:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;8092:7;8102:8;8092:18;;8121:6;8130:2;8121:11;;8143:8;8162:69;8174:1;8169;:6;8162:69;;8192:5;;;;;:::i;:::-;;;;8217:2;8212:7;;;;;:::i;:::-;;;8162:69;;;8241:17;8271:3;8261:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8241:34;;8286:6;8295:3;8286:12;;8309:198;8322:1;8316:2;:7;8309:198;;8346:1;8344;:3;;;;:::i;:::-;8340:7;;8362:10;8402:2;8397;8392;:7;;;;:::i;:::-;:12;;;;:::i;:::-;8387:2;:17;;;;:::i;:::-;8376:2;:29;;;;:::i;:::-;8362:44;;8421:9;8440:4;8433:12;;8421:24;;8470:2;8460:4;8465:1;8460:7;;;;;;;;;;;;;;;;;;;:12;;;;;;;;;;;8493:2;8487:8;;;;;:::i;:::-;;;8309:198;;;;;8552:9;8562:4;8535:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8521:47;;;;;;;7910:668;;;:::o;2819:168::-;2893:6;2889:91;2909:9;;:16;;2905:1;:20;2889:91;;;2946:22;2955:9;;2965:1;2955:12;;;;;;;;;;;;;;;;;;;;;2946:8;:22::i;:::-;2927:3;;;;;:::i;:::-;;;;2889:91;;;;2819:168;;:::o;5086:145::-;5170:4;5194:10;:18;5205:6;5194:18;;;;;;;;;;;;;;;:29;5213:9;5194:29;;;;;;;;;;;;;;;;;;;;;;;;;5187:36;;5086:145;;;;:::o;4080:123::-;4142:4;4193:1;4165:30;;:6;:16;4172:8;4165:16;;;;;;;;;;;;;;;;;;;;;:30;;;;4158:37;;4080:123;;;:::o;1935:211::-;1993:15;2020:87;2051:1;2040:8;:12;2020:87;;;2094:1;2082:13;;;;;:::i;:::-;;;2054:12;;;;;:::i;:::-;;;;2020:87;;;2137:1;2124:10;:14;;;;:::i;:::-;2117:21;;1935:211;;;:::o;3642:428::-;3720:10;3702:6;:15;3709:7;3702:15;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;3741:8;:20;3750:10;3741:20;;;;;;;;;;;;;;;;:22;;;;;;;;;:::i;:::-;;;;;;3803:17;:29;3821:10;3803:29;;;;;;;;;;;;;;;:36;;;;3774:17;:26;3792:7;3774:26;;;;;;;;;;;:65;;;;3850:17;:29;3868:10;3850:29;;;;;;;;;;;;;;;3885:7;3850:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3929:6;:13;;;;3906:11;:20;3918:7;3906:20;;;;;;;;;;;:36;;;;3953:6;3965:4;3953:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3994:7;3988:19;4002:4;3988:19;;;;;;:::i;:::-;;;;;;;;4054:7;4043:10;4023:39;;4040:1;4023:39;;;;;;;;;;;;3642:428;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:139::-;;439:6;426:20;417:29;;455:33;482:5;455:33;:::i;:::-;407:87;;;;:::o;517:367::-;;;650:3;643:4;635:6;631:17;627:27;617:2;;668:1;665;658:12;617:2;704:6;691:20;681:30;;734:18;726:6;723:30;720:2;;;766:1;763;756:12;720:2;803:4;795:6;791:17;779:29;;857:3;849:4;841:6;837:17;827:8;823:32;820:41;817:2;;;874:1;871;864:12;817:2;607:277;;;;;:::o;890:133::-;;971:6;958:20;949:29;;987:30;1011:5;987:30;:::i;:::-;939:84;;;;:::o;1029:137::-;;1112:6;1099:20;1090:29;;1128:32;1154:5;1128:32;:::i;:::-;1080:86;;;;:::o;1172:141::-;;1259:6;1253:13;1244:22;;1275:32;1301:5;1275:32;:::i;:::-;1234:79;;;;:::o;1332:271::-;;1436:3;1429:4;1421:6;1417:17;1413:27;1403:2;;1454:1;1451;1444:12;1403:2;1494:6;1481:20;1519:78;1593:3;1585:6;1578:4;1570:6;1566:17;1519:78;:::i;:::-;1510:87;;1393:210;;;;;:::o;1609:139::-;;1693:6;1680:20;1671:29;;1709:33;1736:5;1709:33;:::i;:::-;1661:87;;;;:::o;1754:262::-;;1862:2;1850:9;1841:7;1837:23;1833:32;1830:2;;;1878:1;1875;1868:12;1830:2;1921:1;1946:53;1991:7;1982:6;1971:9;1967:22;1946:53;:::i;:::-;1936:63;;1892:117;1820:196;;;;:::o;2022:407::-;;;2147:2;2135:9;2126:7;2122:23;2118:32;2115:2;;;2163:1;2160;2153:12;2115:2;2206:1;2231:53;2276:7;2267:6;2256:9;2252:22;2231:53;:::i;:::-;2221:63;;2177:117;2333:2;2359:53;2404:7;2395:6;2384:9;2380:22;2359:53;:::i;:::-;2349:63;;2304:118;2105:324;;;;;:::o;2435:552::-;;;;2577:2;2565:9;2556:7;2552:23;2548:32;2545:2;;;2593:1;2590;2583:12;2545:2;2636:1;2661:53;2706:7;2697:6;2686:9;2682:22;2661:53;:::i;:::-;2651:63;;2607:117;2763:2;2789:53;2834:7;2825:6;2814:9;2810:22;2789:53;:::i;:::-;2779:63;;2734:118;2891:2;2917:53;2962:7;2953:6;2942:9;2938:22;2917:53;:::i;:::-;2907:63;;2862:118;2535:452;;;;;:::o;2993:809::-;;;;;3161:3;3149:9;3140:7;3136:23;3132:33;3129:2;;;3178:1;3175;3168:12;3129:2;3221:1;3246:53;3291:7;3282:6;3271:9;3267:22;3246:53;:::i;:::-;3236:63;;3192:117;3348:2;3374:53;3419:7;3410:6;3399:9;3395:22;3374:53;:::i;:::-;3364:63;;3319:118;3476:2;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3447:118;3632:2;3621:9;3617:18;3604:32;3663:18;3655:6;3652:30;3649:2;;;3695:1;3692;3685:12;3649:2;3723:62;3777:7;3768:6;3757:9;3753:22;3723:62;:::i;:::-;3713:72;;3575:220;3119:683;;;;;;;:::o;3808:401::-;;;3930:2;3918:9;3909:7;3905:23;3901:32;3898:2;;;3946:1;3943;3936:12;3898:2;3989:1;4014:53;4059:7;4050:6;4039:9;4035:22;4014:53;:::i;:::-;4004:63;;3960:117;4116:2;4142:50;4184:7;4175:6;4164:9;4160:22;4142:50;:::i;:::-;4132:60;;4087:115;3888:321;;;;;:::o;4215:407::-;;;4340:2;4328:9;4319:7;4315:23;4311:32;4308:2;;;4356:1;4353;4346:12;4308:2;4399:1;4424:53;4469:7;4460:6;4449:9;4445:22;4424:53;:::i;:::-;4414:63;;4370:117;4526:2;4552:53;4597:7;4588:6;4577:9;4573:22;4552:53;:::i;:::-;4542:63;;4497:118;4298:324;;;;;:::o;4628:425::-;;;4771:2;4759:9;4750:7;4746:23;4742:32;4739:2;;;4787:1;4784;4777:12;4739:2;4858:1;4847:9;4843:17;4830:31;4888:18;4880:6;4877:30;4874:2;;;4920:1;4917;4910:12;4874:2;4956:80;5028:7;5019:6;5008:9;5004:22;4956:80;:::i;:::-;4938:98;;;;4801:245;4729:324;;;;;:::o;5059:260::-;;5166:2;5154:9;5145:7;5141:23;5137:32;5134:2;;;5182:1;5179;5172:12;5134:2;5225:1;5250:52;5294:7;5285:6;5274:9;5270:22;5250:52;:::i;:::-;5240:62;;5196:116;5124:195;;;;:::o;5325:282::-;;5443:2;5431:9;5422:7;5418:23;5414:32;5411:2;;;5459:1;5456;5449:12;5411:2;5502:1;5527:63;5582:7;5573:6;5562:9;5558:22;5527:63;:::i;:::-;5517:73;;5473:127;5401:206;;;;:::o;5613:262::-;;5721:2;5709:9;5700:7;5696:23;5692:32;5689:2;;;5737:1;5734;5727:12;5689:2;5780:1;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5751:117;5679:196;;;;:::o;5881:118::-;5968:24;5986:5;5968:24;:::i;:::-;5963:3;5956:37;5946:53;;:::o;6005:157::-;6110:45;6130:24;6148:5;6130:24;:::i;:::-;6110:45;:::i;:::-;6105:3;6098:58;6088:74;;:::o;6168:109::-;6249:21;6264:5;6249:21;:::i;:::-;6244:3;6237:34;6227:50;;:::o;6283:118::-;6370:24;6388:5;6370:24;:::i;:::-;6365:3;6358:37;6348:53;;:::o;6407:157::-;6512:45;6532:24;6550:5;6532:24;:::i;:::-;6512:45;:::i;:::-;6507:3;6500:58;6490:74;;:::o;6570:360::-;;6684:38;6716:5;6684:38;:::i;:::-;6738:70;6801:6;6796:3;6738:70;:::i;:::-;6731:77;;6817:52;6862:6;6857:3;6850:4;6843:5;6839:16;6817:52;:::i;:::-;6894:29;6916:6;6894:29;:::i;:::-;6889:3;6885:39;6878:46;;6660:270;;;;;:::o;6936:373::-;;7068:38;7100:5;7068:38;:::i;:::-;7122:88;7203:6;7198:3;7122:88;:::i;:::-;7115:95;;7219:52;7264:6;7259:3;7252:4;7245:5;7241:16;7219:52;:::i;:::-;7296:6;7291:3;7287:16;7280:23;;7044:265;;;;;:::o;7337:841::-;;7475:5;7469:12;7504:36;7530:9;7504:36;:::i;:::-;7556:88;7637:6;7632:3;7556:88;:::i;:::-;7549:95;;7675:1;7664:9;7660:17;7691:1;7686:137;;;;7837:1;7832:340;;;;7653:519;;7686:137;7770:4;7766:9;7755;7751:25;7746:3;7739:38;7806:6;7801:3;7797:16;7790:23;;7686:137;;7832:340;7899:37;7930:5;7899:37;:::i;:::-;7958:1;7972:154;7986:6;7983:1;7980:13;7972:154;;;8060:7;8054:14;8050:1;8045:3;8041:11;8034:35;8110:1;8101:7;8097:15;8086:26;;8008:4;8005:1;8001:12;7996:17;;7972:154;;;8155:6;8150:3;8146:16;8139:23;;7839:333;;7653:519;;7442:736;;;;;;:::o;8184:364::-;;8300:39;8333:5;8300:39;:::i;:::-;8355:71;8419:6;8414:3;8355:71;:::i;:::-;8348:78;;8435:52;8480:6;8475:3;8468:4;8461:5;8457:16;8435:52;:::i;:::-;8512:29;8534:6;8512:29;:::i;:::-;8507:3;8503:39;8496:46;;8276:272;;;;;:::o;8554:302::-;;8717:66;8781:1;8776:3;8717:66;:::i;:::-;8710:73;;8813:7;8809:1;8804:3;8800:11;8793:28;8847:2;8842:3;8838:12;8831:19;;8700:156;;;:::o;8862:301::-;;9025:66;9089:1;9084:3;9025:66;:::i;:::-;9018:73;;9121:6;9117:1;9112:3;9108:11;9101:27;9154:2;9149:3;9145:12;9138:19;;9008:155;;;:::o;9169:308::-;;9332:67;9396:2;9391:3;9332:67;:::i;:::-;9325:74;;9429:12;9425:1;9420:3;9416:11;9409:33;9468:2;9463:3;9459:12;9452:19;;9315:162;;;:::o;9483:304::-;;9646:66;9710:1;9705:3;9646:66;:::i;:::-;9639:73;;9742:9;9738:1;9733:3;9729:11;9722:30;9778:2;9773:3;9769:12;9762:19;;9629:158;;;:::o;9793:305::-;;9956:66;10020:1;10015:3;9956:66;:::i;:::-;9949:73;;10052:10;10048:1;10043:3;10039:11;10032:31;10089:2;10084:3;10080:12;10073:19;;9939:159;;;:::o;10104:301::-;;10267:66;10331:1;10326:3;10267:66;:::i;:::-;10260:73;;10363:6;10359:1;10354:3;10350:11;10343:27;10396:2;10391:3;10387:12;10380:19;;10250:155;;;:::o;10411:302::-;;10574:66;10638:1;10633:3;10574:66;:::i;:::-;10567:73;;10670:7;10666:1;10661:3;10657:11;10650:28;10704:2;10699:3;10695:12;10688:19;;10557:156;;;:::o;10719:308::-;;10882:67;10946:2;10941:3;10882:67;:::i;:::-;10875:74;;10979:12;10975:1;10970:3;10966:11;10959:33;11018:2;11013:3;11009:12;11002:19;;10865:162;;;:::o;11033:304::-;;11196:66;11260:1;11255:3;11196:66;:::i;:::-;11189:73;;11292:9;11288:1;11283:3;11279:11;11272:30;11328:2;11323:3;11319:12;11312:19;;11179:158;;;:::o;11343:118::-;11430:24;11448:5;11430:24;:::i;:::-;11425:3;11418:37;11408:53;;:::o;11467:157::-;11572:45;11592:24;11610:5;11592:24;:::i;:::-;11572:45;:::i;:::-;11567:3;11560:58;11550:74;;:::o;11630:538::-;;11813:75;11884:3;11875:6;11813:75;:::i;:::-;11913:2;11908:3;11904:12;11897:19;;11926:75;11997:3;11988:6;11926:75;:::i;:::-;12026:2;12021:3;12017:12;12010:19;;12039:75;12110:3;12101:6;12039:75;:::i;:::-;12139:2;12134:3;12130:12;12123:19;;12159:3;12152:10;;11802:366;;;;;;:::o;12174:397::-;;12329:75;12400:3;12391:6;12329:75;:::i;:::-;12429:2;12424:3;12420:12;12413:19;;12442:75;12513:3;12504:6;12442:75;:::i;:::-;12542:2;12537:3;12533:12;12526:19;;12562:3;12555:10;;12318:253;;;;;:::o;12577:421::-;;12772:90;12858:3;12849:6;12772:90;:::i;:::-;12765:97;;12879:93;12968:3;12959:6;12879:93;:::i;:::-;12872:100;;12989:3;12982:10;;12754:244;;;;;:::o;13004:222::-;;13135:2;13124:9;13120:18;13112:26;;13148:71;13216:1;13205:9;13201:17;13192:6;13148:71;:::i;:::-;13102:124;;;;:::o;13232:640::-;;13465:3;13454:9;13450:19;13442:27;;13479:71;13547:1;13536:9;13532:17;13523:6;13479:71;:::i;:::-;13560:72;13628:2;13617:9;13613:18;13604:6;13560:72;:::i;:::-;13642;13710:2;13699:9;13695:18;13686:6;13642:72;:::i;:::-;13761:9;13755:4;13751:20;13746:2;13735:9;13731:18;13724:48;13789:76;13860:4;13851:6;13789:76;:::i;:::-;13781:84;;13432:440;;;;;;;:::o;13878:210::-;;14003:2;13992:9;13988:18;13980:26;;14016:65;14078:1;14067:9;14063:17;14054:6;14016:65;:::i;:::-;13970:118;;;;:::o;14094:222::-;;14225:2;14214:9;14210:18;14202:26;;14238:71;14306:1;14295:9;14291:17;14282:6;14238:71;:::i;:::-;14192:124;;;;:::o;14322:313::-;;14473:2;14462:9;14458:18;14450:26;;14522:9;14516:4;14512:20;14508:1;14497:9;14493:17;14486:47;14550:78;14623:4;14614:6;14550:78;:::i;:::-;14542:86;;14440:195;;;;:::o;14641:419::-;;14845:2;14834:9;14830:18;14822:26;;14894:9;14888:4;14884:20;14880:1;14869:9;14865:17;14858:47;14922:131;15048:4;14922:131;:::i;:::-;14914:139;;14812:248;;;:::o;15066:419::-;;15270:2;15259:9;15255:18;15247:26;;15319:9;15313:4;15309:20;15305:1;15294:9;15290:17;15283:47;15347:131;15473:4;15347:131;:::i;:::-;15339:139;;15237:248;;;:::o;15491:419::-;;15695:2;15684:9;15680:18;15672:26;;15744:9;15738:4;15734:20;15730:1;15719:9;15715:17;15708:47;15772:131;15898:4;15772:131;:::i;:::-;15764:139;;15662:248;;;:::o;15916:419::-;;16120:2;16109:9;16105:18;16097:26;;16169:9;16163:4;16159:20;16155:1;16144:9;16140:17;16133:47;16197:131;16323:4;16197:131;:::i;:::-;16189:139;;16087:248;;;:::o;16341:419::-;;16545:2;16534:9;16530:18;16522:26;;16594:9;16588:4;16584:20;16580:1;16569:9;16565:17;16558:47;16622:131;16748:4;16622:131;:::i;:::-;16614:139;;16512:248;;;:::o;16766:419::-;;16970:2;16959:9;16955:18;16947:26;;17019:9;17013:4;17009:20;17005:1;16994:9;16990:17;16983:47;17047:131;17173:4;17047:131;:::i;:::-;17039:139;;16937:248;;;:::o;17191:419::-;;17395:2;17384:9;17380:18;17372:26;;17444:9;17438:4;17434:20;17430:1;17419:9;17415:17;17408:47;17472:131;17598:4;17472:131;:::i;:::-;17464:139;;17362:248;;;:::o;17616:419::-;;17820:2;17809:9;17805:18;17797:26;;17869:9;17863:4;17859:20;17855:1;17844:9;17840:17;17833:47;17897:131;18023:4;17897:131;:::i;:::-;17889:139;;17787:248;;;:::o;18041:419::-;;18245:2;18234:9;18230:18;18222:26;;18294:9;18288:4;18284:20;18280:1;18269:9;18265:17;18258:47;18322:131;18448:4;18322:131;:::i;:::-;18314:139;;18212:248;;;:::o;18466:222::-;;18597:2;18586:9;18582:18;18574:26;;18610:71;18678:1;18667:9;18663:17;18654:6;18610:71;:::i;:::-;18564:124;;;;:::o;18694:283::-;;18760:2;18754:9;18744:19;;18802:4;18794:6;18790:17;18909:6;18897:10;18894:22;18873:18;18861:10;18858:34;18855:62;18852:2;;;18920:18;;:::i;:::-;18852:2;18960:10;18956:2;18949:22;18734:243;;;;:::o;18983:331::-;;19134:18;19126:6;19123:30;19120:2;;;19156:18;;:::i;:::-;19120:2;19241:4;19237:9;19230:4;19222:6;19218:17;19214:33;19206:41;;19302:4;19296;19292:15;19284:23;;19049:265;;;:::o;19320:140::-;;19391:3;19383:11;;19414:3;19411:1;19404:14;19448:4;19445:1;19435:18;19427:26;;19373:87;;;:::o;19466:98::-;;19551:5;19545:12;19535:22;;19524:40;;;:::o;19570:99::-;;19656:5;19650:12;19640:22;;19629:40;;;:::o;19675:168::-;;19792:6;19787:3;19780:19;19832:4;19827:3;19823:14;19808:29;;19770:73;;;;:::o;19849:147::-;;19987:3;19972:18;;19962:34;;;;:::o;20002:169::-;;20120:6;20115:3;20108:19;20160:4;20155:3;20151:14;20136:29;;20098:73;;;;:::o;20177:305::-;;20236:20;20254:1;20236:20;:::i;:::-;20231:25;;20270:20;20288:1;20270:20;:::i;:::-;20265:25;;20424:1;20356:66;20352:74;20349:1;20346:81;20343:2;;;20430:18;;:::i;:::-;20343:2;20474:1;20471;20467:9;20460:16;;20221:261;;;;:::o;20488:237::-;;20545:18;20561:1;20545:18;:::i;:::-;20540:23;;20577:18;20593:1;20577:18;:::i;:::-;20572:23;;20667:1;20661:4;20657:12;20654:1;20651:19;20648:2;;;20673:18;;:::i;:::-;20648:2;20717:1;20714;20710:9;20703:16;;20530:195;;;;:::o;20731:185::-;;20788:20;20806:1;20788:20;:::i;:::-;20783:25;;20822:20;20840:1;20822:20;:::i;:::-;20817:25;;20861:1;20851:2;;20866:18;;:::i;:::-;20851:2;20908:1;20905;20901:9;20896:14;;20773:143;;;;:::o;20922:848::-;;;21014:6;21005:15;;21038:5;21029:14;;21052:712;21073:1;21063:8;21060:15;21052:712;;;21168:4;21163:3;21159:14;21153:4;21150:24;21147:2;;;21177:18;;:::i;:::-;21147:2;21227:1;21217:8;21213:16;21210:2;;;21642:4;21635:5;21631:16;21622:25;;21210:2;21692:4;21686;21682:15;21674:23;;21722:32;21745:8;21722:32;:::i;:::-;21710:44;;21052:712;;;20995:775;;;;;;;:::o;21776:285::-;;21860:23;21878:4;21860:23;:::i;:::-;21852:31;;21904:27;21922:8;21904:27;:::i;:::-;21892:39;;21950:104;21987:66;21977:8;21971:4;21950:104;:::i;:::-;21941:113;;21842:219;;;;:::o;22067:1073::-;;22312:8;22302:2;;22333:1;22324:10;;22335:5;;22302:2;22361:4;22351:2;;22378:1;22369:10;;22380:5;;22351:2;22447:4;22495:1;22490:27;;;;22531:1;22526:191;;;;22440:277;;22490:27;22508:1;22499:10;;22510:5;;;22526:191;22571:3;22561:8;22558:17;22555:2;;;22578:18;;:::i;:::-;22555:2;22627:8;22624:1;22620:16;22611:25;;22662:3;22655:5;22652:14;22649:2;;;22669:18;;:::i;:::-;22649:2;22702:5;;;22440:277;;22826:2;22816:8;22813:16;22807:3;22801:4;22798:13;22794:36;22776:2;22766:8;22763:16;22758:2;22752:4;22749:12;22745:35;22729:111;22726:2;;;22882:8;22876:4;22872:19;22863:28;;22917:3;22910:5;22907:14;22904:2;;;22924:18;;:::i;:::-;22904:2;22957:5;;22726:2;22997:42;23035:3;23025:8;23019:4;23016:1;22997:42;:::i;:::-;22982:57;;;;23071:4;23066:3;23062:14;23055:5;23052:25;23049:2;;;23080:18;;:::i;:::-;23049:2;23129:4;23122:5;23118:16;23109:25;;22127:1013;;;;;;:::o;23146:348::-;;23209:20;23227:1;23209:20;:::i;:::-;23204:25;;23243:20;23261:1;23243:20;:::i;:::-;23238:25;;23431:1;23363:66;23359:74;23356:1;23353:81;23348:1;23341:9;23334:17;23330:105;23327:2;;;23438:18;;:::i;:::-;23327:2;23486:1;23483;23479:9;23468:20;;23194:300;;;;:::o;23500:191::-;;23560:20;23578:1;23560:20;:::i;:::-;23555:25;;23594:20;23612:1;23594:20;:::i;:::-;23589:25;;23633:1;23630;23627:8;23624:2;;;23638:18;;:::i;:::-;23624:2;23683:1;23680;23676:9;23668:17;;23545:146;;;;:::o;23697:96::-;;23763:24;23781:5;23763:24;:::i;:::-;23752:35;;23742:51;;;:::o;23799:90::-;;23876:5;23869:13;23862:21;23851:32;;23841:48;;;:::o;23895:77::-;;23961:5;23950:16;;23940:32;;;:::o;23978:149::-;;24054:66;24047:5;24043:78;24032:89;;24022:105;;;:::o;24133:126::-;;24210:42;24203:5;24199:54;24188:65;;24178:81;;;:::o;24265:77::-;;24331:5;24320:16;;24310:32;;;:::o;24348:86::-;;24423:4;24416:5;24412:16;24401:27;;24391:43;;;:::o;24440:154::-;24524:6;24519:3;24514;24501:30;24586:1;24577:6;24572:3;24568:16;24561:27;24491:103;;;:::o;24600:307::-;24668:1;24678:113;24692:6;24689:1;24686:13;24678:113;;;24777:1;24772:3;24768:11;24762:18;24758:1;24753:3;24749:11;24742:39;24714:2;24711:1;24707:10;24702:15;;24678:113;;;24809:6;24806:1;24803:13;24800:2;;;24889:1;24880:6;24875:3;24871:16;24864:27;24800:2;24649:258;;;;:::o;24913:171::-;;24975:24;24993:5;24975:24;:::i;:::-;24966:33;;25021:4;25014:5;25011:15;25008:2;;;25029:18;;:::i;:::-;25008:2;25076:1;25069:5;25065:13;25058:20;;24956:128;;;:::o;25090:320::-;;25171:1;25165:4;25161:12;25151:22;;25218:1;25212:4;25208:12;25239:18;25229:2;;25295:4;25287:6;25283:17;25273:27;;25229:2;25357;25349:6;25346:14;25326:18;25323:38;25320:2;;;25376:18;;:::i;:::-;25320:2;25141:269;;;;:::o;25416:233::-;;25478:24;25496:5;25478:24;:::i;:::-;25469:33;;25524:66;25517:5;25514:77;25511:2;;;25594:18;;:::i;:::-;25511:2;25641:1;25634:5;25630:13;25623:20;;25459:190;;;:::o;25655:100::-;;25723:26;25743:5;25723:26;:::i;:::-;25712:37;;25702:53;;;:::o;25761:79::-;;25829:5;25818:16;;25808:32;;;:::o;25846:94::-;;25914:20;25928:5;25914:20;:::i;:::-;25903:31;;25893:47;;;:::o;25946:79::-;;26014:5;26003:16;;25993:32;;;:::o;26031:180::-;26079:77;26076:1;26069:88;26176:4;26173:1;26166:15;26200:4;26197:1;26190:15;26217:180;26265:77;26262:1;26255:88;26362:4;26359:1;26352:15;26386:4;26383:1;26376:15;26403:180;26451:77;26448:1;26441:88;26548:4;26545:1;26538:15;26572:4;26569:1;26562:15;26589:180;26637:77;26634:1;26627:88;26734:4;26731:1;26724:15;26758:4;26755:1;26748:15;26775:102;;26867:2;26863:7;26858:2;26851:5;26847:14;26843:28;26833:38;;26823:54;;;:::o;26883:94::-;;26964:5;26960:2;26956:14;26935:35;;26925:52;;;:::o;26983:102::-;;27072:5;27069:1;27065:13;27044:34;;27034:51;;;:::o;27091:122::-;27164:24;27182:5;27164:24;:::i;:::-;27157:5;27154:35;27144:2;;27203:1;27200;27193:12;27144:2;27134:79;:::o;27219:116::-;27289:21;27304:5;27289:21;:::i;:::-;27282:5;27279:32;27269:2;;27325:1;27322;27315:12;27269:2;27259:76;:::o;27341:120::-;27413:23;27430:5;27413:23;:::i;:::-;27406:5;27403:34;27393:2;;27451:1;27448;27441:12;27393:2;27383:78;:::o;27467:122::-;27540:24;27558:5;27540:24;:::i;:::-;27533:5;27530:35;27520:2;;27579:1;27576;27569:12;27520:2;27510:79;:::o

Swarm Source

ipfs://ca0710f04cb88946a99fdfebe9cd1de12fdc8a2cc381e4b7edf828cdd0e45eb1

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  ]
[ 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.