ETH Price: $3,355.79 (-2.85%)
Gas: 1 Gwei

Contract

0x9C518dE52b0F1522134d8e9AD4B3EDc5c73F8FcB
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Set Approval For...163949432023-01-13 2:38:35537 days ago1673577515IN
0x9C518dE5...5c73F8FcB
0 ETH0.0007392515.80019405
Set Approval For...154224212022-08-27 15:34:41675 days ago1661614481IN
0x9C518dE5...5c73F8FcB
0 ETH0.000383848.21865543
Set Approval For...154093692022-08-25 13:33:36677 days ago1661434416IN
0x9C518dE5...5c73F8FcB
0 ETH0.000410728.79420496
Withdraw154087272022-08-25 10:59:41677 days ago1661425181IN
0x9C518dE5...5c73F8FcB
0 ETH0.000123294
Set Approval For...154063752022-08-25 1:49:32678 days ago1661392172IN
0x9C518dE5...5c73F8FcB
0 ETH0.000385078.23025898
Set Approval For...154063742022-08-25 1:48:48678 days ago1661392128IN
0x9C518dE5...5c73F8FcB
0 ETH0.000374448.00296636
Set Approval For...154063742022-08-25 1:48:48678 days ago1661392128IN
0x9C518dE5...5c73F8FcB
0 ETH0.000373778.00296636
Set Approval For...154057882022-08-24 23:28:53678 days ago1661383733IN
0x9C518dE5...5c73F8FcB
0 ETH0.000326216.98481881
Set Approval For...154054852022-08-24 22:13:08678 days ago1661379188IN
0x9C518dE5...5c73F8FcB
0 ETH0.0008829318.9049457
Set Approval For...154032942022-08-24 13:54:33678 days ago1661349273IN
0x9C518dE5...5c73F8FcB
0 ETH0.000422799.05266858
Set Approval For...154028782022-08-24 12:16:47678 days ago1661343407IN
0x9C518dE5...5c73F8FcB
0 ETH0.000317536.79884636
Set Approval For...154028762022-08-24 12:16:14678 days ago1661343374IN
0x9C518dE5...5c73F8FcB
0 ETH0.000312826.69804322
Set Approval For...154028632022-08-24 12:14:02678 days ago1661343242IN
0x9C518dE5...5c73F8FcB
0 ETH0.0002655.66398425
Set Approval For...154028272022-08-24 12:07:01678 days ago1661342821IN
0x9C518dE5...5c73F8FcB
0 ETH0.000413738.85873586
Set Approval For...154028262022-08-24 12:06:15678 days ago1661342775IN
0x9C518dE5...5c73F8FcB
0 ETH0.000375568.04135651
Set Approval For...154028202022-08-24 12:05:10678 days ago1661342710IN
0x9C518dE5...5c73F8FcB
0 ETH0.000404958.67062939
Set Approval For...154027562022-08-24 11:49:58678 days ago1661341798IN
0x9C518dE5...5c73F8FcB
0 ETH0.000428759.18033358
Set Approval For...154027502022-08-24 11:47:55678 days ago1661341675IN
0x9C518dE5...5c73F8FcB
0 ETH0.00030456.51994008
Mint154027172022-08-24 11:41:37678 days ago1661341297IN
0x9C518dE5...5c73F8FcB
0.002 ETH0.000397894.6420112
Mint154026832022-08-24 11:34:05678 days ago1661340845IN
0x9C518dE5...5c73F8FcB
0.002 ETH0.00050795.92538789
Mint154026672022-08-24 11:30:23678 days ago1661340623IN
0x9C518dE5...5c73F8FcB
0 ETH0.000174235.58311742
Mint154026052022-08-24 11:17:39678 days ago1661339859IN
0x9C518dE5...5c73F8FcB
0.002 ETH0.00068577.99978505
Set Approval For...154026022022-08-24 11:16:53678 days ago1661339813IN
0x9C518dE5...5c73F8FcB
0 ETH0.000374778.02456731
Mint154026012022-08-24 11:16:45678 days ago1661339805IN
0x9C518dE5...5c73F8FcB
0.002 ETH0.000657937.67573863
Set Approval For...154025982022-08-24 11:16:08678 days ago1661339768IN
0x9C518dE5...5c73F8FcB
0 ETH0.000375968.04993567
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To Value
154087272022-08-25 10:59:41677 days ago1661425181
0x9C518dE5...5c73F8FcB
0.008 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Crypto

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-24
*/

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


// File @openzeppelin/contracts/access/[email protected]


// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)




abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    
    constructor() {
        _transferOwnership(_msgSender());
    }

    
    function owner() public view virtual returns (address) {
        return _owner;
    }

   
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// File @openzeppelin/contracts/utils/[email protected]


// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)




library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    
    function toString(uint256 value) internal pure returns (string memory) {
        

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}





// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)




interface IERC165 {
    
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}





// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)




interface IERC721 is IERC165 {
    
    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);

    
    function balanceOf(address owner) external view returns (uint256 balance);

    
    function ownerOf(uint256 tokenId) external view returns (address owner);

    
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    
    function approve(address to, uint256 tokenId) external;

    
    function getApproved(uint256 tokenId) external view returns (address operator);

    
    function setApprovalForAll(address operator, bool _approved) external;

    
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}





// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)




interface IERC721Receiver {
    
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}




// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)




interface IERC721Metadata is IERC721 {
    
    function name() external view returns (string memory);

    
    function symbol() external view returns (string memory);

    
    function tokenURI(uint256 tokenId) external view returns (string memory);
}





// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Enumerable.sol)




interface IERC721Enumerable is IERC721 {
    
    function totalSupply() external view returns (uint256);

    
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    
    function tokenByIndex(uint256 index) external view returns (uint256);
}


// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)


library Counters {
    struct Counter {
        
        uint256 _value; 
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}


// OpenZeppelin Contracts v4.4.1 (utils/Address.sol)




library Address {
    
    function isContract(address account) internal view returns (bool) {
        

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}




// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)




abstract contract ERC165 is IERC165 {
    
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}


// File contracts/ERC721A.sol




contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 internal currentIndex = 0;

    
    string private _name;

    
    string private _symbol;

    
    mapping(uint256 => TokenOwnership) internal _ownerships;

    
    mapping(address => AddressData) private _addressData;

    
    mapping(uint256 => address) private _tokenApprovals;

    
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    
    function totalSupply() public view override returns (uint256) {
        return currentIndex;
    }

    
    function tokenByIndex(uint256 index) public view override returns (uint256) {
        require(index < totalSupply(), 'ERC721A: global index out of bounds');
        return index;
    }

    
    function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) {
        require(index < balanceOf(owner), 'ERC721A: owner index out of bounds');
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx = 0;
        address currOwnershipAddr = address(0);
        for (uint256 i = 0; i < numMintedSoFar; i++) {
            TokenOwnership memory ownership = _ownerships[i];
            if (ownership.addr != address(0)) {
                currOwnershipAddr = ownership.addr;
            }
            if (currOwnershipAddr == owner) {
                if (tokenIdsIdx == index) {
                    return i;
                }
                tokenIdsIdx++;
            }
        }
        revert('ERC721A: unable to get token of owner by index');
    }

    
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    
    function balanceOf(address owner) public view override returns (uint256) {
        require(owner != address(0), 'ERC721A: balance query for the zero address');
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        require(owner != address(0), 'ERC721A: number minted query for the zero address');
        return uint256(_addressData[owner].numberMinted);
    }

    function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) {
        require(_exists(tokenId), 'ERC721A: owner query for nonexistent token');

        for (uint256 curr = tokenId; ; curr--) {
            TokenOwnership memory ownership = _ownerships[curr];
            if (ownership.addr != address(0)) {
                return ownership;
            }
        }

        revert('ERC721A: unable to determine the owner of token');
    }

    
    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }

    
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), 'ERC721Metadata: URI query for nonexistent token');

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : '';
    }

    
    function _baseURI() internal view virtual returns (string memory) {
        return '';
    }

    
    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        require(to != owner, 'ERC721A: approval to current owner');

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            'ERC721A: approve caller is not owner nor approved for all'
        );

        _approve(to, tokenId, owner);
    }

    
    function getApproved(uint256 tokenId) public view override returns (address) {
        require(_exists(tokenId), 'ERC721A: approved query for nonexistent token');

        return _tokenApprovals[tokenId];
    }

    
    function setApprovalForAll(address operator, bool approved) public override {
        require(operator != _msgSender(), 'ERC721A: approve to caller');

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        _transfer(from, to, tokenId);
    }

        function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        safeTransferFrom(from, to, tokenId, '');
    }

    
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public override {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            'ERC721A: transfer to non ERC721Receiver implementer'
        );
    }

    
    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, '');
    }

    
    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), 'ERC721A: mint to the zero address');
        require(!_exists(startTokenId), 'ERC721A: token already minted');
        require(quantity > 0, 'ERC721A: quantity must be greater 0');

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);

        AddressData memory addressData = _addressData[to];
        _addressData[to] = AddressData(
            addressData.balance + uint128(quantity),
            addressData.numberMinted + uint128(quantity)
        );
        _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

        uint256 updatedIndex = startTokenId;

        for (uint256 i = 0; i < quantity; i++) {
            emit Transfer(address(0), to, updatedIndex);
            require(
                _checkOnERC721Received(address(0), to, updatedIndex, _data),
                'ERC721A: transfer to non ERC721Receiver implementer'
            );
            updatedIndex++;
        }

      currentIndex = updatedIndex;
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }

    
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));

        require(isApprovedOrOwner, 'ERC721A: transfer caller is not owner nor approved');

        require(prevOwnership.addr == from, 'ERC721A: transfer from incorrect owner');
        require(to != address(0), 'ERC721A: transfer to the zero address');

        _beforeTokenTransfers(from, to, tokenId, 1);

        
        _approve(address(0), tokenId, prevOwnership.addr);

        
        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;
        }

        _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));

        
        uint256 nextTokenId = tokenId + 1;
        if (_ownerships[nextTokenId].addr == address(0)) {
            if (_exists(nextTokenId)) {
                _ownerships[nextTokenId] = TokenOwnership(prevOwnership.addr, prevOwnership.startTimestamp);
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }

    
    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert('ERC721A: transfer to non ERC721Receiver implementer');
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    
    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}

    
    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

contract Crypto is ERC721A, Ownable {

  using Strings for uint256;
  using Counters for Counters.Counter;

  Counters.Counter private supply;

 string baseURI;
  string public baseExtension = ".json";
  uint256 public constant MAX_PER_TX_FREE = 2;
  uint256 public constant MAX_PER_TX = 20;
  uint256 public constant FREE_MAX_SUPPLY = 1000;
  uint256 public cost = 0.001 ether;
  uint256 public maxSupply = 7777;
  uint256 public maxMintAmount = 20;
  bool public paused = true;
  bool public revealed = false;
  string public notRevealedUri;

  constructor(
    string memory _name,
    string memory _symbol,
    string memory _initBaseURI,
    string memory _initNotRevealedUri
  ) ERC721A(_name, _symbol) {
    setBaseURI(_initBaseURI);
    setNotRevealedURI(_initNotRevealedUri);
  }

  // internal
  function _baseURI() internal view virtual override returns (string memory) {
    return baseURI;
  }

  // public
  function mint(uint256 _amount) external payable {
        address _caller = _msgSender();
        require(!paused, "Paused");
        require(maxSupply >= totalSupply() + _amount, "Exceeds max supply");
        require(_amount > 0, "No 0 mints");
        require(tx.origin == _caller, "No contracts");

        if(FREE_MAX_SUPPLY >= totalSupply()){
            require(MAX_PER_TX_FREE >= _amount , "Excess max per free tx");
        }else{
            require(MAX_PER_TX >= _amount , "Excess max per paid tx");
            require(_amount * cost == msg.value, "Invalid funds provided");
        }

        _safeMint(_caller, _amount);
    }

  function walletOfOwner(address _owner)
    public
    view
    returns (uint256[] memory)
  {
    uint256 ownerTokenCount = balanceOf(_owner);
    uint256[] memory tokenIds = new uint256[](ownerTokenCount);
    for (uint256 i; i < ownerTokenCount; i++) {
      tokenIds[i] = tokenOfOwnerByIndex(_owner, i);
    }
    return tokenIds;
  }

  function tokenURI(uint256 tokenId)
    public
    view
    virtual
    override
    returns (string memory)
  {
    require(
      _exists(tokenId),
      "ERC721Metadata: URI query for nonexistent token"
    );
    
    if(revealed == false) {
        return notRevealedUri;
    }

    string memory currentBaseURI = _baseURI();
    return bytes(currentBaseURI).length > 0
        ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension))
        : "";
  }

  //only owner
  function reveal() public onlyOwner {
      revealed = true;
  }
  
  function setCost(uint256 _newCost) public onlyOwner {
    cost = _newCost;
  }

  function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner {
    maxMintAmount = _newmaxMintAmount;
  }
  
  function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner {
    notRevealedUri = _notRevealedURI;
  }

  function setBaseURI(string memory _newBaseURI) public onlyOwner {
    baseURI = _newBaseURI;
  }

  function setBaseExtension(string memory _newBaseExtension) public onlyOwner {
    baseExtension = _newBaseExtension;
  }

  function pause(bool _state) public onlyOwner {
    paused = _state;
  }
 
  function withdraw() public onlyOwner {
        (bool os, ) = payable(owner()).call{value: address(this).balance}("");
        require(os, "Withdraw failed!");
  }
  function _mintLoop(address _receiver, uint256 _mintAmount) internal {
    for (uint256 i = 1; i <= _mintAmount; i++) {
      supply.increment();
      _safeMint(_receiver, supply.current());
    }
  }

  

    
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FREE_MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_TX_FREE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","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":"","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600080556040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600a90816200004e9190620005fc565b5066038d7ea4c68000600b55611e61600c556014600d556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff021916908315150217905550348015620000a857600080fd5b5060405162005822380380620058228339818101604052810190620000ce919062000847565b83838160019081620000e19190620005fc565b508060029081620000f39190620005fc565b505050620001166200010a6200014260201b60201c565b6200014a60201b60201c565b62000127826200021060201b60201c565b6200013881620002b460201b60201c565b50505050620009b8565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002206200014260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002466200035860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200029f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002969062000996565b60405180910390fd5b8060099081620002b09190620005fc565b5050565b620002c46200014260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002ea6200035860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000343576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200033a9062000996565b60405180910390fd5b80600f9081620003549190620005fc565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200040457607f821691505b6020821081036200041a5762000419620003bc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000445565b62000490868362000445565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004dd620004d7620004d184620004a8565b620004b2565b620004a8565b9050919050565b6000819050919050565b620004f983620004bc565b620005116200050882620004e4565b84845462000452565b825550505050565b600090565b6200052862000519565b62000535818484620004ee565b505050565b5b818110156200055d57620005516000826200051e565b6001810190506200053b565b5050565b601f821115620005ac57620005768162000420565b620005818462000435565b8101602085101562000591578190505b620005a9620005a08562000435565b8301826200053a565b50505b505050565b600082821c905092915050565b6000620005d160001984600802620005b1565b1980831691505092915050565b6000620005ec8383620005be565b9150826002028217905092915050565b620006078262000382565b67ffffffffffffffff8111156200062357620006226200038d565b5b6200062f8254620003eb565b6200063c82828562000561565b600060209050601f8311600181146200067457600084156200065f578287015190505b6200066b8582620005de565b865550620006db565b601f198416620006848662000420565b60005b82811015620006ae5784890151825560018201915060208501945060208101905062000687565b86831015620006ce5784890151620006ca601f891682620005be565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200071d8262000701565b810181811067ffffffffffffffff821117156200073f576200073e6200038d565b5b80604052505050565b600062000754620006e3565b905062000762828262000712565b919050565b600067ffffffffffffffff8211156200078557620007846200038d565b5b620007908262000701565b9050602081019050919050565b60005b83811015620007bd578082015181840152602081019050620007a0565b60008484015250505050565b6000620007e0620007da8462000767565b62000748565b905082815260208101848484011115620007ff57620007fe620006fc565b5b6200080c8482856200079d565b509392505050565b600082601f8301126200082c576200082b620006f7565b5b81516200083e848260208601620007c9565b91505092915050565b60008060008060808587031215620008645762000863620006ed565b5b600085015167ffffffffffffffff811115620008855762000884620006f2565b5b620008938782880162000814565b945050602085015167ffffffffffffffff811115620008b757620008b6620006f2565b5b620008c58782880162000814565b935050604085015167ffffffffffffffff811115620008e957620008e8620006f2565b5b620008f78782880162000814565b925050606085015167ffffffffffffffff8111156200091b576200091a620006f2565b5b620009298782880162000814565b91505092959194509250565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200097e60208362000935565b91506200098b8262000946565b602082019050919050565b60006020820190508181036000830152620009b1816200096f565b9050919050565b614e5a80620009c86000396000f3fe6080604052600436106102305760003560e01c80635c975abb1161012e578063a475b5dd116100ab578063da3ef23f1161006f578063da3ef23f1461081e578063e985e9c514610847578063f2c4ce1e14610884578063f2fde38b146108ad578063f43a22dc146108d657610230565b8063a475b5dd1461074b578063b88d4fde14610762578063c66828621461078b578063c87b56dd146107b6578063d5abeb01146107f357610230565b80638069876d116100f25780638069876d146106855780638da5cb5b146106b057806395d89b41146106db578063a0712d6814610706578063a22cb4651461072257610230565b80635c975abb146105a05780636352211e146105cb57806370a0823114610608578063715018a6146106455780637f00c7a61461065c57610230565b806323b872dd116101bc57806344a0d68a1161018057806344a0d68a146104bb578063463fff79146104e45780634f6ccce71461050f578063518302271461054c57806355f804b31461057757610230565b806323b872dd146103d85780632f745c59146104015780633ccfd60b1461043e57806342842e0e14610455578063438b63001461047e57610230565b8063081c8c4411610203578063081c8c4414610303578063095ea7b31461032e57806313faede61461035757806318160ddd14610382578063239c70ae146103ad57610230565b806301ffc9a71461023557806302329a291461027257806306fdde031461029b578063081812fc146102c6575b600080fd5b34801561024157600080fd5b5061025c600480360381019061025791906131a2565b610901565b60405161026991906131ea565b60405180910390f35b34801561027e57600080fd5b5061029960048036038101906102949190613231565b610a4b565b005b3480156102a757600080fd5b506102b0610ae4565b6040516102bd91906132ee565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190613346565b610b76565b6040516102fa91906133b4565b60405180910390f35b34801561030f57600080fd5b50610318610bfb565b60405161032591906132ee565b60405180910390f35b34801561033a57600080fd5b50610355600480360381019061035091906133fb565b610c89565b005b34801561036357600080fd5b5061036c610da1565b604051610379919061344a565b60405180910390f35b34801561038e57600080fd5b50610397610da7565b6040516103a4919061344a565b60405180910390f35b3480156103b957600080fd5b506103c2610db0565b6040516103cf919061344a565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190613465565b610db6565b005b34801561040d57600080fd5b50610428600480360381019061042391906133fb565b610dc6565b604051610435919061344a565b60405180910390f35b34801561044a57600080fd5b50610453610fc2565b005b34801561046157600080fd5b5061047c60048036038101906104779190613465565b6110f4565b005b34801561048a57600080fd5b506104a560048036038101906104a091906134b8565b611114565b6040516104b291906135a3565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613346565b6111c2565b005b3480156104f057600080fd5b506104f9611248565b604051610506919061344a565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190613346565b61124d565b604051610543919061344a565b60405180910390f35b34801561055857600080fd5b506105616112a0565b60405161056e91906131ea565b60405180910390f35b34801561058357600080fd5b5061059e600480360381019061059991906136fa565b6112b3565b005b3480156105ac57600080fd5b506105b5611342565b6040516105c291906131ea565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613346565b611355565b6040516105ff91906133b4565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a91906134b8565b61136b565b60405161063c919061344a565b60405180910390f35b34801561065157600080fd5b5061065a611453565b005b34801561066857600080fd5b50610683600480360381019061067e9190613346565b6114db565b005b34801561069157600080fd5b5061069a611561565b6040516106a7919061344a565b60405180910390f35b3480156106bc57600080fd5b506106c5611567565b6040516106d291906133b4565b60405180910390f35b3480156106e757600080fd5b506106f0611591565b6040516106fd91906132ee565b60405180910390f35b610720600480360381019061071b9190613346565b611623565b005b34801561072e57600080fd5b5061074960048036038101906107449190613743565b611882565b005b34801561075757600080fd5b50610760611a02565b005b34801561076e57600080fd5b5061078960048036038101906107849190613824565b611a9b565b005b34801561079757600080fd5b506107a0611af7565b6040516107ad91906132ee565b60405180910390f35b3480156107c257600080fd5b506107dd60048036038101906107d89190613346565b611b85565b6040516107ea91906132ee565b60405180910390f35b3480156107ff57600080fd5b50610808611cdd565b604051610815919061344a565b60405180910390f35b34801561082a57600080fd5b50610845600480360381019061084091906136fa565b611ce3565b005b34801561085357600080fd5b5061086e600480360381019061086991906138a7565b611d72565b60405161087b91906131ea565b60405180910390f35b34801561089057600080fd5b506108ab60048036038101906108a691906136fa565b611e06565b005b3480156108b957600080fd5b506108d460048036038101906108cf91906134b8565b611e95565b005b3480156108e257600080fd5b506108eb611f8c565b6040516108f8919061344a565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109cc57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a3457507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a445750610a4382611f91565b5b9050919050565b610a53611ffb565b73ffffffffffffffffffffffffffffffffffffffff16610a71611567565b73ffffffffffffffffffffffffffffffffffffffff1614610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe90613933565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b606060018054610af390613982565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1f90613982565b8015610b6c5780601f10610b4157610100808354040283529160200191610b6c565b820191906000526020600020905b815481529060010190602001808311610b4f57829003601f168201915b5050505050905090565b6000610b8182612003565b610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790613a25565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600f8054610c0890613982565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3490613982565b8015610c815780601f10610c5657610100808354040283529160200191610c81565b820191906000526020600020905b815481529060010190602001808311610c6457829003601f168201915b505050505081565b6000610c9482611355565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90613ab7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d23611ffb565b73ffffffffffffffffffffffffffffffffffffffff161480610d525750610d5181610d4c611ffb565b611d72565b5b610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8890613b49565b60405180910390fd5b610d9c838383612010565b505050565b600b5481565b60008054905090565b600d5481565b610dc18383836120c2565b505050565b6000610dd18361136b565b8210610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0990613bdb565b60405180910390fd5b6000610e1c610da7565b905060008060005b83811015610f80576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610f1657806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f6c57868403610f5d578195505050505050610fbc565b8380610f6890613c2a565b9450505b508080610f7890613c2a565b915050610e24565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390613ce4565b60405180910390fd5b92915050565b610fca611ffb565b73ffffffffffffffffffffffffffffffffffffffff16610fe8611567565b73ffffffffffffffffffffffffffffffffffffffff161461103e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103590613933565b60405180910390fd5b6000611048611567565b73ffffffffffffffffffffffffffffffffffffffff164760405161106b90613d35565b60006040518083038185875af1925050503d80600081146110a8576040519150601f19603f3d011682016040523d82523d6000602084013e6110ad565b606091505b50509050806110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e890613d96565b60405180910390fd5b50565b61110f83838360405180602001604052806000815250611a9b565b505050565b606060006111218361136b565b905060008167ffffffffffffffff81111561113f5761113e6135cf565b5b60405190808252806020026020018201604052801561116d5781602001602082028036833780820191505090505b50905060005b828110156111b7576111858582610dc6565b82828151811061119857611197613db6565b5b60200260200101818152505080806111af90613c2a565b915050611173565b508092505050919050565b6111ca611ffb565b73ffffffffffffffffffffffffffffffffffffffff166111e8611567565b73ffffffffffffffffffffffffffffffffffffffff161461123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590613933565b60405180910390fd5b80600b8190555050565b600281565b6000611257610da7565b8210611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90613e57565b60405180910390fd5b819050919050565b600e60019054906101000a900460ff1681565b6112bb611ffb565b73ffffffffffffffffffffffffffffffffffffffff166112d9611567565b73ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132690613933565b60405180910390fd5b806009908161133e9190614023565b5050565b600e60009054906101000a900460ff1681565b600061136082612667565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d290614167565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61145b611ffb565b73ffffffffffffffffffffffffffffffffffffffff16611479611567565b73ffffffffffffffffffffffffffffffffffffffff16146114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690613933565b60405180910390fd5b6114d960006127c2565b565b6114e3611ffb565b73ffffffffffffffffffffffffffffffffffffffff16611501611567565b73ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90613933565b60405180910390fd5b80600d8190555050565b6103e881565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546115a090613982565b80601f01602080910402602001604051908101604052809291908181526020018280546115cc90613982565b80156116195780601f106115ee57610100808354040283529160200191611619565b820191906000526020600020905b8154815290600101906020018083116115fc57829003601f168201915b5050505050905090565b600061162d611ffb565b9050600e60009054906101000a900460ff161561167f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611676906141d3565b60405180910390fd5b81611688610da7565b61169291906141f3565b600c5410156116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90614273565b60405180910390fd5b60008211611719576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611710906142df565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e9061434b565b60405180910390fd5b61178f610da7565b6103e8106117e05781600210156117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d2906143b7565b60405180910390fd5b611874565b8160141015611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90614423565b60405180910390fd5b34600b54836118339190614443565b14611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a906144e9565b60405180910390fd5b5b61187e8183612888565b5050565b61188a611ffb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee90614555565b60405180910390fd5b8060066000611904611ffb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166119b1611ffb565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119f691906131ea565b60405180910390a35050565b611a0a611ffb565b73ffffffffffffffffffffffffffffffffffffffff16611a28611567565b73ffffffffffffffffffffffffffffffffffffffff1614611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7590613933565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550565b611aa68484846120c2565b611ab2848484846128a6565b611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae8906145e7565b60405180910390fd5b50505050565b600a8054611b0490613982565b80601f0160208091040260200160405190810160405280929190818152602001828054611b3090613982565b8015611b7d5780601f10611b5257610100808354040283529160200191611b7d565b820191906000526020600020905b815481529060010190602001808311611b6057829003601f168201915b505050505081565b6060611b9082612003565b611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc690614679565b60405180910390fd5b60001515600e60019054906101000a900460ff16151503611c7c57600f8054611bf790613982565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2390613982565b8015611c705780601f10611c4557610100808354040283529160200191611c70565b820191906000526020600020905b815481529060010190602001808311611c5357829003601f168201915b50505050509050611cd8565b6000611c86612a2d565b90506000815111611ca65760405180602001604052806000815250611cd4565b80611cb084612abf565b600a604051602001611cc493929190614758565b6040516020818303038152906040525b9150505b919050565b600c5481565b611ceb611ffb565b73ffffffffffffffffffffffffffffffffffffffff16611d09611567565b73ffffffffffffffffffffffffffffffffffffffff1614611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5690613933565b60405180910390fd5b80600a9081611d6e9190614023565b5050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611e0e611ffb565b73ffffffffffffffffffffffffffffffffffffffff16611e2c611567565b73ffffffffffffffffffffffffffffffffffffffff1614611e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7990613933565b60405180910390fd5b80600f9081611e919190614023565b5050565b611e9d611ffb565b73ffffffffffffffffffffffffffffffffffffffff16611ebb611567565b73ffffffffffffffffffffffffffffffffffffffff1614611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613933565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f77906147fb565b60405180910390fd5b611f89816127c2565b50565b601481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006120cd82612667565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166120f4611ffb565b73ffffffffffffffffffffffffffffffffffffffff1614806121505750612119611ffb565b73ffffffffffffffffffffffffffffffffffffffff1661213884610b76565b73ffffffffffffffffffffffffffffffffffffffff16145b8061216c575061216b8260000151612166611ffb565b611d72565b5b9050806121ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a59061488d565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612220576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122179061491f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361228f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612286906149b1565b60405180910390fd5b61229c8585856001612c1f565b6122ac6000848460000151612010565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846124b291906141f3565b9050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036125f75761252781612003565b156125f6576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506003600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461265f8686866001612c25565b505050505050565b61266f6130fc565b61267882612003565b6126b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ae90614a43565b60405180910390fd5b60008290505b6000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146127a95780925050506127bd565b5080806127b590614a63565b9150506126bd565b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6128a2828260405180602001604052806000815250612c2b565b5050565b60006128c78473ffffffffffffffffffffffffffffffffffffffff166130e9565b15612a20578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026128f0611ffb565b8786866040518563ffffffff1660e01b81526004016129129493929190614ae1565b6020604051808303816000875af192505050801561294e57506040513d601f19601f8201168201806040525081019061294b9190614b42565b60015b6129d0573d806000811461297e576040519150601f19603f3d011682016040523d82523d6000602084013e612983565b606091505b5060008151036129c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bf906145e7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612a25565b600190505b949350505050565b606060098054612a3c90613982565b80601f0160208091040260200160405190810160405280929190818152602001828054612a6890613982565b8015612ab55780601f10612a8a57610100808354040283529160200191612ab5565b820191906000526020600020905b815481529060010190602001808311612a9857829003601f168201915b5050505050905090565b606060008203612b06576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612c1a565b600082905060005b60008214612b38578080612b2190613c2a565b915050600a82612b319190614b9e565b9150612b0e565b60008167ffffffffffffffff811115612b5457612b536135cf565b5b6040519080825280601f01601f191660200182016040528015612b865781602001600182028036833780820191505090505b5090505b60008514612c1357600182612b9f9190614bcf565b9150600a85612bae9190614c03565b6030612bba91906141f3565b60f81b818381518110612bd057612bcf613db6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612c0c9190614b9e565b9450612b8a565b8093505050505b919050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9790614ca6565b60405180910390fd5b612ca981612003565b15612ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce090614d12565b60405180910390fd5b60008311612d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2390614da4565b60405180910390fd5b612d396000858386612c1f565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612e369190614de0565b6fffffffffffffffffffffffffffffffff168152602001858360200151612e5d9190614de0565b6fffffffffffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b858110156130cc57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461306c60008884886128a6565b6130ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a2906145e7565b60405180910390fd5b81806130b690613c2a565b92505080806130c490613c2a565b915050612ffb565b50806000819055506130e16000878588612c25565b505050505050565b600080823b905060008111915050919050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61317f8161314a565b811461318a57600080fd5b50565b60008135905061319c81613176565b92915050565b6000602082840312156131b8576131b7613140565b5b60006131c68482850161318d565b91505092915050565b60008115159050919050565b6131e4816131cf565b82525050565b60006020820190506131ff60008301846131db565b92915050565b61320e816131cf565b811461321957600080fd5b50565b60008135905061322b81613205565b92915050565b60006020828403121561324757613246613140565b5b60006132558482850161321c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561329857808201518184015260208101905061327d565b60008484015250505050565b6000601f19601f8301169050919050565b60006132c08261325e565b6132ca8185613269565b93506132da81856020860161327a565b6132e3816132a4565b840191505092915050565b6000602082019050818103600083015261330881846132b5565b905092915050565b6000819050919050565b61332381613310565b811461332e57600080fd5b50565b6000813590506133408161331a565b92915050565b60006020828403121561335c5761335b613140565b5b600061336a84828501613331565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061339e82613373565b9050919050565b6133ae81613393565b82525050565b60006020820190506133c960008301846133a5565b92915050565b6133d881613393565b81146133e357600080fd5b50565b6000813590506133f5816133cf565b92915050565b6000806040838503121561341257613411613140565b5b6000613420858286016133e6565b925050602061343185828601613331565b9150509250929050565b61344481613310565b82525050565b600060208201905061345f600083018461343b565b92915050565b60008060006060848603121561347e5761347d613140565b5b600061348c868287016133e6565b935050602061349d868287016133e6565b92505060406134ae86828701613331565b9150509250925092565b6000602082840312156134ce576134cd613140565b5b60006134dc848285016133e6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61351a81613310565b82525050565b600061352c8383613511565b60208301905092915050565b6000602082019050919050565b6000613550826134e5565b61355a81856134f0565b935061356583613501565b8060005b8381101561359657815161357d8882613520565b975061358883613538565b925050600181019050613569565b5085935050505092915050565b600060208201905081810360008301526135bd8184613545565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613607826132a4565b810181811067ffffffffffffffff82111715613626576136256135cf565b5b80604052505050565b6000613639613136565b905061364582826135fe565b919050565b600067ffffffffffffffff821115613665576136646135cf565b5b61366e826132a4565b9050602081019050919050565b82818337600083830152505050565b600061369d6136988461364a565b61362f565b9050828152602081018484840111156136b9576136b86135ca565b5b6136c484828561367b565b509392505050565b600082601f8301126136e1576136e06135c5565b5b81356136f184826020860161368a565b91505092915050565b6000602082840312156137105761370f613140565b5b600082013567ffffffffffffffff81111561372e5761372d613145565b5b61373a848285016136cc565b91505092915050565b6000806040838503121561375a57613759613140565b5b6000613768858286016133e6565b92505060206137798582860161321c565b9150509250929050565b600067ffffffffffffffff82111561379e5761379d6135cf565b5b6137a7826132a4565b9050602081019050919050565b60006137c76137c284613783565b61362f565b9050828152602081018484840111156137e3576137e26135ca565b5b6137ee84828561367b565b509392505050565b600082601f83011261380b5761380a6135c5565b5b813561381b8482602086016137b4565b91505092915050565b6000806000806080858703121561383e5761383d613140565b5b600061384c878288016133e6565b945050602061385d878288016133e6565b935050604061386e87828801613331565b925050606085013567ffffffffffffffff81111561388f5761388e613145565b5b61389b878288016137f6565b91505092959194509250565b600080604083850312156138be576138bd613140565b5b60006138cc858286016133e6565b92505060206138dd858286016133e6565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061391d602083613269565b9150613928826138e7565b602082019050919050565b6000602082019050818103600083015261394c81613910565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061399a57607f821691505b6020821081036139ad576139ac613953565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6000613a0f602d83613269565b9150613a1a826139b3565b604082019050919050565b60006020820190508181036000830152613a3e81613a02565b9050919050565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b6000613aa1602283613269565b9150613aac82613a45565b604082019050919050565b60006020820190508181036000830152613ad081613a94565b9050919050565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b6000613b33603983613269565b9150613b3e82613ad7565b604082019050919050565b60006020820190508181036000830152613b6281613b26565b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc5602283613269565b9150613bd082613b69565b604082019050919050565b60006020820190508181036000830152613bf481613bb8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c3582613310565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c6757613c66613bfb565b5b600182019050919050565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b6000613cce602e83613269565b9150613cd982613c72565b604082019050919050565b60006020820190508181036000830152613cfd81613cc1565b9050919050565b600081905092915050565b50565b6000613d1f600083613d04565b9150613d2a82613d0f565b600082019050919050565b6000613d4082613d12565b9150819050919050565b7f5769746864726177206661696c65642100000000000000000000000000000000600082015250565b6000613d80601083613269565b9150613d8b82613d4a565b602082019050919050565b60006020820190508181036000830152613daf81613d73565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e41602383613269565b9150613e4c82613de5565b604082019050919050565b60006020820190508181036000830152613e7081613e34565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ed97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613e9c565b613ee38683613e9c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613f20613f1b613f1684613310565b613efb565b613310565b9050919050565b6000819050919050565b613f3a83613f05565b613f4e613f4682613f27565b848454613ea9565b825550505050565b600090565b613f63613f56565b613f6e818484613f31565b505050565b5b81811015613f9257613f87600082613f5b565b600181019050613f74565b5050565b601f821115613fd757613fa881613e77565b613fb184613e8c565b81016020851015613fc0578190505b613fd4613fcc85613e8c565b830182613f73565b50505b505050565b600082821c905092915050565b6000613ffa60001984600802613fdc565b1980831691505092915050565b60006140138383613fe9565b9150826002028217905092915050565b61402c8261325e565b67ffffffffffffffff811115614045576140446135cf565b5b61404f8254613982565b61405a828285613f96565b600060209050601f83116001811461408d576000841561407b578287015190505b6140858582614007565b8655506140ed565b601f19841661409b86613e77565b60005b828110156140c35784890151825560018201915060208501945060208101905061409e565b868310156140e057848901516140dc601f891682613fe9565b8355505b6001600288020188555050505b505050505050565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000614151602b83613269565b915061415c826140f5565b604082019050919050565b6000602082019050818103600083015261418081614144565b9050919050565b7f5061757365640000000000000000000000000000000000000000000000000000600082015250565b60006141bd600683613269565b91506141c882614187565b602082019050919050565b600060208201905081810360008301526141ec816141b0565b9050919050565b60006141fe82613310565b915061420983613310565b925082820190508082111561422157614220613bfb565b5b92915050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b600061425d601283613269565b915061426882614227565b602082019050919050565b6000602082019050818103600083015261428c81614250565b9050919050565b7f4e6f2030206d696e747300000000000000000000000000000000000000000000600082015250565b60006142c9600a83613269565b91506142d482614293565b602082019050919050565b600060208201905081810360008301526142f8816142bc565b9050919050565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b6000614335600c83613269565b9150614340826142ff565b602082019050919050565b6000602082019050818103600083015261436481614328565b9050919050565b7f457863657373206d617820706572206672656520747800000000000000000000600082015250565b60006143a1601683613269565b91506143ac8261436b565b602082019050919050565b600060208201905081810360008301526143d081614394565b9050919050565b7f457863657373206d617820706572207061696420747800000000000000000000600082015250565b600061440d601683613269565b9150614418826143d7565b602082019050919050565b6000602082019050818103600083015261443c81614400565b9050919050565b600061444e82613310565b915061445983613310565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561449257614491613bfb565b5b828202905092915050565b7f496e76616c69642066756e64732070726f766964656400000000000000000000600082015250565b60006144d3601683613269565b91506144de8261449d565b602082019050919050565b60006020820190508181036000830152614502816144c6565b9050919050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b600061453f601a83613269565b915061454a82614509565b602082019050919050565b6000602082019050818103600083015261456e81614532565b9050919050565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b60006145d1603383613269565b91506145dc82614575565b604082019050919050565b60006020820190508181036000830152614600816145c4565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614663602f83613269565b915061466e82614607565b604082019050919050565b6000602082019050818103600083015261469281614656565b9050919050565b600081905092915050565b60006146af8261325e565b6146b98185614699565b93506146c981856020860161327a565b80840191505092915050565b600081546146e281613982565b6146ec8186614699565b94506001821660008114614707576001811461471c5761474f565b60ff198316865281151582028601935061474f565b61472585613e77565b60005b8381101561474757815481890152600182019150602081019050614728565b838801955050505b50505092915050565b600061476482866146a4565b915061477082856146a4565b915061477c82846146d5565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147e5602683613269565b91506147f082614789565b604082019050919050565b60006020820190508181036000830152614814816147d8565b9050919050565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b6000614877603283613269565b91506148828261481b565b604082019050919050565b600060208201905081810360008301526148a68161486a565b9050919050565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b6000614909602683613269565b9150614914826148ad565b604082019050919050565b60006020820190508181036000830152614938816148fc565b9050919050565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061499b602583613269565b91506149a68261493f565b604082019050919050565b600060208201905081810360008301526149ca8161498e565b9050919050565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b6000614a2d602a83613269565b9150614a38826149d1565b604082019050919050565b60006020820190508181036000830152614a5c81614a20565b9050919050565b6000614a6e82613310565b915060008203614a8157614a80613bfb565b5b600182039050919050565b600081519050919050565b600082825260208201905092915050565b6000614ab382614a8c565b614abd8185614a97565b9350614acd81856020860161327a565b614ad6816132a4565b840191505092915050565b6000608082019050614af660008301876133a5565b614b0360208301866133a5565b614b10604083018561343b565b8181036060830152614b228184614aa8565b905095945050505050565b600081519050614b3c81613176565b92915050565b600060208284031215614b5857614b57613140565b5b6000614b6684828501614b2d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ba982613310565b9150614bb483613310565b925082614bc457614bc3614b6f565b5b828204905092915050565b6000614bda82613310565b9150614be583613310565b9250828203905081811115614bfd57614bfc613bfb565b5b92915050565b6000614c0e82613310565b9150614c1983613310565b925082614c2957614c28614b6f565b5b828206905092915050565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c90602183613269565b9150614c9b82614c34565b604082019050919050565b60006020820190508181036000830152614cbf81614c83565b9050919050565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b6000614cfc601d83613269565b9150614d0782614cc6565b602082019050919050565b60006020820190508181036000830152614d2b81614cef565b9050919050565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f7220300000000000000000000000000000000000000000000000000000000000602082015250565b6000614d8e602383613269565b9150614d9982614d32565b604082019050919050565b60006020820190508181036000830152614dbd81614d81565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6000614deb82614dc4565b9150614df683614dc4565b925082820190506fffffffffffffffffffffffffffffffff811115614e1e57614e1d613bfb565b5b9291505056fea26469706673582212208eca2a4c72ff054739e830049cf0f78623141933fa02e5c3b8045fb8d2aac53564736f6c63430008100033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001820506978656c20436c61737369632043686172616374657200000000000000000000000000000000000000000000000000000000000000000000000000000003504343000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d62634275726936474e613479486b704161375432686664323679644b504870666d743276414b3331466859520000000000000000000000

Deployed Bytecode

0x6080604052600436106102305760003560e01c80635c975abb1161012e578063a475b5dd116100ab578063da3ef23f1161006f578063da3ef23f1461081e578063e985e9c514610847578063f2c4ce1e14610884578063f2fde38b146108ad578063f43a22dc146108d657610230565b8063a475b5dd1461074b578063b88d4fde14610762578063c66828621461078b578063c87b56dd146107b6578063d5abeb01146107f357610230565b80638069876d116100f25780638069876d146106855780638da5cb5b146106b057806395d89b41146106db578063a0712d6814610706578063a22cb4651461072257610230565b80635c975abb146105a05780636352211e146105cb57806370a0823114610608578063715018a6146106455780637f00c7a61461065c57610230565b806323b872dd116101bc57806344a0d68a1161018057806344a0d68a146104bb578063463fff79146104e45780634f6ccce71461050f578063518302271461054c57806355f804b31461057757610230565b806323b872dd146103d85780632f745c59146104015780633ccfd60b1461043e57806342842e0e14610455578063438b63001461047e57610230565b8063081c8c4411610203578063081c8c4414610303578063095ea7b31461032e57806313faede61461035757806318160ddd14610382578063239c70ae146103ad57610230565b806301ffc9a71461023557806302329a291461027257806306fdde031461029b578063081812fc146102c6575b600080fd5b34801561024157600080fd5b5061025c600480360381019061025791906131a2565b610901565b60405161026991906131ea565b60405180910390f35b34801561027e57600080fd5b5061029960048036038101906102949190613231565b610a4b565b005b3480156102a757600080fd5b506102b0610ae4565b6040516102bd91906132ee565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190613346565b610b76565b6040516102fa91906133b4565b60405180910390f35b34801561030f57600080fd5b50610318610bfb565b60405161032591906132ee565b60405180910390f35b34801561033a57600080fd5b50610355600480360381019061035091906133fb565b610c89565b005b34801561036357600080fd5b5061036c610da1565b604051610379919061344a565b60405180910390f35b34801561038e57600080fd5b50610397610da7565b6040516103a4919061344a565b60405180910390f35b3480156103b957600080fd5b506103c2610db0565b6040516103cf919061344a565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190613465565b610db6565b005b34801561040d57600080fd5b50610428600480360381019061042391906133fb565b610dc6565b604051610435919061344a565b60405180910390f35b34801561044a57600080fd5b50610453610fc2565b005b34801561046157600080fd5b5061047c60048036038101906104779190613465565b6110f4565b005b34801561048a57600080fd5b506104a560048036038101906104a091906134b8565b611114565b6040516104b291906135a3565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613346565b6111c2565b005b3480156104f057600080fd5b506104f9611248565b604051610506919061344a565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190613346565b61124d565b604051610543919061344a565b60405180910390f35b34801561055857600080fd5b506105616112a0565b60405161056e91906131ea565b60405180910390f35b34801561058357600080fd5b5061059e600480360381019061059991906136fa565b6112b3565b005b3480156105ac57600080fd5b506105b5611342565b6040516105c291906131ea565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613346565b611355565b6040516105ff91906133b4565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a91906134b8565b61136b565b60405161063c919061344a565b60405180910390f35b34801561065157600080fd5b5061065a611453565b005b34801561066857600080fd5b50610683600480360381019061067e9190613346565b6114db565b005b34801561069157600080fd5b5061069a611561565b6040516106a7919061344a565b60405180910390f35b3480156106bc57600080fd5b506106c5611567565b6040516106d291906133b4565b60405180910390f35b3480156106e757600080fd5b506106f0611591565b6040516106fd91906132ee565b60405180910390f35b610720600480360381019061071b9190613346565b611623565b005b34801561072e57600080fd5b5061074960048036038101906107449190613743565b611882565b005b34801561075757600080fd5b50610760611a02565b005b34801561076e57600080fd5b5061078960048036038101906107849190613824565b611a9b565b005b34801561079757600080fd5b506107a0611af7565b6040516107ad91906132ee565b60405180910390f35b3480156107c257600080fd5b506107dd60048036038101906107d89190613346565b611b85565b6040516107ea91906132ee565b60405180910390f35b3480156107ff57600080fd5b50610808611cdd565b604051610815919061344a565b60405180910390f35b34801561082a57600080fd5b50610845600480360381019061084091906136fa565b611ce3565b005b34801561085357600080fd5b5061086e600480360381019061086991906138a7565b611d72565b60405161087b91906131ea565b60405180910390f35b34801561089057600080fd5b506108ab60048036038101906108a691906136fa565b611e06565b005b3480156108b957600080fd5b506108d460048036038101906108cf91906134b8565b611e95565b005b3480156108e257600080fd5b506108eb611f8c565b6040516108f8919061344a565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109cc57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a3457507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a445750610a4382611f91565b5b9050919050565b610a53611ffb565b73ffffffffffffffffffffffffffffffffffffffff16610a71611567565b73ffffffffffffffffffffffffffffffffffffffff1614610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe90613933565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b606060018054610af390613982565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1f90613982565b8015610b6c5780601f10610b4157610100808354040283529160200191610b6c565b820191906000526020600020905b815481529060010190602001808311610b4f57829003601f168201915b5050505050905090565b6000610b8182612003565b610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790613a25565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600f8054610c0890613982565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3490613982565b8015610c815780601f10610c5657610100808354040283529160200191610c81565b820191906000526020600020905b815481529060010190602001808311610c6457829003601f168201915b505050505081565b6000610c9482611355565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90613ab7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d23611ffb565b73ffffffffffffffffffffffffffffffffffffffff161480610d525750610d5181610d4c611ffb565b611d72565b5b610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8890613b49565b60405180910390fd5b610d9c838383612010565b505050565b600b5481565b60008054905090565b600d5481565b610dc18383836120c2565b505050565b6000610dd18361136b565b8210610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0990613bdb565b60405180910390fd5b6000610e1c610da7565b905060008060005b83811015610f80576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610f1657806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f6c57868403610f5d578195505050505050610fbc565b8380610f6890613c2a565b9450505b508080610f7890613c2a565b915050610e24565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390613ce4565b60405180910390fd5b92915050565b610fca611ffb565b73ffffffffffffffffffffffffffffffffffffffff16610fe8611567565b73ffffffffffffffffffffffffffffffffffffffff161461103e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103590613933565b60405180910390fd5b6000611048611567565b73ffffffffffffffffffffffffffffffffffffffff164760405161106b90613d35565b60006040518083038185875af1925050503d80600081146110a8576040519150601f19603f3d011682016040523d82523d6000602084013e6110ad565b606091505b50509050806110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e890613d96565b60405180910390fd5b50565b61110f83838360405180602001604052806000815250611a9b565b505050565b606060006111218361136b565b905060008167ffffffffffffffff81111561113f5761113e6135cf565b5b60405190808252806020026020018201604052801561116d5781602001602082028036833780820191505090505b50905060005b828110156111b7576111858582610dc6565b82828151811061119857611197613db6565b5b60200260200101818152505080806111af90613c2a565b915050611173565b508092505050919050565b6111ca611ffb565b73ffffffffffffffffffffffffffffffffffffffff166111e8611567565b73ffffffffffffffffffffffffffffffffffffffff161461123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590613933565b60405180910390fd5b80600b8190555050565b600281565b6000611257610da7565b8210611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90613e57565b60405180910390fd5b819050919050565b600e60019054906101000a900460ff1681565b6112bb611ffb565b73ffffffffffffffffffffffffffffffffffffffff166112d9611567565b73ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132690613933565b60405180910390fd5b806009908161133e9190614023565b5050565b600e60009054906101000a900460ff1681565b600061136082612667565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d290614167565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61145b611ffb565b73ffffffffffffffffffffffffffffffffffffffff16611479611567565b73ffffffffffffffffffffffffffffffffffffffff16146114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690613933565b60405180910390fd5b6114d960006127c2565b565b6114e3611ffb565b73ffffffffffffffffffffffffffffffffffffffff16611501611567565b73ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90613933565b60405180910390fd5b80600d8190555050565b6103e881565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546115a090613982565b80601f01602080910402602001604051908101604052809291908181526020018280546115cc90613982565b80156116195780601f106115ee57610100808354040283529160200191611619565b820191906000526020600020905b8154815290600101906020018083116115fc57829003601f168201915b5050505050905090565b600061162d611ffb565b9050600e60009054906101000a900460ff161561167f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611676906141d3565b60405180910390fd5b81611688610da7565b61169291906141f3565b600c5410156116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90614273565b60405180910390fd5b60008211611719576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611710906142df565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e9061434b565b60405180910390fd5b61178f610da7565b6103e8106117e05781600210156117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d2906143b7565b60405180910390fd5b611874565b8160141015611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90614423565b60405180910390fd5b34600b54836118339190614443565b14611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a906144e9565b60405180910390fd5b5b61187e8183612888565b5050565b61188a611ffb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee90614555565b60405180910390fd5b8060066000611904611ffb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166119b1611ffb565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119f691906131ea565b60405180910390a35050565b611a0a611ffb565b73ffffffffffffffffffffffffffffffffffffffff16611a28611567565b73ffffffffffffffffffffffffffffffffffffffff1614611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7590613933565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550565b611aa68484846120c2565b611ab2848484846128a6565b611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae8906145e7565b60405180910390fd5b50505050565b600a8054611b0490613982565b80601f0160208091040260200160405190810160405280929190818152602001828054611b3090613982565b8015611b7d5780601f10611b5257610100808354040283529160200191611b7d565b820191906000526020600020905b815481529060010190602001808311611b6057829003601f168201915b505050505081565b6060611b9082612003565b611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc690614679565b60405180910390fd5b60001515600e60019054906101000a900460ff16151503611c7c57600f8054611bf790613982565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2390613982565b8015611c705780601f10611c4557610100808354040283529160200191611c70565b820191906000526020600020905b815481529060010190602001808311611c5357829003601f168201915b50505050509050611cd8565b6000611c86612a2d565b90506000815111611ca65760405180602001604052806000815250611cd4565b80611cb084612abf565b600a604051602001611cc493929190614758565b6040516020818303038152906040525b9150505b919050565b600c5481565b611ceb611ffb565b73ffffffffffffffffffffffffffffffffffffffff16611d09611567565b73ffffffffffffffffffffffffffffffffffffffff1614611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5690613933565b60405180910390fd5b80600a9081611d6e9190614023565b5050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611e0e611ffb565b73ffffffffffffffffffffffffffffffffffffffff16611e2c611567565b73ffffffffffffffffffffffffffffffffffffffff1614611e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7990613933565b60405180910390fd5b80600f9081611e919190614023565b5050565b611e9d611ffb565b73ffffffffffffffffffffffffffffffffffffffff16611ebb611567565b73ffffffffffffffffffffffffffffffffffffffff1614611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613933565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f77906147fb565b60405180910390fd5b611f89816127c2565b50565b601481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006120cd82612667565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166120f4611ffb565b73ffffffffffffffffffffffffffffffffffffffff1614806121505750612119611ffb565b73ffffffffffffffffffffffffffffffffffffffff1661213884610b76565b73ffffffffffffffffffffffffffffffffffffffff16145b8061216c575061216b8260000151612166611ffb565b611d72565b5b9050806121ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a59061488d565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612220576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122179061491f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361228f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612286906149b1565b60405180910390fd5b61229c8585856001612c1f565b6122ac6000848460000151612010565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846124b291906141f3565b9050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036125f75761252781612003565b156125f6576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506003600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461265f8686866001612c25565b505050505050565b61266f6130fc565b61267882612003565b6126b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ae90614a43565b60405180910390fd5b60008290505b6000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146127a95780925050506127bd565b5080806127b590614a63565b9150506126bd565b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6128a2828260405180602001604052806000815250612c2b565b5050565b60006128c78473ffffffffffffffffffffffffffffffffffffffff166130e9565b15612a20578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026128f0611ffb565b8786866040518563ffffffff1660e01b81526004016129129493929190614ae1565b6020604051808303816000875af192505050801561294e57506040513d601f19601f8201168201806040525081019061294b9190614b42565b60015b6129d0573d806000811461297e576040519150601f19603f3d011682016040523d82523d6000602084013e612983565b606091505b5060008151036129c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bf906145e7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612a25565b600190505b949350505050565b606060098054612a3c90613982565b80601f0160208091040260200160405190810160405280929190818152602001828054612a6890613982565b8015612ab55780601f10612a8a57610100808354040283529160200191612ab5565b820191906000526020600020905b815481529060010190602001808311612a9857829003601f168201915b5050505050905090565b606060008203612b06576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612c1a565b600082905060005b60008214612b38578080612b2190613c2a565b915050600a82612b319190614b9e565b9150612b0e565b60008167ffffffffffffffff811115612b5457612b536135cf565b5b6040519080825280601f01601f191660200182016040528015612b865781602001600182028036833780820191505090505b5090505b60008514612c1357600182612b9f9190614bcf565b9150600a85612bae9190614c03565b6030612bba91906141f3565b60f81b818381518110612bd057612bcf613db6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612c0c9190614b9e565b9450612b8a565b8093505050505b919050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9790614ca6565b60405180910390fd5b612ca981612003565b15612ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce090614d12565b60405180910390fd5b60008311612d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2390614da4565b60405180910390fd5b612d396000858386612c1f565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612e369190614de0565b6fffffffffffffffffffffffffffffffff168152602001858360200151612e5d9190614de0565b6fffffffffffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b858110156130cc57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461306c60008884886128a6565b6130ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a2906145e7565b60405180910390fd5b81806130b690613c2a565b92505080806130c490613c2a565b915050612ffb565b50806000819055506130e16000878588612c25565b505050505050565b600080823b905060008111915050919050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61317f8161314a565b811461318a57600080fd5b50565b60008135905061319c81613176565b92915050565b6000602082840312156131b8576131b7613140565b5b60006131c68482850161318d565b91505092915050565b60008115159050919050565b6131e4816131cf565b82525050565b60006020820190506131ff60008301846131db565b92915050565b61320e816131cf565b811461321957600080fd5b50565b60008135905061322b81613205565b92915050565b60006020828403121561324757613246613140565b5b60006132558482850161321c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561329857808201518184015260208101905061327d565b60008484015250505050565b6000601f19601f8301169050919050565b60006132c08261325e565b6132ca8185613269565b93506132da81856020860161327a565b6132e3816132a4565b840191505092915050565b6000602082019050818103600083015261330881846132b5565b905092915050565b6000819050919050565b61332381613310565b811461332e57600080fd5b50565b6000813590506133408161331a565b92915050565b60006020828403121561335c5761335b613140565b5b600061336a84828501613331565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061339e82613373565b9050919050565b6133ae81613393565b82525050565b60006020820190506133c960008301846133a5565b92915050565b6133d881613393565b81146133e357600080fd5b50565b6000813590506133f5816133cf565b92915050565b6000806040838503121561341257613411613140565b5b6000613420858286016133e6565b925050602061343185828601613331565b9150509250929050565b61344481613310565b82525050565b600060208201905061345f600083018461343b565b92915050565b60008060006060848603121561347e5761347d613140565b5b600061348c868287016133e6565b935050602061349d868287016133e6565b92505060406134ae86828701613331565b9150509250925092565b6000602082840312156134ce576134cd613140565b5b60006134dc848285016133e6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61351a81613310565b82525050565b600061352c8383613511565b60208301905092915050565b6000602082019050919050565b6000613550826134e5565b61355a81856134f0565b935061356583613501565b8060005b8381101561359657815161357d8882613520565b975061358883613538565b925050600181019050613569565b5085935050505092915050565b600060208201905081810360008301526135bd8184613545565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613607826132a4565b810181811067ffffffffffffffff82111715613626576136256135cf565b5b80604052505050565b6000613639613136565b905061364582826135fe565b919050565b600067ffffffffffffffff821115613665576136646135cf565b5b61366e826132a4565b9050602081019050919050565b82818337600083830152505050565b600061369d6136988461364a565b61362f565b9050828152602081018484840111156136b9576136b86135ca565b5b6136c484828561367b565b509392505050565b600082601f8301126136e1576136e06135c5565b5b81356136f184826020860161368a565b91505092915050565b6000602082840312156137105761370f613140565b5b600082013567ffffffffffffffff81111561372e5761372d613145565b5b61373a848285016136cc565b91505092915050565b6000806040838503121561375a57613759613140565b5b6000613768858286016133e6565b92505060206137798582860161321c565b9150509250929050565b600067ffffffffffffffff82111561379e5761379d6135cf565b5b6137a7826132a4565b9050602081019050919050565b60006137c76137c284613783565b61362f565b9050828152602081018484840111156137e3576137e26135ca565b5b6137ee84828561367b565b509392505050565b600082601f83011261380b5761380a6135c5565b5b813561381b8482602086016137b4565b91505092915050565b6000806000806080858703121561383e5761383d613140565b5b600061384c878288016133e6565b945050602061385d878288016133e6565b935050604061386e87828801613331565b925050606085013567ffffffffffffffff81111561388f5761388e613145565b5b61389b878288016137f6565b91505092959194509250565b600080604083850312156138be576138bd613140565b5b60006138cc858286016133e6565b92505060206138dd858286016133e6565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061391d602083613269565b9150613928826138e7565b602082019050919050565b6000602082019050818103600083015261394c81613910565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061399a57607f821691505b6020821081036139ad576139ac613953565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6000613a0f602d83613269565b9150613a1a826139b3565b604082019050919050565b60006020820190508181036000830152613a3e81613a02565b9050919050565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b6000613aa1602283613269565b9150613aac82613a45565b604082019050919050565b60006020820190508181036000830152613ad081613a94565b9050919050565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b6000613b33603983613269565b9150613b3e82613ad7565b604082019050919050565b60006020820190508181036000830152613b6281613b26565b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc5602283613269565b9150613bd082613b69565b604082019050919050565b60006020820190508181036000830152613bf481613bb8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c3582613310565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c6757613c66613bfb565b5b600182019050919050565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b6000613cce602e83613269565b9150613cd982613c72565b604082019050919050565b60006020820190508181036000830152613cfd81613cc1565b9050919050565b600081905092915050565b50565b6000613d1f600083613d04565b9150613d2a82613d0f565b600082019050919050565b6000613d4082613d12565b9150819050919050565b7f5769746864726177206661696c65642100000000000000000000000000000000600082015250565b6000613d80601083613269565b9150613d8b82613d4a565b602082019050919050565b60006020820190508181036000830152613daf81613d73565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e41602383613269565b9150613e4c82613de5565b604082019050919050565b60006020820190508181036000830152613e7081613e34565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ed97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613e9c565b613ee38683613e9c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613f20613f1b613f1684613310565b613efb565b613310565b9050919050565b6000819050919050565b613f3a83613f05565b613f4e613f4682613f27565b848454613ea9565b825550505050565b600090565b613f63613f56565b613f6e818484613f31565b505050565b5b81811015613f9257613f87600082613f5b565b600181019050613f74565b5050565b601f821115613fd757613fa881613e77565b613fb184613e8c565b81016020851015613fc0578190505b613fd4613fcc85613e8c565b830182613f73565b50505b505050565b600082821c905092915050565b6000613ffa60001984600802613fdc565b1980831691505092915050565b60006140138383613fe9565b9150826002028217905092915050565b61402c8261325e565b67ffffffffffffffff811115614045576140446135cf565b5b61404f8254613982565b61405a828285613f96565b600060209050601f83116001811461408d576000841561407b578287015190505b6140858582614007565b8655506140ed565b601f19841661409b86613e77565b60005b828110156140c35784890151825560018201915060208501945060208101905061409e565b868310156140e057848901516140dc601f891682613fe9565b8355505b6001600288020188555050505b505050505050565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000614151602b83613269565b915061415c826140f5565b604082019050919050565b6000602082019050818103600083015261418081614144565b9050919050565b7f5061757365640000000000000000000000000000000000000000000000000000600082015250565b60006141bd600683613269565b91506141c882614187565b602082019050919050565b600060208201905081810360008301526141ec816141b0565b9050919050565b60006141fe82613310565b915061420983613310565b925082820190508082111561422157614220613bfb565b5b92915050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b600061425d601283613269565b915061426882614227565b602082019050919050565b6000602082019050818103600083015261428c81614250565b9050919050565b7f4e6f2030206d696e747300000000000000000000000000000000000000000000600082015250565b60006142c9600a83613269565b91506142d482614293565b602082019050919050565b600060208201905081810360008301526142f8816142bc565b9050919050565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b6000614335600c83613269565b9150614340826142ff565b602082019050919050565b6000602082019050818103600083015261436481614328565b9050919050565b7f457863657373206d617820706572206672656520747800000000000000000000600082015250565b60006143a1601683613269565b91506143ac8261436b565b602082019050919050565b600060208201905081810360008301526143d081614394565b9050919050565b7f457863657373206d617820706572207061696420747800000000000000000000600082015250565b600061440d601683613269565b9150614418826143d7565b602082019050919050565b6000602082019050818103600083015261443c81614400565b9050919050565b600061444e82613310565b915061445983613310565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561449257614491613bfb565b5b828202905092915050565b7f496e76616c69642066756e64732070726f766964656400000000000000000000600082015250565b60006144d3601683613269565b91506144de8261449d565b602082019050919050565b60006020820190508181036000830152614502816144c6565b9050919050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b600061453f601a83613269565b915061454a82614509565b602082019050919050565b6000602082019050818103600083015261456e81614532565b9050919050565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b60006145d1603383613269565b91506145dc82614575565b604082019050919050565b60006020820190508181036000830152614600816145c4565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614663602f83613269565b915061466e82614607565b604082019050919050565b6000602082019050818103600083015261469281614656565b9050919050565b600081905092915050565b60006146af8261325e565b6146b98185614699565b93506146c981856020860161327a565b80840191505092915050565b600081546146e281613982565b6146ec8186614699565b94506001821660008114614707576001811461471c5761474f565b60ff198316865281151582028601935061474f565b61472585613e77565b60005b8381101561474757815481890152600182019150602081019050614728565b838801955050505b50505092915050565b600061476482866146a4565b915061477082856146a4565b915061477c82846146d5565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147e5602683613269565b91506147f082614789565b604082019050919050565b60006020820190508181036000830152614814816147d8565b9050919050565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b6000614877603283613269565b91506148828261481b565b604082019050919050565b600060208201905081810360008301526148a68161486a565b9050919050565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b6000614909602683613269565b9150614914826148ad565b604082019050919050565b60006020820190508181036000830152614938816148fc565b9050919050565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061499b602583613269565b91506149a68261493f565b604082019050919050565b600060208201905081810360008301526149ca8161498e565b9050919050565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b6000614a2d602a83613269565b9150614a38826149d1565b604082019050919050565b60006020820190508181036000830152614a5c81614a20565b9050919050565b6000614a6e82613310565b915060008203614a8157614a80613bfb565b5b600182039050919050565b600081519050919050565b600082825260208201905092915050565b6000614ab382614a8c565b614abd8185614a97565b9350614acd81856020860161327a565b614ad6816132a4565b840191505092915050565b6000608082019050614af660008301876133a5565b614b0360208301866133a5565b614b10604083018561343b565b8181036060830152614b228184614aa8565b905095945050505050565b600081519050614b3c81613176565b92915050565b600060208284031215614b5857614b57613140565b5b6000614b6684828501614b2d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ba982613310565b9150614bb483613310565b925082614bc457614bc3614b6f565b5b828204905092915050565b6000614bda82613310565b9150614be583613310565b9250828203905081811115614bfd57614bfc613bfb565b5b92915050565b6000614c0e82613310565b9150614c1983613310565b925082614c2957614c28614b6f565b5b828206905092915050565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c90602183613269565b9150614c9b82614c34565b604082019050919050565b60006020820190508181036000830152614cbf81614c83565b9050919050565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b6000614cfc601d83613269565b9150614d0782614cc6565b602082019050919050565b60006020820190508181036000830152614d2b81614cef565b9050919050565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f7220300000000000000000000000000000000000000000000000000000000000602082015250565b6000614d8e602383613269565b9150614d9982614d32565b604082019050919050565b60006020820190508181036000830152614dbd81614d81565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6000614deb82614dc4565b9150614df683614dc4565b925082820190506fffffffffffffffffffffffffffffffff811115614e1e57614e1d613bfb565b5b9291505056fea26469706673582212208eca2a4c72ff054739e830049cf0f78623141933fa02e5c3b8045fb8d2aac53564736f6c63430008100033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001820506978656c20436c61737369632043686172616374657200000000000000000000000000000000000000000000000000000000000000000000000000000003504343000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d62634275726936474e613479486b704161375432686664323679644b504870666d743276414b3331466859520000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Pixel Classic Character
Arg [1] : _symbol (string): PCC
Arg [2] : _initBaseURI (string):
Arg [3] : _initNotRevealedUri (string): ipfs://QmbcBuri6GNa4yHkpAa7T2hfd26ydKPHpfmt2vAK31FhYR

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000018
Arg [5] : 20506978656c20436c6173736963204368617261637465720000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 5043430000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [10] : 697066733a2f2f516d62634275726936474e613479486b704161375432686664
Arg [11] : 323679644b504870666d743276414b3331466859520000000000000000000000


Deployed Bytecode Sourcemap

20809:3604:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12516:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23942:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13992:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15107:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21340:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14680:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21165:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11364:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21239:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15815:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11679:823;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24022:165;;;;;;;;;;;;;:::i;:::-;;15989:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22428:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23374:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21022:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11478:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21307:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23710:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21277:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13854:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12902:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;977:103;;;;;;;;;;;;;:::i;:::-;;23460:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21114:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;743:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14106:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21767:655;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15335:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23301:65;;;;;;;;;;;;;:::i;:::-;;16180:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20980:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22782:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21203:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23814:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15637:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23584:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1094:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21070:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12516:372;12618:4;12670:25;12655:40;;;:11;:40;;;;:105;;;;12727:33;12712:48;;;:11;:48;;;;12655:105;:172;;;;12792:35;12777:50;;;:11;:50;;;;12655:172;:225;;;;12844:36;12868:11;12844:23;:36::i;:::-;12655:225;12635:245;;12516:372;;;:::o;23942:73::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24003:6:::1;23994;;:15;;;;;;;;;;;;;;;;;;23942:73:::0;:::o;13992:100::-;14046:13;14079:5;14072:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13992:100;:::o;15107:214::-;15175:7;15203:16;15211:7;15203;:16::i;:::-;15195:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15289:15;:24;15305:7;15289:24;;;;;;;;;;;;;;;;;;;;;15282:31;;15107:214;;;:::o;21340:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14680:413::-;14753:13;14769:24;14785:7;14769:15;:24::i;:::-;14753:40;;14818:5;14812:11;;:2;:11;;;14804:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;14913:5;14897:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;14922:37;14939:5;14946:12;:10;:12::i;:::-;14922:16;:37::i;:::-;14897:62;14875:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;15057:28;15066:2;15070:7;15079:5;15057:8;:28::i;:::-;14742:351;14680:413;;:::o;21165:33::-;;;;:::o;11364:100::-;11417:7;11444:12;;11437:19;;11364:100;:::o;21239:33::-;;;;:::o;15815:162::-;15941:28;15951:4;15957:2;15961:7;15941:9;:28::i;:::-;15815:162;;;:::o;11679:823::-;11768:7;11804:16;11814:5;11804:9;:16::i;:::-;11796:5;:24;11788:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11870:22;11895:13;:11;:13::i;:::-;11870:38;;11919:19;11953:25;12007:9;12002:426;12026:14;12022:1;:18;12002:426;;;12062:31;12096:11;:14;12108:1;12096:14;;;;;;;;;;;12062:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12155:1;12129:28;;:9;:14;;;:28;;;12125:103;;12198:9;:14;;;12178:34;;12125:103;12267:5;12246:26;;:17;:26;;;12242:175;;12312:5;12297:11;:20;12293:77;;12349:1;12342:8;;;;;;;;;12293:77;12388:13;;;;;:::i;:::-;;;;12242:175;12047:381;12042:3;;;;;:::i;:::-;;;;12002:426;;;;12438:56;;;;;;;;;;:::i;:::-;;;;;;;;11679:823;;;;;:::o;24022:165::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24071:7:::1;24092;:5;:7::i;:::-;24084:21;;24113;24084:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24070:69;;;24158:2;24150:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;24059:128;24022:165::o:0;15989:177::-;16119:39;16136:4;16142:2;16146:7;16119:39;;;;;;;;;;;;:16;:39::i;:::-;15989:177;;;:::o;22428:348::-;22503:16;22531:23;22557:17;22567:6;22557:9;:17::i;:::-;22531:43;;22581:25;22623:15;22609:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22581:58;;22651:9;22646:103;22666:15;22662:1;:19;22646:103;;;22711:30;22731:6;22739:1;22711:19;:30::i;:::-;22697:8;22706:1;22697:11;;;;;;;;:::i;:::-;;;;;;;:44;;;;;22683:3;;;;;:::i;:::-;;;;22646:103;;;;22762:8;22755:15;;;;22428:348;;;:::o;23374:80::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23440:8:::1;23433:4;:15;;;;23374:80:::0;:::o;21022:43::-;21064:1;21022:43;:::o;11478:187::-;11545:7;11581:13;:11;:13::i;:::-;11573:5;:21;11565:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11652:5;11645:12;;11478:187;;;:::o;21307:28::-;;;;;;;;;;;;;:::o;23710:98::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23791:11:::1;23781:7;:21;;;;;;:::i;:::-;;23710:98:::0;:::o;21277:25::-;;;;;;;;;;;;;:::o;13854:124::-;13918:7;13945:20;13957:7;13945:11;:20::i;:::-;:25;;;13938:32;;13854:124;;;:::o;12902:221::-;12966:7;13011:1;12994:19;;:5;:19;;;12986:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;13087:12;:19;13100:5;13087:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;13079:36;;13072:43;;12902:221;;;:::o;977:103::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1042:30:::1;1069:1;1042:18;:30::i;:::-;977:103::o:0;23460:116::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23553:17:::1;23537:13;:33;;;;23460:116:::0;:::o;21114:46::-;21156:4;21114:46;:::o;743:87::-;789:7;816:6;;;;;;;;;;;809:13;;743:87;:::o;14106:104::-;14162:13;14195:7;14188:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14106:104;:::o;21767:655::-;21826:15;21844:12;:10;:12::i;:::-;21826:30;;21876:6;;;;;;;;;;;21875:7;21867:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;21941:7;21925:13;:11;:13::i;:::-;:23;;;;:::i;:::-;21912:9;;:36;;21904:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22000:1;21990:7;:11;21982:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;22048:7;22035:20;;:9;:20;;;22027:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;22107:13;:11;:13::i;:::-;21156:4;22088:32;22085:290;;22163:7;21064:1;22144:26;;22136:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22085:290;;;22251:7;21107:2;22237:21;;22229:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22327:9;22319:4;;22309:7;:14;;;;:::i;:::-;:27;22301:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22085:290;22387:27;22397:7;22406;22387:9;:27::i;:::-;21815:607;21767:655;:::o;15335:288::-;15442:12;:10;:12::i;:::-;15430:24;;:8;:24;;;15422:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15543:8;15498:18;:32;15517:12;:10;:12::i;:::-;15498:32;;;;;;;;;;;;;;;:42;15531:8;15498:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;15596:8;15567:48;;15582:12;:10;:12::i;:::-;15567:48;;;15606:8;15567:48;;;;;;:::i;:::-;;;;;;;;15335:288;;:::o;23301:65::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23356:4:::1;23345:8;;:15;;;;;;;;;;;;;;;;;;23301:65::o:0;16180:355::-;16339:28;16349:4;16355:2;16359:7;16339:9;:28::i;:::-;16400:48;16423:4;16429:2;16433:7;16442:5;16400:22;:48::i;:::-;16378:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;16180:355;;;;:::o;20980:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22782:497::-;22880:13;22921:16;22929:7;22921;:16::i;:::-;22905:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;23030:5;23018:17;;:8;;;;;;;;;;;:17;;;23015:62;;23055:14;23048:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23015:62;23085:28;23116:10;:8;:10::i;:::-;23085:41;;23171:1;23146:14;23140:28;:32;:133;;;;;;;;;;;;;;;;;23208:14;23224:18;:7;:16;:18::i;:::-;23244:13;23191:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23140:133;23133:140;;;22782:497;;;;:::o;21203:31::-;;;;:::o;23814:122::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23913:17:::1;23897:13;:33;;;;;;:::i;:::-;;23814:122:::0;:::o;15637:164::-;15734:4;15758:18;:25;15777:5;15758:25;;;;;;;;;;;;;;;:35;15784:8;15758:35;;;;;;;;;;;;;;;;;;;;;;;;;15751:42;;15637:164;;;;:::o;23584:120::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23683:15:::1;23666:14;:32;;;;;;:::i;:::-;;23584:120:::0;:::o;1094:201::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1203:1:::1;1183:22;;:8;:22;;::::0;1175:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1259:28;1278:8;1259:18;:28::i;:::-;1094:201:::0;:::o;21070:39::-;21107:2;21070:39;:::o;10287:157::-;10372:4;10411:25;10396:40;;;:11;:40;;;;10389:47;;10287:157;;;:::o;149:98::-;202:7;229:10;222:17;;149:98;:::o;16549:111::-;16606:4;16640:12;;16630:7;:22;16623:29;;16549:111;;;:::o;19443:196::-;19585:2;19558:15;:24;19574:7;19558:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;19623:7;19619:2;19603:28;;19612:5;19603:28;;;;;;;;;;;;19443:196;;;:::o;18062:1367::-;18177:35;18215:20;18227:7;18215:11;:20::i;:::-;18177:58;;18248:22;18290:13;:18;;;18274:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;18349:12;:10;:12::i;:::-;18325:36;;:20;18337:7;18325:11;:20::i;:::-;:36;;;18274:87;:154;;;;18378:50;18395:13;:18;;;18415:12;:10;:12::i;:::-;18378:16;:50::i;:::-;18274:154;18248:181;;18450:17;18442:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;18565:4;18543:26;;:13;:18;;;:26;;;18535:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;18645:1;18631:16;;:2;:16;;;18623:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18702:43;18724:4;18730:2;18734:7;18743:1;18702:21;:43::i;:::-;18768:49;18785:1;18789:7;18798:13;:18;;;18768:8;:49::i;:::-;18895:1;18865:12;:18;18878:4;18865:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18939:1;18911:12;:16;18924:2;18911:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18987:43;;;;;;;;19002:2;18987:43;;;;;;19013:15;18987:43;;;;;18964:11;:20;18976:7;18964:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19053:19;19085:1;19075:7;:11;;;;:::i;:::-;19053:33;;19142:1;19101:43;;:11;:24;19113:11;19101:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;19097:227;;19165:20;19173:11;19165:7;:20::i;:::-;19161:152;;;19233:64;;;;;;;;19248:13;:18;;;19233:64;;;;;;19268:13;:28;;;19233:64;;;;;19206:11;:24;19218:11;19206:24;;;;;;;;;;;:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19161:152;19097:227;19360:7;19356:2;19341:27;;19350:4;19341:27;;;;;;;;;;;;19379:42;19400:4;19406:2;19410:7;19419:1;19379:20;:42::i;:::-;18166:1263;;;18062:1367;;;:::o;13368:472::-;13429:21;;:::i;:::-;13471:16;13479:7;13471;:16::i;:::-;13463:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13552:12;13567:7;13552:22;;13547:216;13601:31;13635:11;:17;13647:4;13635:17;;;;;;;;;;;13601:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13697:1;13671:28;;:9;:14;;;:28;;;13667:85;;13727:9;13720:16;;;;;;13667:85;13586:177;13578:6;;;;;:::i;:::-;;;;13547:216;;13368:472;;;;:::o;1309:191::-;1383:16;1402:6;;;;;;;;;;;1383:25;;1428:8;1419:6;;:17;;;;;;;;;;;;;;;;;;1483:8;1452:40;;1473:8;1452:40;;;;;;;;;;;;1372:128;1309:191;:::o;16668:104::-;16737:27;16747:2;16751:8;16737:27;;;;;;;;;;;;:9;:27::i;:::-;16668:104;;:::o;19653:804::-;19808:4;19829:15;:2;:13;;;:15::i;:::-;19825:625;;;19881:2;19865:36;;;19902:12;:10;:12::i;:::-;19916:4;19922:7;19931:5;19865:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19861:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20128:1;20111:6;:13;:18;20107:273;;20154:61;;;;;;;;;;:::i;:::-;;;;;;;;20107:273;20330:6;20324:13;20315:6;20311:2;20307:15;20300:38;19861:534;19998:45;;;19988:55;;;:6;:55;;;;19981:62;;;;;19825:625;20434:4;20427:11;;19653:804;;;;;;;:::o;21646:102::-;21706:13;21735:7;21728:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21646:102;:::o;1729:544::-;1785:13;1836:1;1827:5;:10;1823:53;;1854:10;;;;;;;;;;;;;;;;;;;;;1823:53;1886:12;1901:5;1886:20;;1917:14;1942:78;1957:1;1949:4;:9;1942:78;;1975:8;;;;;:::i;:::-;;;;2006:2;1998:10;;;;;:::i;:::-;;;1942:78;;;2030:19;2062:6;2052:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2030:39;;2080:154;2096:1;2087:5;:10;2080:154;;2124:1;2114:11;;;;;:::i;:::-;;;2191:2;2183:5;:10;;;;:::i;:::-;2170:2;:24;;;;:::i;:::-;2157:39;;2140:6;2147;2140:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;2220:2;2211:11;;;;;:::i;:::-;;;2080:154;;;2258:6;2244:21;;;;;1729:544;;;;:::o;20471:159::-;;;;;:::o;20644:158::-;;;;;:::o;16786:1262::-;16909:20;16932:12;;16909:35;;16977:1;16963:16;;:2;:16;;;16955:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17037:21;17045:12;17037:7;:21::i;:::-;17036:22;17028:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17122:1;17111:8;:12;17103:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17176:61;17206:1;17210:2;17214:12;17228:8;17176:21;:61::i;:::-;17250:30;17283:12;:16;17296:2;17283:16;;;;;;;;;;;;;;;17250:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17329:135;;;;;;;;17385:8;17355:11;:19;;;:39;;;;:::i;:::-;17329:135;;;;;;17444:8;17409:11;:24;;;:44;;;;:::i;:::-;17329:135;;;;;17310:12;:16;17323:2;17310:16;;;;;;;;;;;;;;;:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17503:43;;;;;;;;17518:2;17503:43;;;;;;17529:15;17503:43;;;;;17475:11;:25;17487:12;17475:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17559:20;17582:12;17559:35;;17612:9;17607:325;17631:8;17627:1;:12;17607:325;;;17691:12;17687:2;17666:38;;17683:1;17666:38;;;;;;;;;;;;17745:59;17776:1;17780:2;17784:12;17798:5;17745:22;:59::i;:::-;17719:172;;;;;;;;;;;;:::i;:::-;;;;;;;;;17906:14;;;;;:::i;:::-;;;;17641:3;;;;;:::i;:::-;;;;17607:325;;;;17957:12;17942;:27;;;;17980:60;18009:1;18013:2;18017:12;18031:8;17980:20;:60::i;:::-;16898:1150;;;16786:1262;;;:::o;6537:208::-;6597:4;6626:12;6693:7;6681:20;6673:28;;6736:1;6729:4;:8;6722:15;;;6537:208;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:116::-;1588:21;1603:5;1588:21;:::i;:::-;1581:5;1578:32;1568:60;;1624:1;1621;1614:12;1568:60;1518:116;:::o;1640:133::-;1683:5;1721:6;1708:20;1699:29;;1737:30;1761:5;1737:30;:::i;:::-;1640:133;;;;:::o;1779:323::-;1835:6;1884:2;1872:9;1863:7;1859:23;1855:32;1852:119;;;1890:79;;:::i;:::-;1852:119;2010:1;2035:50;2077:7;2068:6;2057:9;2053:22;2035:50;:::i;:::-;2025:60;;1981:114;1779:323;;;;:::o;2108:99::-;2160:6;2194:5;2188:12;2178:22;;2108:99;;;:::o;2213:169::-;2297:11;2331:6;2326:3;2319:19;2371:4;2366:3;2362:14;2347:29;;2213:169;;;;:::o;2388:246::-;2469:1;2479:113;2493:6;2490:1;2487:13;2479:113;;;2578:1;2573:3;2569:11;2563:18;2559:1;2554:3;2550:11;2543:39;2515:2;2512:1;2508:10;2503:15;;2479:113;;;2626:1;2617:6;2612:3;2608:16;2601:27;2450:184;2388:246;;;:::o;2640:102::-;2681:6;2732:2;2728:7;2723:2;2716:5;2712:14;2708:28;2698:38;;2640:102;;;:::o;2748:377::-;2836:3;2864:39;2897:5;2864:39;:::i;:::-;2919:71;2983:6;2978:3;2919:71;:::i;:::-;2912:78;;2999:65;3057:6;3052:3;3045:4;3038:5;3034:16;2999:65;:::i;:::-;3089:29;3111:6;3089:29;:::i;:::-;3084:3;3080:39;3073:46;;2840:285;2748:377;;;;:::o;3131:313::-;3244:4;3282:2;3271:9;3267:18;3259:26;;3331:9;3325:4;3321:20;3317:1;3306:9;3302:17;3295:47;3359:78;3432:4;3423:6;3359:78;:::i;:::-;3351:86;;3131:313;;;;:::o;3450:77::-;3487:7;3516:5;3505:16;;3450:77;;;:::o;3533:122::-;3606:24;3624:5;3606:24;:::i;:::-;3599:5;3596:35;3586:63;;3645:1;3642;3635:12;3586:63;3533:122;:::o;3661:139::-;3707:5;3745:6;3732:20;3723:29;;3761:33;3788:5;3761:33;:::i;:::-;3661:139;;;;:::o;3806:329::-;3865:6;3914:2;3902:9;3893:7;3889:23;3885:32;3882:119;;;3920:79;;:::i;:::-;3882:119;4040:1;4065:53;4110:7;4101:6;4090:9;4086:22;4065:53;:::i;:::-;4055:63;;4011:117;3806:329;;;;:::o;4141:126::-;4178:7;4218:42;4211:5;4207:54;4196:65;;4141:126;;;:::o;4273:96::-;4310:7;4339:24;4357:5;4339:24;:::i;:::-;4328:35;;4273:96;;;:::o;4375:118::-;4462:24;4480:5;4462:24;:::i;:::-;4457:3;4450:37;4375:118;;:::o;4499:222::-;4592:4;4630:2;4619:9;4615:18;4607:26;;4643:71;4711:1;4700:9;4696:17;4687:6;4643:71;:::i;:::-;4499:222;;;;:::o;4727:122::-;4800:24;4818:5;4800:24;:::i;:::-;4793:5;4790:35;4780:63;;4839:1;4836;4829:12;4780:63;4727:122;:::o;4855:139::-;4901:5;4939:6;4926:20;4917:29;;4955:33;4982:5;4955:33;:::i;:::-;4855:139;;;;:::o;5000:474::-;5068:6;5076;5125:2;5113:9;5104:7;5100:23;5096:32;5093:119;;;5131:79;;:::i;:::-;5093:119;5251:1;5276:53;5321:7;5312:6;5301:9;5297:22;5276:53;:::i;:::-;5266:63;;5222:117;5378:2;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5349:118;5000:474;;;;;:::o;5480:118::-;5567:24;5585:5;5567:24;:::i;:::-;5562:3;5555:37;5480:118;;:::o;5604:222::-;5697:4;5735:2;5724:9;5720:18;5712:26;;5748:71;5816:1;5805:9;5801:17;5792:6;5748:71;:::i;:::-;5604:222;;;;:::o;5832:619::-;5909:6;5917;5925;5974:2;5962:9;5953:7;5949:23;5945:32;5942:119;;;5980:79;;:::i;:::-;5942:119;6100:1;6125:53;6170:7;6161:6;6150:9;6146:22;6125:53;:::i;:::-;6115:63;;6071:117;6227:2;6253:53;6298:7;6289:6;6278:9;6274:22;6253:53;:::i;:::-;6243:63;;6198:118;6355:2;6381:53;6426:7;6417:6;6406:9;6402:22;6381:53;:::i;:::-;6371:63;;6326:118;5832:619;;;;;:::o;6457:329::-;6516:6;6565:2;6553:9;6544:7;6540:23;6536:32;6533:119;;;6571:79;;:::i;:::-;6533:119;6691:1;6716:53;6761:7;6752:6;6741:9;6737:22;6716:53;:::i;:::-;6706:63;;6662:117;6457:329;;;;:::o;6792:114::-;6859:6;6893:5;6887:12;6877:22;;6792:114;;;:::o;6912:184::-;7011:11;7045:6;7040:3;7033:19;7085:4;7080:3;7076:14;7061:29;;6912:184;;;;:::o;7102:132::-;7169:4;7192:3;7184:11;;7222:4;7217:3;7213:14;7205:22;;7102:132;;;:::o;7240:108::-;7317:24;7335:5;7317:24;:::i;:::-;7312:3;7305:37;7240:108;;:::o;7354:179::-;7423:10;7444:46;7486:3;7478:6;7444:46;:::i;:::-;7522:4;7517:3;7513:14;7499:28;;7354:179;;;;:::o;7539:113::-;7609:4;7641;7636:3;7632:14;7624:22;;7539:113;;;:::o;7688:732::-;7807:3;7836:54;7884:5;7836:54;:::i;:::-;7906:86;7985:6;7980:3;7906:86;:::i;:::-;7899:93;;8016:56;8066:5;8016:56;:::i;:::-;8095:7;8126:1;8111:284;8136:6;8133:1;8130:13;8111:284;;;8212:6;8206:13;8239:63;8298:3;8283:13;8239:63;:::i;:::-;8232:70;;8325:60;8378:6;8325:60;:::i;:::-;8315:70;;8171:224;8158:1;8155;8151:9;8146:14;;8111:284;;;8115:14;8411:3;8404:10;;7812:608;;;7688:732;;;;:::o;8426:373::-;8569:4;8607:2;8596:9;8592:18;8584:26;;8656:9;8650:4;8646:20;8642:1;8631:9;8627:17;8620:47;8684:108;8787:4;8778:6;8684:108;:::i;:::-;8676:116;;8426:373;;;;:::o;8805:117::-;8914:1;8911;8904:12;8928:117;9037:1;9034;9027:12;9051:180;9099:77;9096:1;9089:88;9196:4;9193:1;9186:15;9220:4;9217:1;9210:15;9237:281;9320:27;9342:4;9320:27;:::i;:::-;9312:6;9308:40;9450:6;9438:10;9435:22;9414:18;9402:10;9399:34;9396:62;9393:88;;;9461:18;;:::i;:::-;9393:88;9501:10;9497:2;9490:22;9280:238;9237:281;;:::o;9524:129::-;9558:6;9585:20;;:::i;:::-;9575:30;;9614:33;9642:4;9634:6;9614:33;:::i;:::-;9524:129;;;:::o;9659:308::-;9721:4;9811:18;9803:6;9800:30;9797:56;;;9833:18;;:::i;:::-;9797:56;9871:29;9893:6;9871:29;:::i;:::-;9863:37;;9955:4;9949;9945:15;9937:23;;9659:308;;;:::o;9973:146::-;10070:6;10065:3;10060;10047:30;10111:1;10102:6;10097:3;10093:16;10086:27;9973:146;;;:::o;10125:425::-;10203:5;10228:66;10244:49;10286:6;10244:49;:::i;:::-;10228:66;:::i;:::-;10219:75;;10317:6;10310:5;10303:21;10355:4;10348:5;10344:16;10393:3;10384:6;10379:3;10375:16;10372:25;10369:112;;;10400:79;;:::i;:::-;10369:112;10490:54;10537:6;10532:3;10527;10490:54;:::i;:::-;10209:341;10125:425;;;;;:::o;10570:340::-;10626:5;10675:3;10668:4;10660:6;10656:17;10652:27;10642:122;;10683:79;;:::i;:::-;10642:122;10800:6;10787:20;10825:79;10900:3;10892:6;10885:4;10877:6;10873:17;10825:79;:::i;:::-;10816:88;;10632:278;10570:340;;;;:::o;10916:509::-;10985:6;11034:2;11022:9;11013:7;11009:23;11005:32;11002:119;;;11040:79;;:::i;:::-;11002:119;11188:1;11177:9;11173:17;11160:31;11218:18;11210:6;11207:30;11204:117;;;11240:79;;:::i;:::-;11204:117;11345:63;11400:7;11391:6;11380:9;11376:22;11345:63;:::i;:::-;11335:73;;11131:287;10916:509;;;;:::o;11431:468::-;11496:6;11504;11553:2;11541:9;11532:7;11528:23;11524:32;11521:119;;;11559:79;;:::i;:::-;11521:119;11679:1;11704:53;11749:7;11740:6;11729:9;11725:22;11704:53;:::i;:::-;11694:63;;11650:117;11806:2;11832:50;11874:7;11865:6;11854:9;11850:22;11832:50;:::i;:::-;11822:60;;11777:115;11431:468;;;;;:::o;11905:307::-;11966:4;12056:18;12048:6;12045:30;12042:56;;;12078:18;;:::i;:::-;12042:56;12116:29;12138:6;12116:29;:::i;:::-;12108:37;;12200:4;12194;12190:15;12182:23;;11905:307;;;:::o;12218:423::-;12295:5;12320:65;12336:48;12377:6;12336:48;:::i;:::-;12320:65;:::i;:::-;12311:74;;12408:6;12401:5;12394:21;12446:4;12439:5;12435:16;12484:3;12475:6;12470:3;12466:16;12463:25;12460:112;;;12491:79;;:::i;:::-;12460:112;12581:54;12628:6;12623:3;12618;12581:54;:::i;:::-;12301:340;12218:423;;;;;:::o;12660:338::-;12715:5;12764:3;12757:4;12749:6;12745:17;12741:27;12731:122;;12772:79;;:::i;:::-;12731:122;12889:6;12876:20;12914:78;12988:3;12980:6;12973:4;12965:6;12961:17;12914:78;:::i;:::-;12905:87;;12721:277;12660:338;;;;:::o;13004:943::-;13099:6;13107;13115;13123;13172:3;13160:9;13151:7;13147:23;13143:33;13140:120;;;13179:79;;:::i;:::-;13140:120;13299:1;13324:53;13369:7;13360:6;13349:9;13345:22;13324:53;:::i;:::-;13314:63;;13270:117;13426:2;13452:53;13497:7;13488:6;13477:9;13473:22;13452:53;:::i;:::-;13442:63;;13397:118;13554:2;13580:53;13625:7;13616:6;13605:9;13601:22;13580:53;:::i;:::-;13570:63;;13525:118;13710:2;13699:9;13695:18;13682:32;13741:18;13733:6;13730:30;13727:117;;;13763:79;;:::i;:::-;13727:117;13868:62;13922:7;13913:6;13902:9;13898:22;13868:62;:::i;:::-;13858:72;;13653:287;13004:943;;;;;;;:::o;13953:474::-;14021:6;14029;14078:2;14066:9;14057:7;14053:23;14049:32;14046:119;;;14084:79;;:::i;:::-;14046:119;14204:1;14229:53;14274:7;14265:6;14254:9;14250:22;14229:53;:::i;:::-;14219:63;;14175:117;14331:2;14357:53;14402:7;14393:6;14382:9;14378:22;14357:53;:::i;:::-;14347:63;;14302:118;13953:474;;;;;:::o;14433:182::-;14573:34;14569:1;14561:6;14557:14;14550:58;14433:182;:::o;14621:366::-;14763:3;14784:67;14848:2;14843:3;14784:67;:::i;:::-;14777:74;;14860:93;14949:3;14860:93;:::i;:::-;14978:2;14973:3;14969:12;14962:19;;14621:366;;;:::o;14993:419::-;15159:4;15197:2;15186:9;15182:18;15174:26;;15246:9;15240:4;15236:20;15232:1;15221:9;15217:17;15210:47;15274:131;15400:4;15274:131;:::i;:::-;15266:139;;14993:419;;;:::o;15418:180::-;15466:77;15463:1;15456:88;15563:4;15560:1;15553:15;15587:4;15584:1;15577:15;15604:320;15648:6;15685:1;15679:4;15675:12;15665:22;;15732:1;15726:4;15722:12;15753:18;15743:81;;15809:4;15801:6;15797:17;15787:27;;15743:81;15871:2;15863:6;15860:14;15840:18;15837:38;15834:84;;15890:18;;:::i;:::-;15834:84;15655:269;15604:320;;;:::o;15930:232::-;16070:34;16066:1;16058:6;16054:14;16047:58;16139:15;16134:2;16126:6;16122:15;16115:40;15930:232;:::o;16168:366::-;16310:3;16331:67;16395:2;16390:3;16331:67;:::i;:::-;16324:74;;16407:93;16496:3;16407:93;:::i;:::-;16525:2;16520:3;16516:12;16509:19;;16168:366;;;:::o;16540:419::-;16706:4;16744:2;16733:9;16729:18;16721:26;;16793:9;16787:4;16783:20;16779:1;16768:9;16764:17;16757:47;16821:131;16947:4;16821:131;:::i;:::-;16813:139;;16540:419;;;:::o;16965:221::-;17105:34;17101:1;17093:6;17089:14;17082:58;17174:4;17169:2;17161:6;17157:15;17150:29;16965:221;:::o;17192:366::-;17334:3;17355:67;17419:2;17414:3;17355:67;:::i;:::-;17348:74;;17431:93;17520:3;17431:93;:::i;:::-;17549:2;17544:3;17540:12;17533:19;;17192:366;;;:::o;17564:419::-;17730:4;17768:2;17757:9;17753:18;17745:26;;17817:9;17811:4;17807:20;17803:1;17792:9;17788:17;17781:47;17845:131;17971:4;17845:131;:::i;:::-;17837:139;;17564:419;;;:::o;17989:244::-;18129:34;18125:1;18117:6;18113:14;18106:58;18198:27;18193:2;18185:6;18181:15;18174:52;17989:244;:::o;18239:366::-;18381:3;18402:67;18466:2;18461:3;18402:67;:::i;:::-;18395:74;;18478:93;18567:3;18478:93;:::i;:::-;18596:2;18591:3;18587:12;18580:19;;18239:366;;;:::o;18611:419::-;18777:4;18815:2;18804:9;18800:18;18792:26;;18864:9;18858:4;18854:20;18850:1;18839:9;18835:17;18828:47;18892:131;19018:4;18892:131;:::i;:::-;18884:139;;18611:419;;;:::o;19036:221::-;19176:34;19172:1;19164:6;19160:14;19153:58;19245:4;19240:2;19232:6;19228:15;19221:29;19036:221;:::o;19263:366::-;19405:3;19426:67;19490:2;19485:3;19426:67;:::i;:::-;19419:74;;19502:93;19591:3;19502:93;:::i;:::-;19620:2;19615:3;19611:12;19604:19;;19263:366;;;:::o;19635:419::-;19801:4;19839:2;19828:9;19824:18;19816:26;;19888:9;19882:4;19878:20;19874:1;19863:9;19859:17;19852:47;19916:131;20042:4;19916:131;:::i;:::-;19908:139;;19635:419;;;:::o;20060:180::-;20108:77;20105:1;20098:88;20205:4;20202:1;20195:15;20229:4;20226:1;20219:15;20246:233;20285:3;20308:24;20326:5;20308:24;:::i;:::-;20299:33;;20354:66;20347:5;20344:77;20341:103;;20424:18;;:::i;:::-;20341:103;20471:1;20464:5;20460:13;20453:20;;20246:233;;;:::o;20485:::-;20625:34;20621:1;20613:6;20609:14;20602:58;20694:16;20689:2;20681:6;20677:15;20670:41;20485:233;:::o;20724:366::-;20866:3;20887:67;20951:2;20946:3;20887:67;:::i;:::-;20880:74;;20963:93;21052:3;20963:93;:::i;:::-;21081:2;21076:3;21072:12;21065:19;;20724:366;;;:::o;21096:419::-;21262:4;21300:2;21289:9;21285:18;21277:26;;21349:9;21343:4;21339:20;21335:1;21324:9;21320:17;21313:47;21377:131;21503:4;21377:131;:::i;:::-;21369:139;;21096:419;;;:::o;21521:147::-;21622:11;21659:3;21644:18;;21521:147;;;;:::o;21674:114::-;;:::o;21794:398::-;21953:3;21974:83;22055:1;22050:3;21974:83;:::i;:::-;21967:90;;22066:93;22155:3;22066:93;:::i;:::-;22184:1;22179:3;22175:11;22168:18;;21794:398;;;:::o;22198:379::-;22382:3;22404:147;22547:3;22404:147;:::i;:::-;22397:154;;22568:3;22561:10;;22198:379;;;:::o;22583:166::-;22723:18;22719:1;22711:6;22707:14;22700:42;22583:166;:::o;22755:366::-;22897:3;22918:67;22982:2;22977:3;22918:67;:::i;:::-;22911:74;;22994:93;23083:3;22994:93;:::i;:::-;23112:2;23107:3;23103:12;23096:19;;22755:366;;;:::o;23127:419::-;23293:4;23331:2;23320:9;23316:18;23308:26;;23380:9;23374:4;23370:20;23366:1;23355:9;23351:17;23344:47;23408:131;23534:4;23408:131;:::i;:::-;23400:139;;23127:419;;;:::o;23552:180::-;23600:77;23597:1;23590:88;23697:4;23694:1;23687:15;23721:4;23718:1;23711:15;23738:222;23878:34;23874:1;23866:6;23862:14;23855:58;23947:5;23942:2;23934:6;23930:15;23923:30;23738:222;:::o;23966:366::-;24108:3;24129:67;24193:2;24188:3;24129:67;:::i;:::-;24122:74;;24205:93;24294:3;24205:93;:::i;:::-;24323:2;24318:3;24314:12;24307:19;;23966:366;;;:::o;24338:419::-;24504:4;24542:2;24531:9;24527:18;24519:26;;24591:9;24585:4;24581:20;24577:1;24566:9;24562:17;24555:47;24619:131;24745:4;24619:131;:::i;:::-;24611:139;;24338:419;;;:::o;24763:141::-;24812:4;24835:3;24827:11;;24858:3;24855:1;24848:14;24892:4;24889:1;24879:18;24871:26;;24763:141;;;:::o;24910:93::-;24947:6;24994:2;24989;24982:5;24978:14;24974:23;24964:33;;24910:93;;;:::o;25009:107::-;25053:8;25103:5;25097:4;25093:16;25072:37;;25009:107;;;;:::o;25122:393::-;25191:6;25241:1;25229:10;25225:18;25264:97;25294:66;25283:9;25264:97;:::i;:::-;25382:39;25412:8;25401:9;25382:39;:::i;:::-;25370:51;;25454:4;25450:9;25443:5;25439:21;25430:30;;25503:4;25493:8;25489:19;25482:5;25479:30;25469:40;;25198:317;;25122:393;;;;;:::o;25521:60::-;25549:3;25570:5;25563:12;;25521:60;;;:::o;25587:142::-;25637:9;25670:53;25688:34;25697:24;25715:5;25697:24;:::i;:::-;25688:34;:::i;:::-;25670:53;:::i;:::-;25657:66;;25587:142;;;:::o;25735:75::-;25778:3;25799:5;25792:12;;25735:75;;;:::o;25816:269::-;25926:39;25957:7;25926:39;:::i;:::-;25987:91;26036:41;26060:16;26036:41;:::i;:::-;26028:6;26021:4;26015:11;25987:91;:::i;:::-;25981:4;25974:105;25892:193;25816:269;;;:::o;26091:73::-;26136:3;26091:73;:::o;26170:189::-;26247:32;;:::i;:::-;26288:65;26346:6;26338;26332:4;26288:65;:::i;:::-;26223:136;26170:189;;:::o;26365:186::-;26425:120;26442:3;26435:5;26432:14;26425:120;;;26496:39;26533:1;26526:5;26496:39;:::i;:::-;26469:1;26462:5;26458:13;26449:22;;26425:120;;;26365:186;;:::o;26557:543::-;26658:2;26653:3;26650:11;26647:446;;;26692:38;26724:5;26692:38;:::i;:::-;26776:29;26794:10;26776:29;:::i;:::-;26766:8;26762:44;26959:2;26947:10;26944:18;26941:49;;;26980:8;26965:23;;26941:49;27003:80;27059:22;27077:3;27059:22;:::i;:::-;27049:8;27045:37;27032:11;27003:80;:::i;:::-;26662:431;;26647:446;26557:543;;;:::o;27106:117::-;27160:8;27210:5;27204:4;27200:16;27179:37;;27106:117;;;;:::o;27229:169::-;27273:6;27306:51;27354:1;27350:6;27342:5;27339:1;27335:13;27306:51;:::i;:::-;27302:56;27387:4;27381;27377:15;27367:25;;27280:118;27229:169;;;;:::o;27403:295::-;27479:4;27625:29;27650:3;27644:4;27625:29;:::i;:::-;27617:37;;27687:3;27684:1;27680:11;27674:4;27671:21;27663:29;;27403:295;;;;:::o;27703:1395::-;27820:37;27853:3;27820:37;:::i;:::-;27922:18;27914:6;27911:30;27908:56;;;27944:18;;:::i;:::-;27908:56;27988:38;28020:4;28014:11;27988:38;:::i;:::-;28073:67;28133:6;28125;28119:4;28073:67;:::i;:::-;28167:1;28191:4;28178:17;;28223:2;28215:6;28212:14;28240:1;28235:618;;;;28897:1;28914:6;28911:77;;;28963:9;28958:3;28954:19;28948:26;28939:35;;28911:77;29014:67;29074:6;29067:5;29014:67;:::i;:::-;29008:4;29001:81;28870:222;28205:887;;28235:618;28287:4;28283:9;28275:6;28271:22;28321:37;28353:4;28321:37;:::i;:::-;28380:1;28394:208;28408:7;28405:1;28402:14;28394:208;;;28487:9;28482:3;28478:19;28472:26;28464:6;28457:42;28538:1;28530:6;28526:14;28516:24;;28585:2;28574:9;28570:18;28557:31;;28431:4;28428:1;28424:12;28419:17;;28394:208;;;28630:6;28621:7;28618:19;28615:179;;;28688:9;28683:3;28679:19;28673:26;28731:48;28773:4;28765:6;28761:17;28750:9;28731:48;:::i;:::-;28723:6;28716:64;28638:156;28615:179;28840:1;28836;28828:6;28824:14;28820:22;28814:4;28807:36;28242:611;;;28205:887;;27795:1303;;;27703:1395;;:::o;29104:230::-;29244:34;29240:1;29232:6;29228:14;29221:58;29313:13;29308:2;29300:6;29296:15;29289:38;29104:230;:::o;29340:366::-;29482:3;29503:67;29567:2;29562:3;29503:67;:::i;:::-;29496:74;;29579:93;29668:3;29579:93;:::i;:::-;29697:2;29692:3;29688:12;29681:19;;29340:366;;;:::o;29712:419::-;29878:4;29916:2;29905:9;29901:18;29893:26;;29965:9;29959:4;29955:20;29951:1;29940:9;29936:17;29929:47;29993:131;30119:4;29993:131;:::i;:::-;29985:139;;29712:419;;;:::o;30137:156::-;30277:8;30273:1;30265:6;30261:14;30254:32;30137:156;:::o;30299:365::-;30441:3;30462:66;30526:1;30521:3;30462:66;:::i;:::-;30455:73;;30537:93;30626:3;30537:93;:::i;:::-;30655:2;30650:3;30646:12;30639:19;;30299:365;;;:::o;30670:419::-;30836:4;30874:2;30863:9;30859:18;30851:26;;30923:9;30917:4;30913:20;30909:1;30898:9;30894:17;30887:47;30951:131;31077:4;30951:131;:::i;:::-;30943:139;;30670:419;;;:::o;31095:191::-;31135:3;31154:20;31172:1;31154:20;:::i;:::-;31149:25;;31188:20;31206:1;31188:20;:::i;:::-;31183:25;;31231:1;31228;31224:9;31217:16;;31252:3;31249:1;31246:10;31243:36;;;31259:18;;:::i;:::-;31243:36;31095:191;;;;:::o;31292:168::-;31432:20;31428:1;31420:6;31416:14;31409:44;31292:168;:::o;31466:366::-;31608:3;31629:67;31693:2;31688:3;31629:67;:::i;:::-;31622:74;;31705:93;31794:3;31705:93;:::i;:::-;31823:2;31818:3;31814:12;31807:19;;31466:366;;;:::o;31838:419::-;32004:4;32042:2;32031:9;32027:18;32019:26;;32091:9;32085:4;32081:20;32077:1;32066:9;32062:17;32055:47;32119:131;32245:4;32119:131;:::i;:::-;32111:139;;31838:419;;;:::o;32263:160::-;32403:12;32399:1;32391:6;32387:14;32380:36;32263:160;:::o;32429:366::-;32571:3;32592:67;32656:2;32651:3;32592:67;:::i;:::-;32585:74;;32668:93;32757:3;32668:93;:::i;:::-;32786:2;32781:3;32777:12;32770:19;;32429:366;;;:::o;32801:419::-;32967:4;33005:2;32994:9;32990:18;32982:26;;33054:9;33048:4;33044:20;33040:1;33029:9;33025:17;33018:47;33082:131;33208:4;33082:131;:::i;:::-;33074:139;;32801:419;;;:::o;33226:162::-;33366:14;33362:1;33354:6;33350:14;33343:38;33226:162;:::o;33394:366::-;33536:3;33557:67;33621:2;33616:3;33557:67;:::i;:::-;33550:74;;33633:93;33722:3;33633:93;:::i;:::-;33751:2;33746:3;33742:12;33735:19;;33394:366;;;:::o;33766:419::-;33932:4;33970:2;33959:9;33955:18;33947:26;;34019:9;34013:4;34009:20;34005:1;33994:9;33990:17;33983:47;34047:131;34173:4;34047:131;:::i;:::-;34039:139;;33766:419;;;:::o;34191:172::-;34331:24;34327:1;34319:6;34315:14;34308:48;34191:172;:::o;34369:366::-;34511:3;34532:67;34596:2;34591:3;34532:67;:::i;:::-;34525:74;;34608:93;34697:3;34608:93;:::i;:::-;34726:2;34721:3;34717:12;34710:19;;34369:366;;;:::o;34741:419::-;34907:4;34945:2;34934:9;34930:18;34922:26;;34994:9;34988:4;34984:20;34980:1;34969:9;34965:17;34958:47;35022:131;35148:4;35022:131;:::i;:::-;35014:139;;34741:419;;;:::o;35166:172::-;35306:24;35302:1;35294:6;35290:14;35283:48;35166:172;:::o;35344:366::-;35486:3;35507:67;35571:2;35566:3;35507:67;:::i;:::-;35500:74;;35583:93;35672:3;35583:93;:::i;:::-;35701:2;35696:3;35692:12;35685:19;;35344:366;;;:::o;35716:419::-;35882:4;35920:2;35909:9;35905:18;35897:26;;35969:9;35963:4;35959:20;35955:1;35944:9;35940:17;35933:47;35997:131;36123:4;35997:131;:::i;:::-;35989:139;;35716:419;;;:::o;36141:348::-;36181:7;36204:20;36222:1;36204:20;:::i;:::-;36199:25;;36238:20;36256:1;36238:20;:::i;:::-;36233:25;;36426:1;36358:66;36354:74;36351:1;36348:81;36343:1;36336:9;36329:17;36325:105;36322:131;;;36433:18;;:::i;:::-;36322:131;36481:1;36478;36474:9;36463:20;;36141:348;;;;:::o;36495:172::-;36635:24;36631:1;36623:6;36619:14;36612:48;36495:172;:::o;36673:366::-;36815:3;36836:67;36900:2;36895:3;36836:67;:::i;:::-;36829:74;;36912:93;37001:3;36912:93;:::i;:::-;37030:2;37025:3;37021:12;37014:19;;36673:366;;;:::o;37045:419::-;37211:4;37249:2;37238:9;37234:18;37226:26;;37298:9;37292:4;37288:20;37284:1;37273:9;37269:17;37262:47;37326:131;37452:4;37326:131;:::i;:::-;37318:139;;37045:419;;;:::o;37470:176::-;37610:28;37606:1;37598:6;37594:14;37587:52;37470:176;:::o;37652:366::-;37794:3;37815:67;37879:2;37874:3;37815:67;:::i;:::-;37808:74;;37891:93;37980:3;37891:93;:::i;:::-;38009:2;38004:3;38000:12;37993:19;;37652:366;;;:::o;38024:419::-;38190:4;38228:2;38217:9;38213:18;38205:26;;38277:9;38271:4;38267:20;38263:1;38252:9;38248:17;38241:47;38305:131;38431:4;38305:131;:::i;:::-;38297:139;;38024:419;;;:::o;38449:238::-;38589:34;38585:1;38577:6;38573:14;38566:58;38658:21;38653:2;38645:6;38641:15;38634:46;38449:238;:::o;38693:366::-;38835:3;38856:67;38920:2;38915:3;38856:67;:::i;:::-;38849:74;;38932:93;39021:3;38932:93;:::i;:::-;39050:2;39045:3;39041:12;39034:19;;38693:366;;;:::o;39065:419::-;39231:4;39269:2;39258:9;39254:18;39246:26;;39318:9;39312:4;39308:20;39304:1;39293:9;39289:17;39282:47;39346:131;39472:4;39346:131;:::i;:::-;39338:139;;39065:419;;;:::o;39490:234::-;39630:34;39626:1;39618:6;39614:14;39607:58;39699:17;39694:2;39686:6;39682:15;39675:42;39490:234;:::o;39730:366::-;39872:3;39893:67;39957:2;39952:3;39893:67;:::i;:::-;39886:74;;39969:93;40058:3;39969:93;:::i;:::-;40087:2;40082:3;40078:12;40071:19;;39730:366;;;:::o;40102:419::-;40268:4;40306:2;40295:9;40291:18;40283:26;;40355:9;40349:4;40345:20;40341:1;40330:9;40326:17;40319:47;40383:131;40509:4;40383:131;:::i;:::-;40375:139;;40102:419;;;:::o;40527:148::-;40629:11;40666:3;40651:18;;40527:148;;;;:::o;40681:390::-;40787:3;40815:39;40848:5;40815:39;:::i;:::-;40870:89;40952:6;40947:3;40870:89;:::i;:::-;40863:96;;40968:65;41026:6;41021:3;41014:4;41007:5;41003:16;40968:65;:::i;:::-;41058:6;41053:3;41049:16;41042:23;;40791:280;40681:390;;;;:::o;41101:874::-;41204:3;41241:5;41235:12;41270:36;41296:9;41270:36;:::i;:::-;41322:89;41404:6;41399:3;41322:89;:::i;:::-;41315:96;;41442:1;41431:9;41427:17;41458:1;41453:166;;;;41633:1;41628:341;;;;41420:549;;41453:166;41537:4;41533:9;41522;41518:25;41513:3;41506:38;41599:6;41592:14;41585:22;41577:6;41573:35;41568:3;41564:45;41557:52;;41453:166;;41628:341;41695:38;41727:5;41695:38;:::i;:::-;41755:1;41769:154;41783:6;41780:1;41777:13;41769:154;;;41857:7;41851:14;41847:1;41842:3;41838:11;41831:35;41907:1;41898:7;41894:15;41883:26;;41805:4;41802:1;41798:12;41793:17;;41769:154;;;41952:6;41947:3;41943:16;41936:23;;41635:334;;41420:549;;41208:767;;41101:874;;;;:::o;41981:589::-;42206:3;42228:95;42319:3;42310:6;42228:95;:::i;:::-;42221:102;;42340:95;42431:3;42422:6;42340:95;:::i;:::-;42333:102;;42452:92;42540:3;42531:6;42452:92;:::i;:::-;42445:99;;42561:3;42554:10;;41981:589;;;;;;:::o;42576:225::-;42716:34;42712:1;42704:6;42700:14;42693:58;42785:8;42780:2;42772:6;42768:15;42761:33;42576:225;:::o;42807:366::-;42949:3;42970:67;43034:2;43029:3;42970:67;:::i;:::-;42963:74;;43046:93;43135:3;43046:93;:::i;:::-;43164:2;43159:3;43155:12;43148:19;;42807:366;;;:::o;43179:419::-;43345:4;43383:2;43372:9;43368:18;43360:26;;43432:9;43426:4;43422:20;43418:1;43407:9;43403:17;43396:47;43460:131;43586:4;43460:131;:::i;:::-;43452:139;;43179:419;;;:::o;43604:237::-;43744:34;43740:1;43732:6;43728:14;43721:58;43813:20;43808:2;43800:6;43796:15;43789:45;43604:237;:::o;43847:366::-;43989:3;44010:67;44074:2;44069:3;44010:67;:::i;:::-;44003:74;;44086:93;44175:3;44086:93;:::i;:::-;44204:2;44199:3;44195:12;44188:19;;43847:366;;;:::o;44219:419::-;44385:4;44423:2;44412:9;44408:18;44400:26;;44472:9;44466:4;44462:20;44458:1;44447:9;44443:17;44436:47;44500:131;44626:4;44500:131;:::i;:::-;44492:139;;44219:419;;;:::o;44644:225::-;44784:34;44780:1;44772:6;44768:14;44761:58;44853:8;44848:2;44840:6;44836:15;44829:33;44644:225;:::o;44875:366::-;45017:3;45038:67;45102:2;45097:3;45038:67;:::i;:::-;45031:74;;45114:93;45203:3;45114:93;:::i;:::-;45232:2;45227:3;45223:12;45216:19;;44875:366;;;:::o;45247:419::-;45413:4;45451:2;45440:9;45436:18;45428:26;;45500:9;45494:4;45490:20;45486:1;45475:9;45471:17;45464:47;45528:131;45654:4;45528:131;:::i;:::-;45520:139;;45247:419;;;:::o;45672:224::-;45812:34;45808:1;45800:6;45796:14;45789:58;45881:7;45876:2;45868:6;45864:15;45857:32;45672:224;:::o;45902:366::-;46044:3;46065:67;46129:2;46124:3;46065:67;:::i;:::-;46058:74;;46141:93;46230:3;46141:93;:::i;:::-;46259:2;46254:3;46250:12;46243:19;;45902:366;;;:::o;46274:419::-;46440:4;46478:2;46467:9;46463:18;46455:26;;46527:9;46521:4;46517:20;46513:1;46502:9;46498:17;46491:47;46555:131;46681:4;46555:131;:::i;:::-;46547:139;;46274:419;;;:::o;46699:229::-;46839:34;46835:1;46827:6;46823:14;46816:58;46908:12;46903:2;46895:6;46891:15;46884:37;46699:229;:::o;46934:366::-;47076:3;47097:67;47161:2;47156:3;47097:67;:::i;:::-;47090:74;;47173:93;47262:3;47173:93;:::i;:::-;47291:2;47286:3;47282:12;47275:19;;46934:366;;;:::o;47306:419::-;47472:4;47510:2;47499:9;47495:18;47487:26;;47559:9;47553:4;47549:20;47545:1;47534:9;47530:17;47523:47;47587:131;47713:4;47587:131;:::i;:::-;47579:139;;47306:419;;;:::o;47731:171::-;47770:3;47793:24;47811:5;47793:24;:::i;:::-;47784:33;;47839:4;47832:5;47829:15;47826:41;;47847:18;;:::i;:::-;47826:41;47894:1;47887:5;47883:13;47876:20;;47731:171;;;:::o;48945:98::-;48996:6;49030:5;49024:12;49014:22;;48945:98;;;:::o;49049:168::-;49132:11;49166:6;49161:3;49154:19;49206:4;49201:3;49197:14;49182:29;;49049:168;;;;:::o;49223:373::-;49309:3;49337:38;49369:5;49337:38;:::i;:::-;49391:70;49454:6;49449:3;49391:70;:::i;:::-;49384:77;;49470:65;49528:6;49523:3;49516:4;49509:5;49505:16;49470:65;:::i;:::-;49560:29;49582:6;49560:29;:::i;:::-;49555:3;49551:39;49544:46;;49313:283;49223:373;;;;:::o;49602:640::-;49797:4;49835:3;49824:9;49820:19;49812:27;;49849:71;49917:1;49906:9;49902:17;49893:6;49849:71;:::i;:::-;49930:72;49998:2;49987:9;49983:18;49974:6;49930:72;:::i;:::-;50012;50080:2;50069:9;50065:18;50056:6;50012:72;:::i;:::-;50131:9;50125:4;50121:20;50116:2;50105:9;50101:18;50094:48;50159:76;50230:4;50221:6;50159:76;:::i;:::-;50151:84;;49602:640;;;;;;;:::o;50248:141::-;50304:5;50335:6;50329:13;50320:22;;50351:32;50377:5;50351:32;:::i;:::-;50248:141;;;;:::o;50395:349::-;50464:6;50513:2;50501:9;50492:7;50488:23;50484:32;50481:119;;;50519:79;;:::i;:::-;50481:119;50639:1;50664:63;50719:7;50710:6;50699:9;50695:22;50664:63;:::i;:::-;50654:73;;50610:127;50395:349;;;;:::o;50750:180::-;50798:77;50795:1;50788:88;50895:4;50892:1;50885:15;50919:4;50916:1;50909:15;50936:185;50976:1;50993:20;51011:1;50993:20;:::i;:::-;50988:25;;51027:20;51045:1;51027:20;:::i;:::-;51022:25;;51066:1;51056:35;;51071:18;;:::i;:::-;51056:35;51113:1;51110;51106:9;51101:14;;50936:185;;;;:::o;51127:194::-;51167:4;51187:20;51205:1;51187:20;:::i;:::-;51182:25;;51221:20;51239:1;51221:20;:::i;:::-;51216:25;;51265:1;51262;51258:9;51250:17;;51289:1;51283:4;51280:11;51277:37;;;51294:18;;:::i;:::-;51277:37;51127:194;;;;:::o;51327:176::-;51359:1;51376:20;51394:1;51376:20;:::i;:::-;51371:25;;51410:20;51428:1;51410:20;:::i;:::-;51405:25;;51449:1;51439:35;;51454:18;;:::i;:::-;51439:35;51495:1;51492;51488:9;51483:14;;51327:176;;;;:::o;51509:220::-;51649:34;51645:1;51637:6;51633:14;51626:58;51718:3;51713:2;51705:6;51701:15;51694:28;51509:220;:::o;51735:366::-;51877:3;51898:67;51962:2;51957:3;51898:67;:::i;:::-;51891:74;;51974:93;52063:3;51974:93;:::i;:::-;52092:2;52087:3;52083:12;52076:19;;51735:366;;;:::o;52107:419::-;52273:4;52311:2;52300:9;52296:18;52288:26;;52360:9;52354:4;52350:20;52346:1;52335:9;52331:17;52324:47;52388:131;52514:4;52388:131;:::i;:::-;52380:139;;52107:419;;;:::o;52532:179::-;52672:31;52668:1;52660:6;52656:14;52649:55;52532:179;:::o;52717:366::-;52859:3;52880:67;52944:2;52939:3;52880:67;:::i;:::-;52873:74;;52956:93;53045:3;52956:93;:::i;:::-;53074:2;53069:3;53065:12;53058:19;;52717:366;;;:::o;53089:419::-;53255:4;53293:2;53282:9;53278:18;53270:26;;53342:9;53336:4;53332:20;53328:1;53317:9;53313:17;53306:47;53370:131;53496:4;53370:131;:::i;:::-;53362:139;;53089:419;;;:::o;53514:222::-;53654:34;53650:1;53642:6;53638:14;53631:58;53723:5;53718:2;53710:6;53706:15;53699:30;53514:222;:::o;53742:366::-;53884:3;53905:67;53969:2;53964:3;53905:67;:::i;:::-;53898:74;;53981:93;54070:3;53981:93;:::i;:::-;54099:2;54094:3;54090:12;54083:19;;53742:366;;;:::o;54114:419::-;54280:4;54318:2;54307:9;54303:18;54295:26;;54367:9;54361:4;54357:20;54353:1;54342:9;54338:17;54331:47;54395:131;54521:4;54395:131;:::i;:::-;54387:139;;54114:419;;;:::o;54539:118::-;54576:7;54616:34;54609:5;54605:46;54594:57;;54539:118;;;:::o;54663:224::-;54703:3;54722:20;54740:1;54722:20;:::i;:::-;54717:25;;54756:20;54774:1;54756:20;:::i;:::-;54751:25;;54799:1;54796;54792:9;54785:16;;54822:34;54817:3;54814:43;54811:69;;;54860:18;;:::i;:::-;54811:69;54663:224;;;;:::o

Swarm Source

ipfs://8eca2a4c72ff054739e830049cf0f78623141933fa02e5c3b8045fb8d2aac535

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.