MATIC Price: $0.720148 (-1.18%)
Gas: 30 GWei
 

Overview

MATIC Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0.00001 MATIC

MATIC Value

Less Than $0.01 (@ $0.72/MATIC)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Mint NFT321808072022-08-22 6:04:00646 days ago1661148240IN
0x1eb2cF60...56637031A
0.00001 MATIC0.0073494930.00000022
Add Tokens321807022022-08-22 6:00:22646 days ago1661148022IN
0x1eb2cF60...56637031A
0 MATIC0.0009351630.00000177
Market Setup321800762022-08-22 5:34:34646 days ago1661146474IN
0x1eb2cF60...56637031A
0 MATIC0.0013928730.00000001
0x60806040321800712022-08-22 5:34:24646 days ago1661146464IN
 Create: NFTMarketplace
0 MATIC0.163397130.00000001

Parent Transaction Hash Block From To Value
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NFTMarketplace

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-08-22
*/

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

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

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, bytes calldata data) external;
    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 setApprovalForAll(address operator, bool _approved) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

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

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);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "OZ:1");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "OZ:2");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "OZ:3");
    }
    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, "OZ:4");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "OZ:5");
        require(isContract(target), "OZ:6");
        (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, "OZ:7");
    }
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "OZ:8");
        (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, "OZ:9");
    }
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "OZ:10");
        (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);
            }
        }
    }
}

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

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    uint8 private constant _ADDRESS_LENGTH = 20;
    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, "OZ:11");
        return string(buffer);
    }
    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }
}

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

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;
    string private _name;
    string private _symbol;
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "OZ:12");
        return _balances[owner];
    }
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "OZ:13");
        return owner;
    }
    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) {
        _requireMinted(tokenId);
        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 virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "OZ:14");
        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "OZ:15"
        );
        _approve(to, tokenId);
    }
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        _requireMinted(tokenId);
        return _tokenApprovals[tokenId];
    }
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_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 virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "OZ:16");
        _transfer(from, to, tokenId);
    }
    function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "OZ:17");
        _safeTransfer(from, to, tokenId, data);
    }
    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, data), "OZ:18");
    }
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);
    }
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }
    function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, data),
            "OZ:19"
        );
    }
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "OZ:20");
        require(!_exists(tokenId), "OZ:21");
        _beforeTokenTransfer(address(0), to, tokenId);
        _balances[to] += 1;
        _owners[tokenId] = to;
        emit Transfer(address(0), to, tokenId);
        _afterTokenTransfer(address(0), to, tokenId);
    }
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);
        _beforeTokenTransfer(owner, address(0), tokenId);
        _approve(address(0), tokenId);
        _balances[owner] -= 1;
        delete _owners[tokenId];
        emit Transfer(owner, address(0), tokenId);
        _afterTokenTransfer(owner, address(0), tokenId);
    }
    function _transfer(address from, address to, uint256 tokenId) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "OZ:22");
        require(to != address(0), "OZ:23");
        _beforeTokenTransfer(from, to, tokenId);
        _approve(address(0), tokenId);
        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;
        emit Transfer(from, to, tokenId);
        _afterTokenTransfer(from, to, tokenId);
    }
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }
    function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {
        require(owner != operator, "OZ:24");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }
    function _requireMinted(uint256 tokenId) internal view virtual {
        require(_exists(tokenId), "OZ:25");
    }
    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.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("OZ:26");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }
    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual {}
    function _afterTokenTransfer(address from, address to, uint256 tokenId) internal virtual {}
}

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, "OZ:27");
        unchecked {
            counter._value = value - 1;
        }
    }
    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;
    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "OZ:28");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

abstract contract ERC721URIStorage is ERC721 {
    using Strings for uint256;
    mapping(uint256 => string) private _tokenURIs;
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        _requireMinted(tokenId);
        string memory _tokenURI = _tokenURIs[tokenId];
        string memory base = _baseURI();
        if (bytes(base).length == 0) {
            return _tokenURI;
        }
        if (bytes(_tokenURI).length > 0) {
            return string(abi.encodePacked(base, _tokenURI));
        }
        return super.tokenURI(tokenId);
    }
    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {
        require(_exists(tokenId), "OZ:29");
        _tokenURIs[tokenId] = _tokenURI;
    }
    function _burn(uint256 tokenId) internal virtual override {
        super._burn(tokenId);
        if (bytes(_tokenURIs[tokenId]).length != 0) {
            delete _tokenURIs[tokenId];
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "OZ:30");
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "OZ:31");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract NFTMarketplace is ReentrancyGuard, ERC721URIStorage, Ownable{
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIds;
    Counters.Counter public _bidIds;
    address _scAddress;
    string public _tokenName;
    string public _tokenSymbol;
    uint256 private _maxTokenSupply;
    address payable marketOwner;
    mapping (uint256 => string) _tokenIDURI;
    uint256 totalUserMPWalletFunds;
    mapping(address => uint256) private mpWallets;
    struct MarketItem {
        uint256 tokenId;
        address nftContract;
        string uri;
        address payable nftCreator;
        address payable nftOwner;
        uint256 price;
        bool forSale;
    }
    mapping(uint256 => MarketItem) private MarketItemDatabase;
    event MarketItemCreated(
        uint256 indexed tokenId,
        address indexed nftContract,
        string uri,
        address creator,
        address owner,
        uint256 price,
        bool forSale
    );
    constructor(string memory tokenName, string memory tokenSymbol, uint256 gotMaxTokenSupply) ERC721(tokenName, tokenSymbol){
        marketOwner = payable(msg.sender);
        require(gotMaxTokenSupply > 0, "ERR:1");
        _maxTokenSupply = gotMaxTokenSupply;
        _tokenName = tokenName;
        _tokenSymbol = tokenSymbol;
    }
    function marketSetup(address scAddress) public onlyOwner{
        _scAddress = scAddress;
    }
    function totalSupply() public view returns (uint256){
        return (_maxTokenSupply);
    }
    function getNewTokenID() public view returns (uint256){
        return _tokenIds.current();
    }
    function addTokens(uint256 gotNewMaxTokenSupply) public onlyOwner{
        require(msg.sender == marketOwner, "ERR:2");
        require(gotNewMaxTokenSupply > _maxTokenSupply, "ERR:3");
        _maxTokenSupply = gotNewMaxTokenSupply;
    }
    function fetchTokenIDURI(uint256 tokenID) public view returns (string memory){
        bytes memory tempTokenURI = bytes(_tokenIDURI[tokenID]);
        require(tempTokenURI.length > 0, "ERR:4");
        return _tokenIDURI[tokenID];
    }
    function mintNFT(string memory uri) public payable nonReentrant{
        require(_tokenIds.current() != _maxTokenSupply, "ERR:5");
        _tokenIds.increment();
        uint256 newTokenId = _tokenIds.current();
        _mint(msg.sender, newTokenId);
        _setTokenURI(newTokenId, uri);
        _tokenIDURI[newTokenId] = uri;
        MarketItemDatabase[newTokenId] = MarketItem(newTokenId, _scAddress, uri, payable(msg.sender), payable(address(0)), 0, false);
        emit MarketItemCreated(newTokenId, _scAddress, uri, msg.sender, address(0), 0, false);
    }
    function listNFT(uint256 tokenId, uint256 price) public {
        require((msg.sender == MarketItemDatabase[tokenId].nftCreator && MarketItemDatabase[tokenId].nftOwner == address(0)) || msg.sender == MarketItemDatabase[tokenId].nftOwner, "ERR:6");
        setApprovalForAll(_scAddress, true);
        MarketItemDatabase[tokenId].forSale = true;
        MarketItemDatabase[tokenId].price = price;
        IERC721(_scAddress).transferFrom(msg.sender, address(this), tokenId);
    }
    function unlistNFT(uint256 tokenId) public {
        require((msg.sender == MarketItemDatabase[tokenId].nftCreator && MarketItemDatabase[tokenId].nftOwner == address(0)) || msg.sender == MarketItemDatabase[tokenId].nftOwner || msg.sender == marketOwner, "ERR:7");
        require(MarketItemDatabase[tokenId].forSale == true, "ERR:8");
        setApprovalForAll(_scAddress, true);
        MarketItemDatabase[tokenId].forSale = false;
        MarketItemDatabase[tokenId].price = 0;
        if(MarketItemDatabase[tokenId].nftOwner == address(0)){
            IERC721(_scAddress).transferFrom(address(this), MarketItemDatabase[tokenId].nftCreator, tokenId);
        } else{
            IERC721(_scAddress).transferFrom(address(this), MarketItemDatabase[tokenId].nftOwner, tokenId);
        }
    }
    function sellNFT(uint256 tokenId, uint256 marketItemPrice, uint256 sellerGets, uint256 marketOwnerGets) public payable nonReentrant{
        require(msg.sender != marketOwner, "ERR:9");
        require(MarketItemDatabase[tokenId].forSale == true, "ERR:10");
        require(msg.value == marketItemPrice, "ERR:11");
        if(MarketItemDatabase[tokenId].nftOwner == address(0)){
            MarketItemDatabase[tokenId].nftCreator.transfer(sellerGets);
        } else{
            MarketItemDatabase[tokenId].nftOwner.transfer(sellerGets);
        }
        IERC721(_scAddress).transferFrom(address(this), msg.sender, tokenId);
        MarketItemDatabase[tokenId].nftOwner = payable(msg.sender);
        MarketItemDatabase[tokenId].forSale = false;
        MarketItemDatabase[tokenId].price = 0;
        payable(marketOwner).transfer(marketOwnerGets);
    }
    function transferNFT(address recieverAddress, uint256 tokenId, uint256 gotTransferFee) public payable nonReentrant{
        require((msg.sender == MarketItemDatabase[tokenId].nftCreator && MarketItemDatabase[tokenId].nftOwner == address(0)) || msg.sender == MarketItemDatabase[tokenId].nftOwner, "ERR:12");
        require(MarketItemDatabase[tokenId].forSale == false, "ERR:13");
        require(msg.value == gotTransferFee, "ERR:14");
        setApprovalForAll(_scAddress, true);
        MarketItemDatabase[tokenId].nftOwner = payable(recieverAddress);
        payable(marketOwner).transfer(gotTransferFee);
        IERC721(_scAddress).transferFrom(msg.sender, recieverAddress, tokenId);
    }
    function bidWalletIN() public payable nonReentrant returns(bool){
        require(msg.sender != marketOwner, "ERR:15");
        mpWallets[msg.sender] = mpWallets[msg.sender] + msg.value;
        payable(marketOwner).transfer(msg.value);
        totalUserMPWalletFunds = totalUserMPWalletFunds + msg.value;
        return true;
    }
    function bidWalletOUT(address sendTo, uint256 withdrawAmount) public payable nonReentrant onlyOwner{
        require(msg.value == withdrawAmount, "ERR:18");
        require(mpWallets[sendTo] >= withdrawAmount, "ERR:19");
        mpWallets[sendTo] = mpWallets[sendTo] - withdrawAmount;
        totalUserMPWalletFunds = totalUserMPWalletFunds - withdrawAmount;
        payable(sendTo).transfer(withdrawAmount);
    }
    function bidPassCheck(address userWallet, uint256 currBid, uint256 tokenID) public view returns(bool){
        require(mpWallets[userWallet] > 0, "ERR:20");
        require((userWallet == MarketItemDatabase[tokenID].nftCreator && MarketItemDatabase[tokenID].nftOwner != address(0)) || userWallet != MarketItemDatabase[tokenID].nftOwner, "ERR:21");
        if(mpWallets[userWallet] >= currBid){
            return true;
        } else{
            return false;
        }
    }
    function soldBidNFT(address winner, uint256 bidAmount, uint256 nftOwnerGets, uint256 ownerGets, uint256 tokenId) public payable nonReentrant{
        require(MarketItemDatabase[tokenId].forSale == true, "ERR:22");
        require(msg.value == bidAmount, "ERR:23");
        setApprovalForAll(_scAddress, true);
        if(MarketItemDatabase[tokenId].nftOwner == address(0)){
            payable(MarketItemDatabase[tokenId].nftCreator).transfer(nftOwnerGets);
        }
        else {
            payable(MarketItemDatabase[tokenId].nftOwner).transfer(nftOwnerGets);
        }
        IERC721(_scAddress).transferFrom(address(this), winner, tokenId);
        payable(marketOwner).transfer(ownerGets);
        MarketItemDatabase[tokenId].nftOwner = payable(winner);
        MarketItemDatabase[tokenId].forSale == false;
        MarketItemDatabase[tokenId].price = 0;
        totalUserMPWalletFunds-=msg.value;
        mpWallets[winner] = mpWallets[winner] - msg.value;
    }
    function actualOwnerWallet(uint256 altOwnerFund) public view returns (uint256){
        return altOwnerFund-totalUserMPWalletFunds;
    }
    function bidderWallet(address bidderAddress) public view returns (uint256){
            return mpWallets[bidderAddress];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"gotMaxTokenSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"nftContract","type":"address"},{"indexed":false,"internalType":"string","name":"uri","type":"string"},{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"bool","name":"forSale","type":"bool"}],"name":"MarketItemCreated","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":"_bidIds","outputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenSymbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"altOwnerFund","type":"uint256"}],"name":"actualOwnerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gotNewMaxTokenSupply","type":"uint256"}],"name":"addTokens","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"userWallet","type":"address"},{"internalType":"uint256","name":"currBid","type":"uint256"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"bidPassCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bidWalletIN","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sendTo","type":"address"},{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"name":"bidWalletOUT","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"bidderAddress","type":"address"}],"name":"bidderWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"fetchTokenIDURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNewTokenID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"listNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"scAddress","type":"address"}],"name":"marketSetup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"name":"mintNFT","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"marketItemPrice","type":"uint256"},{"internalType":"uint256","name":"sellerGets","type":"uint256"},{"internalType":"uint256","name":"marketOwnerGets","type":"uint256"}],"name":"sellNFT","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"winner","type":"address"},{"internalType":"uint256","name":"bidAmount","type":"uint256"},{"internalType":"uint256","name":"nftOwnerGets","type":"uint256"},{"internalType":"uint256","name":"ownerGets","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"soldBidNFT","outputs":[],"stateMutability":"payable","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":"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":"recieverAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"gotTransferFee","type":"uint256"}],"name":"transferNFT","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlistNFT","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200648538038062006485833981810160405281019062000037919062000365565b828260016000819055508160019080519060200190620000599291906200022c565b508060029080519060200190620000729291906200022c565b50505062000095620000896200015e60201b60201c565b6200016660201b60201c565b33600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600081116200011c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001139062000414565b60405180910390fd5b80600e8190555082600c90805190602001906200013b9291906200022c565b5081600d9080519060200190620001549291906200022c565b5050505062000604565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200023a90620004e6565b90600052602060002090601f0160209004810192826200025e5760008555620002aa565b82601f106200027957805160ff1916838001178555620002aa565b82800160010185558215620002aa579182015b82811115620002a95782518255916020019190600101906200028c565b5b509050620002b99190620002bd565b5090565b5b80821115620002d8576000816000905550600101620002be565b5090565b6000620002f3620002ed846200045f565b62000436565b9050828152602081018484840111156200030c57600080fd5b62000319848285620004b0565b509392505050565b600082601f8301126200033357600080fd5b815162000345848260208601620002dc565b91505092915050565b6000815190506200035f81620005ea565b92915050565b6000806000606084860312156200037b57600080fd5b600084015167ffffffffffffffff8111156200039657600080fd5b620003a48682870162000321565b935050602084015167ffffffffffffffff811115620003c257600080fd5b620003d08682870162000321565b9250506040620003e3868287016200034e565b9150509250925092565b6000620003fc60058362000495565b91506200040982620005c1565b602082019050919050565b600060208201905081810360008301526200042f81620003ed565b9050919050565b60006200044262000455565b90506200045082826200051c565b919050565b6000604051905090565b600067ffffffffffffffff8211156200047d576200047c62000581565b5b6200048882620005b0565b9050602081019050919050565b600082825260208201905092915050565b6000819050919050565b60005b83811015620004d0578082015181840152602081019050620004b3565b83811115620004e0576000848401525b50505050565b60006002820490506001821680620004ff57607f821691505b6020821081141562000516576200051562000552565b5b50919050565b6200052782620005b0565b810181811067ffffffffffffffff8211171562000549576200054862000581565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552523a31000000000000000000000000000000000000000000000000000000600082015250565b620005f581620004a6565b81146200060157600080fd5b50565b615e7180620006146000396000f3fe6080604052600436106102045760003560e01c80638da5cb5b11610118578063c18d827c116100a0578063e985e9c51161006f578063e985e9c514610755578063ecf35cca14610792578063f2fde38b146107bd578063f598b707146107e6578063fb37e8831461080257610204565b8063c18d827c146106aa578063c6ed8990146106c6578063c87b56dd146106ef578063d2659a771461072c57610204565b80639d25d9a8116100e75780639d25d9a8146105d45780639f0c812514610611578063a22cb4651461063c578063b2e7640614610665578063b88d4fde1461068157610204565b80638da5cb5b1461052c57806394383f141461055757806395d89b4114610580578063961f0944146105ab57610204565b80632b1e092e1161019b5780636352211e1161016a5780636352211e1461043357806370a0823114610470578063715018a6146104ad578063835e43cd146104c4578063874efc241461050157610204565b80632b1e092e1461039357806342842e0e146103b15780634e8a5153146103da5780635beb0a72146103f657610204565b8063095ea7b3116101d7578063095ea7b3146102d95780631096a1371461030257806318160ddd1461033f57806323b872dd1461036a57610204565b806301ffc9a71461020957806305a027d61461024657806306fdde0314610271578063081812fc1461029c575b600080fd5b34801561021557600080fd5b50610230600480360381019061022b91906145b6565b61081e565b60405161023d9190614e2a565b60405180910390f35b34801561025257600080fd5b5061025b610900565b6040516102689190615381565b60405180910390f35b34801561027d57600080fd5b50610286610911565b6040516102939190614e45565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190614649565b6109a3565b6040516102d09190614d55565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb91906144b4565b6109e9565b005b34801561030e57600080fd5b50610329600480360381019061032491906144f0565b610b01565b6040516103369190614e2a565b60405180910390f35b34801561034b57600080fd5b50610354610d5f565b6040516103619190615381565b60405180910390f35b34801561037657600080fd5b50610391600480360381019061038c91906143ae565b610d69565b005b61039b610dc9565b6040516103a89190614e2a565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d391906143ae565b610fc4565b005b6103f460048036038101906103ef91906144b4565b610fe4565b005b34801561040257600080fd5b5061041d60048036038101906104189190614349565b6111f3565b60405161042a9190615381565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190614649565b61123c565b6040516104679190614d55565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190614349565b6112ee565b6040516104a49190615381565b60405180910390f35b3480156104b957600080fd5b506104c26113a6565b005b3480156104d057600080fd5b506104eb60048036038101906104e69190614649565b6113ba565b6040516104f89190615381565b60405180910390f35b34801561050d57600080fd5b506105166113d1565b6040516105239190615381565b60405180910390f35b34801561053857600080fd5b506105416113dd565b60405161054e9190614d55565b60405180910390f35b34801561056357600080fd5b5061057e60048036038101906105799190614672565b611407565b005b34801561058c57600080fd5b50610595611691565b6040516105a29190614e45565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190614649565b611723565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190614649565b611bdd565b6040516106089190614e45565b60405180910390f35b34801561061d57600080fd5b50610626611d67565b6040516106339190614e45565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190614478565b611df5565b005b61067f600480360381019061067a91906144f0565b611e0b565b005b34801561068d57600080fd5b506106a860048036038101906106a391906143fd565b61220c565b005b6106c460048036038101906106bf919061453f565b61226e565b005b3480156106d257600080fd5b506106ed60048036038101906106e89190614649565b612748565b005b3480156106fb57600080fd5b5061071660048036038101906107119190614649565b61282e565b6040516107239190614e45565b60405180910390f35b34801561073857600080fd5b50610753600480360381019061074e9190614349565b612941565b005b34801561076157600080fd5b5061077c60048036038101906107779190614372565b61298d565b6040516107899190614e2a565b60405180910390f35b34801561079e57600080fd5b506107a7612a21565b6040516107b49190614e45565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190614349565b612aaf565b005b61080060048036038101906107fb91906146ae565b612b33565b005b61081c60048036038101906108179190614608565b612fd1565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108e957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108f957506108f882613320565b5b9050919050565b600061090c600961338a565b905090565b6060600180546109209061561f565b80601f016020809104026020016040519081016040528092919081815260200182805461094c9061561f565b80156109995780601f1061096e57610100808354040283529160200191610999565b820191906000526020600020905b81548152906001019060200180831161097c57829003601f168201915b5050505050905090565b60006109ae82613398565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109f48261123c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c90614f61565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a846133e3565b73ffffffffffffffffffffffffffffffffffffffff161480610ab35750610ab281610aad6133e3565b61298d565b5b610af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae990615041565b60405180910390fd5b610afc83836133eb565b505050565b600080601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90614f41565b60405180910390fd5b6013600083815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015610c585750600073ffffffffffffffffffffffffffffffffffffffff166013600084815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80610cc557506013600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90615061565b60405180910390fd5b82601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410610d535760019050610d58565b600090505b9392505050565b6000600e54905090565b610d7a610d746133e3565b826134a4565b610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db090615101565b60405180910390fd5b610dc4838383613539565b505050565b600060026000541415610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0890614f21565b60405180910390fd5b6002600081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190615161565b60405180910390fd5b34601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ef59190615466565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610fa0573d6000803e3d6000fd5b5034601154610faf9190615466565b60118190555060019050600160008190555090565b610fdf8383836040518060200160405280600081525061220c565b505050565b6002600054141561102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190614f21565b60405180910390fd5b600260008190555061103a6137a0565b80341461107c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107390614fc1565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590615341565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114991906154ed565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060115461119a91906154ed565b6011819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111e6573d6000803e3d6000fd5b5060016000819055505050565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc90615201565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561135f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611356906152e1565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ae6137a0565b6113b8600061381e565b565b6000601154826113ca91906154ed565b9050919050565b600a8060000154905081565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6013600083815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156114da5750600073ffffffffffffffffffffffffffffffffffffffff166013600084815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8061154657506013600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c906152c1565b60405180910390fd5b6115b2600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611df5565b60016013600084815260200190815260200160002060060160006101000a81548160ff021916908315150217905550806013600084815260200190815260200160002060050181905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161165b93929190614da7565b600060405180830381600087803b15801561167557600080fd5b505af1158015611689573d6000803e3d6000fd5b505050505050565b6060600280546116a09061561f565b80601f01602080910402602001604051908101604052809291908181526020018280546116cc9061561f565b80156117195780601f106116ee57610100808354040283529160200191611719565b820191906000526020600020905b8154815290600101906020018083116116fc57829003601f168201915b5050505050905090565b6013600082815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156117f65750600073ffffffffffffffffffffffffffffffffffffffff166013600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8061186257506013600082815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806118ba5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f090615141565b60405180910390fd5b600115156013600083815260200190815260200160002060060160009054906101000a900460ff16151514611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a906150e1565b60405180910390fd5b611990600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611df5565b60006013600083815260200190815260200160002060060160006101000a81548160ff02191690831515021790555060006013600083815260200190815260200160002060050181905550600073ffffffffffffffffffffffffffffffffffffffff166013600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b1257600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd306013600085815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401611adb93929190614d70565b600060405180830381600087803b158015611af557600080fd5b505af1158015611b09573d6000803e3d6000fd5b50505050611bda565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd306013600085815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401611ba793929190614d70565b600060405180830381600087803b158015611bc157600080fd5b505af1158015611bd5573d6000803e3d6000fd5b505050505b50565b60606000601060008481526020019081526020016000208054611bff9061561f565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2b9061561f565b8015611c785780601f10611c4d57610100808354040283529160200191611c78565b820191906000526020600020905b815481529060010190602001808311611c5b57829003601f168201915b505050505090506000815111611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba90615241565b60405180910390fd5b601060008481526020019081526020016000208054611ce19061561f565b80601f0160208091040260200160405190810160405280929190818152602001828054611d0d9061561f565b8015611d5a5780601f10611d2f57610100808354040283529160200191611d5a565b820191906000526020600020905b815481529060010190602001808311611d3d57829003601f168201915b5050505050915050919050565b600c8054611d749061561f565b80601f0160208091040260200160405190810160405280929190818152602001828054611da09061561f565b8015611ded5780601f10611dc257610100808354040283529160200191611ded565b820191906000526020600020905b815481529060010190602001808311611dd057829003601f168201915b505050505081565b611e07611e006133e3565b83836138e4565b5050565b60026000541415611e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4890614f21565b60405180910390fd5b60026000819055506013600083815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611f2c5750600073ffffffffffffffffffffffffffffffffffffffff166013600084815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80611f9857506013600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fce906150c1565b60405180910390fd5b600015156013600084815260200190815260200160002060060160009054906101000a900460ff16151514612041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203890615361565b60405180910390fd5b803414612083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207a906152a1565b60405180910390fd5b6120b0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611df5565b826013600084815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561216d573d6000803e3d6000fd5b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3385856040518463ffffffff1660e01b81526004016121cd93929190614da7565b600060405180830381600087803b1580156121e757600080fd5b505af11580156121fb573d6000803e3d6000fd5b505050506001600081905550505050565b61221d6122176133e3565b836134a4565b61225c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225390615001565b60405180910390fd5b61226884848484613a51565b50505050565b600260005414156122b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ab90614f21565b60405180910390fd5b6002600081905550600115156013600083815260200190815260200160002060060160009054906101000a900460ff16151514612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d906151a1565b60405180910390fd5b833414612368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235f90615121565b60405180910390fd5b612395600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611df5565b600073ffffffffffffffffffffffffffffffffffffffff166013600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612482576013600082815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561247c573d6000803e3d6000fd5b50612500565b6013600082815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156124fe573d6000803e3d6000fd5b505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3087846040518463ffffffff1660e01b815260040161255f93929190614da7565b600060405180830381600087803b15801561257957600080fd5b505af115801561258d573d6000803e3d6000fd5b50505050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156125f9573d6000803e3d6000fd5b50846013600083815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600015156013600083815260200190815260200160002060060160009054906101000a905050506000601360008381526020019081526020016000206005018190555034601160008282546126a491906154ed565b9250508190555034601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f691906154ed565b601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016000819055505050505050565b6127506137a0565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d790615301565b60405180910390fd5b600e548111612824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281b906150a1565b60405180910390fd5b80600e8190555050565b606061283982613398565b60006007600084815260200190815260200160002080546128599061561f565b80601f01602080910402602001604051908101604052809291908181526020018280546128859061561f565b80156128d25780601f106128a7576101008083540402835291602001916128d2565b820191906000526020600020905b8154815290600101906020018083116128b557829003601f168201915b5050505050905060006128e3613aad565b90506000815114156128f957819250505061293c565b60008251111561292e578082604051602001612916929190614d31565b6040516020818303038152906040529250505061293c565b61293784613ac4565b925050505b919050565b6129496137a0565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600d8054612a2e9061561f565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5a9061561f565b8015612aa75780601f10612a7c57610100808354040283529160200191612aa7565b820191906000526020600020905b815481529060010190602001808311612a8a57829003601f168201915b505050505081565b612ab76137a0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1e90615081565b60405180910390fd5b612b308161381e565b50565b60026000541415612b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7090614f21565b60405180910390fd5b6002600081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415612c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0990614fa1565b60405180910390fd5b600115156013600086815260200190815260200160002060060160009054906101000a900460ff16151514612c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7390615281565b60405180910390fd5b823414612cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb590614f01565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166013600086815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612dab576013600085815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612da5573d6000803e3d6000fd5b50612e29565b6013600085815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612e27573d6000803e3d6000fd5b505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033876040518463ffffffff1660e01b8152600401612e8893929190614da7565b600060405180830381600087803b158015612ea257600080fd5b505af1158015612eb6573d6000803e3d6000fd5b50505050336013600086815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006013600086815260200190815260200160002060060160006101000a81548160ff02191690831515021790555060006013600086815260200190815260200160002060050181905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612fc2573d6000803e3d6000fd5b50600160008190555050505050565b60026000541415613017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300e90614f21565b60405180910390fd5b6002600081905550600e5461302c600961338a565b141561306d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306490615021565b60405180910390fd5b6130776009613b2c565b6000613083600961338a565b905061308f3382613b42565b6130998183613d1c565b816010600083815260200190815260200160002090805190602001906130c092919061416d565b506040518060e00160405280828152602001600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815250601360008381526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020190805190602001906131dd92919061416d565b5060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816005015560c08201518160060160006101000a81548160ff021916908315150217905550905050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16817f075fb7fd1ecd2e51f3b8d1dc8bfbd3c77c6547ddbd967e194636fcd46d91f9258433600080600060405161330c959493929190614e67565b60405180910390a350600160008190555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081600001549050919050565b6133a181613d90565b6133e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d790614ec1565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661345e8361123c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806134b08361123c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806134f257506134f1818561298d565b5b8061353057508373ffffffffffffffffffffffffffffffffffffffff16613518846109a3565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166135598261123c565b73ffffffffffffffffffffffffffffffffffffffff16146135af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a690615181565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561361f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361690615321565b60405180910390fd5b61362a838383613dfc565b6136356000826133eb565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461368591906154ed565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136dc9190615466565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461379b838383613e01565b505050565b6137a86133e3565b73ffffffffffffffffffffffffffffffffffffffff166137c66113dd565b73ffffffffffffffffffffffffffffffffffffffff161461381c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613813906151c1565b60405180910390fd5b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394a90615221565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051613a449190614e2a565b60405180910390a3505050565b613a5c848484613539565b613a6884848484613e06565b613aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a9e90614fe1565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060613acf82613398565b6000613ad9613aad565b90506000815111613af95760405180602001604052806000815250613b24565b80613b0384613f9d565b604051602001613b14929190614d31565b6040516020818303038152906040525b915050919050565b6001816000016000828254019250508190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba990614f81565b60405180910390fd5b613bbb81613d90565b15613bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bf290615261565b60405180910390fd5b613c0760008383613dfc565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c579190615466565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613d1860008383613e01565b5050565b613d2582613d90565b613d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d5b906151e1565b60405180910390fd5b80600760008481526020019081526020016000209080519060200190613d8b92919061416d565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6000613e278473ffffffffffffffffffffffffffffffffffffffff1661414a565b15613f90578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613e506133e3565b8786866040518563ffffffff1660e01b8152600401613e729493929190614dde565b602060405180830381600087803b158015613e8c57600080fd5b505af1925050508015613ebd57506040513d601f19601f82011682018060405250810190613eba91906145df565b60015b613f40573d8060008114613eed576040519150601f19603f3d011682016040523d82523d6000602084013e613ef2565b606091505b50600081511415613f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f2f90614ee1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613f95565b600190505b949350505050565b60606000821415613fe5576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050614145565b600082905060005b6000821461401757808061400090615682565b915050600a8261401091906154bc565b9150613fed565b60008167ffffffffffffffff811115614059577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561408b5781602001600182028036833780820191505090505b5090505b6000851461413e576001826140a491906154ed565b9150600a856140b391906156cb565b60306140bf9190615466565b60f81b8183815181106140fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561413791906154bc565b945061408f565b8093505050505b919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546141799061561f565b90600052602060002090601f01602090048101928261419b57600085556141e2565b82601f106141b457805160ff19168380011785556141e2565b828001600101855582156141e2579182015b828111156141e15782518255916020019190600101906141c6565b5b5090506141ef91906141f3565b5090565b5b8082111561420c5760008160009055506001016141f4565b5090565b600061422361421e846153c1565b61539c565b90508281526020810184848401111561423b57600080fd5b6142468482856155dd565b509392505050565b600061426161425c846153f2565b61539c565b90508281526020810184848401111561427957600080fd5b6142848482856155dd565b509392505050565b60008135905061429b81615ddf565b92915050565b6000813590506142b081615df6565b92915050565b6000813590506142c581615e0d565b92915050565b6000815190506142da81615e0d565b92915050565b600082601f8301126142f157600080fd5b8135614301848260208601614210565b91505092915050565b600082601f83011261431b57600080fd5b813561432b84826020860161424e565b91505092915050565b60008135905061434381615e24565b92915050565b60006020828403121561435b57600080fd5b60006143698482850161428c565b91505092915050565b6000806040838503121561438557600080fd5b60006143938582860161428c565b92505060206143a48582860161428c565b9150509250929050565b6000806000606084860312156143c357600080fd5b60006143d18682870161428c565b93505060206143e28682870161428c565b92505060406143f386828701614334565b9150509250925092565b6000806000806080858703121561441357600080fd5b60006144218782880161428c565b94505060206144328782880161428c565b935050604061444387828801614334565b925050606085013567ffffffffffffffff81111561446057600080fd5b61446c878288016142e0565b91505092959194509250565b6000806040838503121561448b57600080fd5b60006144998582860161428c565b92505060206144aa858286016142a1565b9150509250929050565b600080604083850312156144c757600080fd5b60006144d58582860161428c565b92505060206144e685828601614334565b9150509250929050565b60008060006060848603121561450557600080fd5b60006145138682870161428c565b935050602061452486828701614334565b925050604061453586828701614334565b9150509250925092565b600080600080600060a0868803121561455757600080fd5b60006145658882890161428c565b955050602061457688828901614334565b945050604061458788828901614334565b935050606061459888828901614334565b92505060806145a988828901614334565b9150509295509295909350565b6000602082840312156145c857600080fd5b60006145d6848285016142b6565b91505092915050565b6000602082840312156145f157600080fd5b60006145ff848285016142cb565b91505092915050565b60006020828403121561461a57600080fd5b600082013567ffffffffffffffff81111561463457600080fd5b6146408482850161430a565b91505092915050565b60006020828403121561465b57600080fd5b600061466984828501614334565b91505092915050565b6000806040838503121561468557600080fd5b600061469385828601614334565b92505060206146a485828601614334565b9150509250929050565b600080600080608085870312156146c457600080fd5b60006146d287828801614334565b94505060206146e387828801614334565b93505060406146f487828801614334565b925050606061470587828801614334565b91505092959194509250565b61471a81615595565b82525050565b61472981615521565b82525050565b61473881615533565b82525050565b600061474982615423565b6147538185615439565b93506147638185602086016155ec565b61476c816157b8565b840191505092915050565b614780816155a7565b82525050565b60006147918261542e565b61479b818561544a565b93506147ab8185602086016155ec565b6147b4816157b8565b840191505092915050565b60006147ca8261542e565b6147d4818561545b565b93506147e48185602086016155ec565b80840191505092915050565b60006147fd60058361544a565b9150614808826157c9565b602082019050919050565b600061482060058361544a565b915061482b826157f2565b602082019050919050565b600061484360068361544a565b915061484e8261581b565b602082019050919050565b600061486660058361544a565b915061487182615844565b602082019050919050565b600061488960068361544a565b91506148948261586d565b602082019050919050565b60006148ac60058361544a565b91506148b782615896565b602082019050919050565b60006148cf60058361544a565b91506148da826158bf565b602082019050919050565b60006148f260058361544a565b91506148fd826158e8565b602082019050919050565b600061491560068361544a565b915061492082615911565b602082019050919050565b600061493860058361544a565b91506149438261593a565b602082019050919050565b600061495b60058361544a565b915061496682615963565b602082019050919050565b600061497e60058361544a565b91506149898261598c565b602082019050919050565b60006149a160058361544a565b91506149ac826159b5565b602082019050919050565b60006149c460068361544a565b91506149cf826159de565b602082019050919050565b60006149e760058361544a565b91506149f282615a07565b602082019050919050565b6000614a0a60058361544a565b9150614a1582615a30565b602082019050919050565b6000614a2d60068361544a565b9150614a3882615a59565b602082019050919050565b6000614a5060058361544a565b9150614a5b82615a82565b602082019050919050565b6000614a7360058361544a565b9150614a7e82615aab565b602082019050919050565b6000614a9660068361544a565b9150614aa182615ad4565b602082019050919050565b6000614ab960058361544a565b9150614ac482615afd565b602082019050919050565b6000614adc60068361544a565b9150614ae782615b26565b602082019050919050565b6000614aff60058361544a565b9150614b0a82615b4f565b602082019050919050565b6000614b2260068361544a565b9150614b2d82615b78565b602082019050919050565b6000614b4560058361544a565b9150614b5082615ba1565b602082019050919050565b6000614b6860058361544a565b9150614b7382615bca565b602082019050919050565b6000614b8b60058361544a565b9150614b9682615bf3565b602082019050919050565b6000614bae60058361544a565b9150614bb982615c1c565b602082019050919050565b6000614bd160058361544a565b9150614bdc82615c45565b602082019050919050565b6000614bf460058361544a565b9150614bff82615c6e565b602082019050919050565b6000614c1760068361544a565b9150614c2282615c97565b602082019050919050565b6000614c3a60068361544a565b9150614c4582615cc0565b602082019050919050565b6000614c5d60058361544a565b9150614c6882615ce9565b602082019050919050565b6000614c8060058361544a565b9150614c8b82615d12565b602082019050919050565b6000614ca360058361544a565b9150614cae82615d3b565b602082019050919050565b6000614cc660058361544a565b9150614cd182615d64565b602082019050919050565b6000614ce960068361544a565b9150614cf482615d8d565b602082019050919050565b6000614d0c60068361544a565b9150614d1782615db6565b602082019050919050565b614d2b8161558b565b82525050565b6000614d3d82856147bf565b9150614d4982846147bf565b91508190509392505050565b6000602082019050614d6a6000830184614720565b92915050565b6000606082019050614d856000830186614720565b614d926020830185614711565b614d9f6040830184614d22565b949350505050565b6000606082019050614dbc6000830186614720565b614dc96020830185614720565b614dd66040830184614d22565b949350505050565b6000608082019050614df36000830187614720565b614e006020830186614720565b614e0d6040830185614d22565b8181036060830152614e1f818461473e565b905095945050505050565b6000602082019050614e3f600083018461472f565b92915050565b60006020820190508181036000830152614e5f8184614786565b905092915050565b600060a0820190508181036000830152614e818188614786565b9050614e906020830187614720565b614e9d6040830186614720565b614eaa6060830185614777565b614eb7608083018461472f565b9695505050505050565b60006020820190508181036000830152614eda816147f0565b9050919050565b60006020820190508181036000830152614efa81614813565b9050919050565b60006020820190508181036000830152614f1a81614836565b9050919050565b60006020820190508181036000830152614f3a81614859565b9050919050565b60006020820190508181036000830152614f5a8161487c565b9050919050565b60006020820190508181036000830152614f7a8161489f565b9050919050565b60006020820190508181036000830152614f9a816148c2565b9050919050565b60006020820190508181036000830152614fba816148e5565b9050919050565b60006020820190508181036000830152614fda81614908565b9050919050565b60006020820190508181036000830152614ffa8161492b565b9050919050565b6000602082019050818103600083015261501a8161494e565b9050919050565b6000602082019050818103600083015261503a81614971565b9050919050565b6000602082019050818103600083015261505a81614994565b9050919050565b6000602082019050818103600083015261507a816149b7565b9050919050565b6000602082019050818103600083015261509a816149da565b9050919050565b600060208201905081810360008301526150ba816149fd565b9050919050565b600060208201905081810360008301526150da81614a20565b9050919050565b600060208201905081810360008301526150fa81614a43565b9050919050565b6000602082019050818103600083015261511a81614a66565b9050919050565b6000602082019050818103600083015261513a81614a89565b9050919050565b6000602082019050818103600083015261515a81614aac565b9050919050565b6000602082019050818103600083015261517a81614acf565b9050919050565b6000602082019050818103600083015261519a81614af2565b9050919050565b600060208201905081810360008301526151ba81614b15565b9050919050565b600060208201905081810360008301526151da81614b38565b9050919050565b600060208201905081810360008301526151fa81614b5b565b9050919050565b6000602082019050818103600083015261521a81614b7e565b9050919050565b6000602082019050818103600083015261523a81614ba1565b9050919050565b6000602082019050818103600083015261525a81614bc4565b9050919050565b6000602082019050818103600083015261527a81614be7565b9050919050565b6000602082019050818103600083015261529a81614c0a565b9050919050565b600060208201905081810360008301526152ba81614c2d565b9050919050565b600060208201905081810360008301526152da81614c50565b9050919050565b600060208201905081810360008301526152fa81614c73565b9050919050565b6000602082019050818103600083015261531a81614c96565b9050919050565b6000602082019050818103600083015261533a81614cb9565b9050919050565b6000602082019050818103600083015261535a81614cdc565b9050919050565b6000602082019050818103600083015261537a81614cff565b9050919050565b60006020820190506153966000830184614d22565b92915050565b60006153a66153b7565b90506153b28282615651565b919050565b6000604051905090565b600067ffffffffffffffff8211156153dc576153db615789565b5b6153e5826157b8565b9050602081019050919050565b600067ffffffffffffffff82111561540d5761540c615789565b5b615416826157b8565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006154718261558b565b915061547c8361558b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156154b1576154b06156fc565b5b828201905092915050565b60006154c78261558b565b91506154d28361558b565b9250826154e2576154e161572b565b5b828204905092915050565b60006154f88261558b565b91506155038361558b565b925082821015615516576155156156fc565b5b828203905092915050565b600061552c8261556b565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006155a0826155b9565b9050919050565b60006155b28261558b565b9050919050565b60006155c4826155cb565b9050919050565b60006155d68261556b565b9050919050565b82818337600083830152505050565b60005b8381101561560a5780820151818401526020810190506155ef565b83811115615619576000848401525b50505050565b6000600282049050600182168061563757607f821691505b6020821081141561564b5761564a61575a565b5b50919050565b61565a826157b8565b810181811067ffffffffffffffff8211171561567957615678615789565b5b80604052505050565b600061568d8261558b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156156c0576156bf6156fc565b5b600182019050919050565b60006156d68261558b565b91506156e18361558b565b9250826156f1576156f061572b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f5a3a3235000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3236000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31310000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3238000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a32300000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3134000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3230000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a39000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31380000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3138000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3137000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a35000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3135000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a32310000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3331000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a33000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31320000000000000000000000000000000000000000000000000000600082015250565b7f4552523a38000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3136000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a32330000000000000000000000000000000000000000000000000000600082015250565b7f4552523a37000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31350000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3232000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a32320000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3330000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3239000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3133000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3234000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a34000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3231000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31300000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31340000000000000000000000000000000000000000000000000000600082015250565b7f4552523a36000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3132000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a32000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3233000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31390000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31330000000000000000000000000000000000000000000000000000600082015250565b615de881615521565b8114615df357600080fd5b50565b615dff81615533565b8114615e0a57600080fd5b50565b615e168161553f565b8114615e2157600080fd5b50565b615e2d8161558b565b8114615e3857600080fd5b5056fea26469706673582212208a08a74c0f6272affa9df6d7917bb9dcd141bde43f60dda4ee88bad8610f7b4864736f6c63430008040033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000000942445441534b4e46540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000442544e4600000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102045760003560e01c80638da5cb5b11610118578063c18d827c116100a0578063e985e9c51161006f578063e985e9c514610755578063ecf35cca14610792578063f2fde38b146107bd578063f598b707146107e6578063fb37e8831461080257610204565b8063c18d827c146106aa578063c6ed8990146106c6578063c87b56dd146106ef578063d2659a771461072c57610204565b80639d25d9a8116100e75780639d25d9a8146105d45780639f0c812514610611578063a22cb4651461063c578063b2e7640614610665578063b88d4fde1461068157610204565b80638da5cb5b1461052c57806394383f141461055757806395d89b4114610580578063961f0944146105ab57610204565b80632b1e092e1161019b5780636352211e1161016a5780636352211e1461043357806370a0823114610470578063715018a6146104ad578063835e43cd146104c4578063874efc241461050157610204565b80632b1e092e1461039357806342842e0e146103b15780634e8a5153146103da5780635beb0a72146103f657610204565b8063095ea7b3116101d7578063095ea7b3146102d95780631096a1371461030257806318160ddd1461033f57806323b872dd1461036a57610204565b806301ffc9a71461020957806305a027d61461024657806306fdde0314610271578063081812fc1461029c575b600080fd5b34801561021557600080fd5b50610230600480360381019061022b91906145b6565b61081e565b60405161023d9190614e2a565b60405180910390f35b34801561025257600080fd5b5061025b610900565b6040516102689190615381565b60405180910390f35b34801561027d57600080fd5b50610286610911565b6040516102939190614e45565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190614649565b6109a3565b6040516102d09190614d55565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb91906144b4565b6109e9565b005b34801561030e57600080fd5b50610329600480360381019061032491906144f0565b610b01565b6040516103369190614e2a565b60405180910390f35b34801561034b57600080fd5b50610354610d5f565b6040516103619190615381565b60405180910390f35b34801561037657600080fd5b50610391600480360381019061038c91906143ae565b610d69565b005b61039b610dc9565b6040516103a89190614e2a565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d391906143ae565b610fc4565b005b6103f460048036038101906103ef91906144b4565b610fe4565b005b34801561040257600080fd5b5061041d60048036038101906104189190614349565b6111f3565b60405161042a9190615381565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190614649565b61123c565b6040516104679190614d55565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190614349565b6112ee565b6040516104a49190615381565b60405180910390f35b3480156104b957600080fd5b506104c26113a6565b005b3480156104d057600080fd5b506104eb60048036038101906104e69190614649565b6113ba565b6040516104f89190615381565b60405180910390f35b34801561050d57600080fd5b506105166113d1565b6040516105239190615381565b60405180910390f35b34801561053857600080fd5b506105416113dd565b60405161054e9190614d55565b60405180910390f35b34801561056357600080fd5b5061057e60048036038101906105799190614672565b611407565b005b34801561058c57600080fd5b50610595611691565b6040516105a29190614e45565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190614649565b611723565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190614649565b611bdd565b6040516106089190614e45565b60405180910390f35b34801561061d57600080fd5b50610626611d67565b6040516106339190614e45565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190614478565b611df5565b005b61067f600480360381019061067a91906144f0565b611e0b565b005b34801561068d57600080fd5b506106a860048036038101906106a391906143fd565b61220c565b005b6106c460048036038101906106bf919061453f565b61226e565b005b3480156106d257600080fd5b506106ed60048036038101906106e89190614649565b612748565b005b3480156106fb57600080fd5b5061071660048036038101906107119190614649565b61282e565b6040516107239190614e45565b60405180910390f35b34801561073857600080fd5b50610753600480360381019061074e9190614349565b612941565b005b34801561076157600080fd5b5061077c60048036038101906107779190614372565b61298d565b6040516107899190614e2a565b60405180910390f35b34801561079e57600080fd5b506107a7612a21565b6040516107b49190614e45565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190614349565b612aaf565b005b61080060048036038101906107fb91906146ae565b612b33565b005b61081c60048036038101906108179190614608565b612fd1565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108e957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108f957506108f882613320565b5b9050919050565b600061090c600961338a565b905090565b6060600180546109209061561f565b80601f016020809104026020016040519081016040528092919081815260200182805461094c9061561f565b80156109995780601f1061096e57610100808354040283529160200191610999565b820191906000526020600020905b81548152906001019060200180831161097c57829003601f168201915b5050505050905090565b60006109ae82613398565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109f48261123c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c90614f61565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a846133e3565b73ffffffffffffffffffffffffffffffffffffffff161480610ab35750610ab281610aad6133e3565b61298d565b5b610af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae990615041565b60405180910390fd5b610afc83836133eb565b505050565b600080601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90614f41565b60405180910390fd5b6013600083815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015610c585750600073ffffffffffffffffffffffffffffffffffffffff166013600084815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80610cc557506013600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90615061565b60405180910390fd5b82601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410610d535760019050610d58565b600090505b9392505050565b6000600e54905090565b610d7a610d746133e3565b826134a4565b610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db090615101565b60405180910390fd5b610dc4838383613539565b505050565b600060026000541415610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0890614f21565b60405180910390fd5b6002600081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190615161565b60405180910390fd5b34601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ef59190615466565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610fa0573d6000803e3d6000fd5b5034601154610faf9190615466565b60118190555060019050600160008190555090565b610fdf8383836040518060200160405280600081525061220c565b505050565b6002600054141561102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190614f21565b60405180910390fd5b600260008190555061103a6137a0565b80341461107c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107390614fc1565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590615341565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114991906154ed565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060115461119a91906154ed565b6011819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111e6573d6000803e3d6000fd5b5060016000819055505050565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc90615201565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561135f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611356906152e1565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ae6137a0565b6113b8600061381e565b565b6000601154826113ca91906154ed565b9050919050565b600a8060000154905081565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6013600083815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156114da5750600073ffffffffffffffffffffffffffffffffffffffff166013600084815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8061154657506013600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c906152c1565b60405180910390fd5b6115b2600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611df5565b60016013600084815260200190815260200160002060060160006101000a81548160ff021916908315150217905550806013600084815260200190815260200160002060050181905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161165b93929190614da7565b600060405180830381600087803b15801561167557600080fd5b505af1158015611689573d6000803e3d6000fd5b505050505050565b6060600280546116a09061561f565b80601f01602080910402602001604051908101604052809291908181526020018280546116cc9061561f565b80156117195780601f106116ee57610100808354040283529160200191611719565b820191906000526020600020905b8154815290600101906020018083116116fc57829003601f168201915b5050505050905090565b6013600082815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156117f65750600073ffffffffffffffffffffffffffffffffffffffff166013600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8061186257506013600082815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806118ba5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f090615141565b60405180910390fd5b600115156013600083815260200190815260200160002060060160009054906101000a900460ff16151514611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a906150e1565b60405180910390fd5b611990600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611df5565b60006013600083815260200190815260200160002060060160006101000a81548160ff02191690831515021790555060006013600083815260200190815260200160002060050181905550600073ffffffffffffffffffffffffffffffffffffffff166013600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b1257600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd306013600085815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401611adb93929190614d70565b600060405180830381600087803b158015611af557600080fd5b505af1158015611b09573d6000803e3d6000fd5b50505050611bda565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd306013600085815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401611ba793929190614d70565b600060405180830381600087803b158015611bc157600080fd5b505af1158015611bd5573d6000803e3d6000fd5b505050505b50565b60606000601060008481526020019081526020016000208054611bff9061561f565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2b9061561f565b8015611c785780601f10611c4d57610100808354040283529160200191611c78565b820191906000526020600020905b815481529060010190602001808311611c5b57829003601f168201915b505050505090506000815111611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba90615241565b60405180910390fd5b601060008481526020019081526020016000208054611ce19061561f565b80601f0160208091040260200160405190810160405280929190818152602001828054611d0d9061561f565b8015611d5a5780601f10611d2f57610100808354040283529160200191611d5a565b820191906000526020600020905b815481529060010190602001808311611d3d57829003601f168201915b5050505050915050919050565b600c8054611d749061561f565b80601f0160208091040260200160405190810160405280929190818152602001828054611da09061561f565b8015611ded5780601f10611dc257610100808354040283529160200191611ded565b820191906000526020600020905b815481529060010190602001808311611dd057829003601f168201915b505050505081565b611e07611e006133e3565b83836138e4565b5050565b60026000541415611e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4890614f21565b60405180910390fd5b60026000819055506013600083815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611f2c5750600073ffffffffffffffffffffffffffffffffffffffff166013600084815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80611f9857506013600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fce906150c1565b60405180910390fd5b600015156013600084815260200190815260200160002060060160009054906101000a900460ff16151514612041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203890615361565b60405180910390fd5b803414612083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207a906152a1565b60405180910390fd5b6120b0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611df5565b826013600084815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561216d573d6000803e3d6000fd5b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3385856040518463ffffffff1660e01b81526004016121cd93929190614da7565b600060405180830381600087803b1580156121e757600080fd5b505af11580156121fb573d6000803e3d6000fd5b505050506001600081905550505050565b61221d6122176133e3565b836134a4565b61225c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225390615001565b60405180910390fd5b61226884848484613a51565b50505050565b600260005414156122b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ab90614f21565b60405180910390fd5b6002600081905550600115156013600083815260200190815260200160002060060160009054906101000a900460ff16151514612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d906151a1565b60405180910390fd5b833414612368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235f90615121565b60405180910390fd5b612395600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611df5565b600073ffffffffffffffffffffffffffffffffffffffff166013600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612482576013600082815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561247c573d6000803e3d6000fd5b50612500565b6013600082815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156124fe573d6000803e3d6000fd5b505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3087846040518463ffffffff1660e01b815260040161255f93929190614da7565b600060405180830381600087803b15801561257957600080fd5b505af115801561258d573d6000803e3d6000fd5b50505050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156125f9573d6000803e3d6000fd5b50846013600083815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600015156013600083815260200190815260200160002060060160009054906101000a905050506000601360008381526020019081526020016000206005018190555034601160008282546126a491906154ed565b9250508190555034601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f691906154ed565b601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016000819055505050505050565b6127506137a0565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d790615301565b60405180910390fd5b600e548111612824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281b906150a1565b60405180910390fd5b80600e8190555050565b606061283982613398565b60006007600084815260200190815260200160002080546128599061561f565b80601f01602080910402602001604051908101604052809291908181526020018280546128859061561f565b80156128d25780601f106128a7576101008083540402835291602001916128d2565b820191906000526020600020905b8154815290600101906020018083116128b557829003601f168201915b5050505050905060006128e3613aad565b90506000815114156128f957819250505061293c565b60008251111561292e578082604051602001612916929190614d31565b6040516020818303038152906040529250505061293c565b61293784613ac4565b925050505b919050565b6129496137a0565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600d8054612a2e9061561f565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5a9061561f565b8015612aa75780601f10612a7c57610100808354040283529160200191612aa7565b820191906000526020600020905b815481529060010190602001808311612a8a57829003601f168201915b505050505081565b612ab76137a0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1e90615081565b60405180910390fd5b612b308161381e565b50565b60026000541415612b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7090614f21565b60405180910390fd5b6002600081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415612c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0990614fa1565b60405180910390fd5b600115156013600086815260200190815260200160002060060160009054906101000a900460ff16151514612c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7390615281565b60405180910390fd5b823414612cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb590614f01565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166013600086815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612dab576013600085815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612da5573d6000803e3d6000fd5b50612e29565b6013600085815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612e27573d6000803e3d6000fd5b505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033876040518463ffffffff1660e01b8152600401612e8893929190614da7565b600060405180830381600087803b158015612ea257600080fd5b505af1158015612eb6573d6000803e3d6000fd5b50505050336013600086815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006013600086815260200190815260200160002060060160006101000a81548160ff02191690831515021790555060006013600086815260200190815260200160002060050181905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612fc2573d6000803e3d6000fd5b50600160008190555050505050565b60026000541415613017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300e90614f21565b60405180910390fd5b6002600081905550600e5461302c600961338a565b141561306d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306490615021565b60405180910390fd5b6130776009613b2c565b6000613083600961338a565b905061308f3382613b42565b6130998183613d1c565b816010600083815260200190815260200160002090805190602001906130c092919061416d565b506040518060e00160405280828152602001600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815250601360008381526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020190805190602001906131dd92919061416d565b5060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816005015560c08201518160060160006101000a81548160ff021916908315150217905550905050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16817f075fb7fd1ecd2e51f3b8d1dc8bfbd3c77c6547ddbd967e194636fcd46d91f9258433600080600060405161330c959493929190614e67565b60405180910390a350600160008190555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081600001549050919050565b6133a181613d90565b6133e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d790614ec1565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661345e8361123c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806134b08361123c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806134f257506134f1818561298d565b5b8061353057508373ffffffffffffffffffffffffffffffffffffffff16613518846109a3565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166135598261123c565b73ffffffffffffffffffffffffffffffffffffffff16146135af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a690615181565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561361f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361690615321565b60405180910390fd5b61362a838383613dfc565b6136356000826133eb565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461368591906154ed565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136dc9190615466565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461379b838383613e01565b505050565b6137a86133e3565b73ffffffffffffffffffffffffffffffffffffffff166137c66113dd565b73ffffffffffffffffffffffffffffffffffffffff161461381c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613813906151c1565b60405180910390fd5b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394a90615221565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051613a449190614e2a565b60405180910390a3505050565b613a5c848484613539565b613a6884848484613e06565b613aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a9e90614fe1565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060613acf82613398565b6000613ad9613aad565b90506000815111613af95760405180602001604052806000815250613b24565b80613b0384613f9d565b604051602001613b14929190614d31565b6040516020818303038152906040525b915050919050565b6001816000016000828254019250508190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba990614f81565b60405180910390fd5b613bbb81613d90565b15613bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bf290615261565b60405180910390fd5b613c0760008383613dfc565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c579190615466565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613d1860008383613e01565b5050565b613d2582613d90565b613d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d5b906151e1565b60405180910390fd5b80600760008481526020019081526020016000209080519060200190613d8b92919061416d565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6000613e278473ffffffffffffffffffffffffffffffffffffffff1661414a565b15613f90578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613e506133e3565b8786866040518563ffffffff1660e01b8152600401613e729493929190614dde565b602060405180830381600087803b158015613e8c57600080fd5b505af1925050508015613ebd57506040513d601f19601f82011682018060405250810190613eba91906145df565b60015b613f40573d8060008114613eed576040519150601f19603f3d011682016040523d82523d6000602084013e613ef2565b606091505b50600081511415613f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f2f90614ee1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613f95565b600190505b949350505050565b60606000821415613fe5576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050614145565b600082905060005b6000821461401757808061400090615682565b915050600a8261401091906154bc565b9150613fed565b60008167ffffffffffffffff811115614059577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561408b5781602001600182028036833780820191505090505b5090505b6000851461413e576001826140a491906154ed565b9150600a856140b391906156cb565b60306140bf9190615466565b60f81b8183815181106140fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561413791906154bc565b945061408f565b8093505050505b919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546141799061561f565b90600052602060002090601f01602090048101928261419b57600085556141e2565b82601f106141b457805160ff19168380011785556141e2565b828001600101855582156141e2579182015b828111156141e15782518255916020019190600101906141c6565b5b5090506141ef91906141f3565b5090565b5b8082111561420c5760008160009055506001016141f4565b5090565b600061422361421e846153c1565b61539c565b90508281526020810184848401111561423b57600080fd5b6142468482856155dd565b509392505050565b600061426161425c846153f2565b61539c565b90508281526020810184848401111561427957600080fd5b6142848482856155dd565b509392505050565b60008135905061429b81615ddf565b92915050565b6000813590506142b081615df6565b92915050565b6000813590506142c581615e0d565b92915050565b6000815190506142da81615e0d565b92915050565b600082601f8301126142f157600080fd5b8135614301848260208601614210565b91505092915050565b600082601f83011261431b57600080fd5b813561432b84826020860161424e565b91505092915050565b60008135905061434381615e24565b92915050565b60006020828403121561435b57600080fd5b60006143698482850161428c565b91505092915050565b6000806040838503121561438557600080fd5b60006143938582860161428c565b92505060206143a48582860161428c565b9150509250929050565b6000806000606084860312156143c357600080fd5b60006143d18682870161428c565b93505060206143e28682870161428c565b92505060406143f386828701614334565b9150509250925092565b6000806000806080858703121561441357600080fd5b60006144218782880161428c565b94505060206144328782880161428c565b935050604061444387828801614334565b925050606085013567ffffffffffffffff81111561446057600080fd5b61446c878288016142e0565b91505092959194509250565b6000806040838503121561448b57600080fd5b60006144998582860161428c565b92505060206144aa858286016142a1565b9150509250929050565b600080604083850312156144c757600080fd5b60006144d58582860161428c565b92505060206144e685828601614334565b9150509250929050565b60008060006060848603121561450557600080fd5b60006145138682870161428c565b935050602061452486828701614334565b925050604061453586828701614334565b9150509250925092565b600080600080600060a0868803121561455757600080fd5b60006145658882890161428c565b955050602061457688828901614334565b945050604061458788828901614334565b935050606061459888828901614334565b92505060806145a988828901614334565b9150509295509295909350565b6000602082840312156145c857600080fd5b60006145d6848285016142b6565b91505092915050565b6000602082840312156145f157600080fd5b60006145ff848285016142cb565b91505092915050565b60006020828403121561461a57600080fd5b600082013567ffffffffffffffff81111561463457600080fd5b6146408482850161430a565b91505092915050565b60006020828403121561465b57600080fd5b600061466984828501614334565b91505092915050565b6000806040838503121561468557600080fd5b600061469385828601614334565b92505060206146a485828601614334565b9150509250929050565b600080600080608085870312156146c457600080fd5b60006146d287828801614334565b94505060206146e387828801614334565b93505060406146f487828801614334565b925050606061470587828801614334565b91505092959194509250565b61471a81615595565b82525050565b61472981615521565b82525050565b61473881615533565b82525050565b600061474982615423565b6147538185615439565b93506147638185602086016155ec565b61476c816157b8565b840191505092915050565b614780816155a7565b82525050565b60006147918261542e565b61479b818561544a565b93506147ab8185602086016155ec565b6147b4816157b8565b840191505092915050565b60006147ca8261542e565b6147d4818561545b565b93506147e48185602086016155ec565b80840191505092915050565b60006147fd60058361544a565b9150614808826157c9565b602082019050919050565b600061482060058361544a565b915061482b826157f2565b602082019050919050565b600061484360068361544a565b915061484e8261581b565b602082019050919050565b600061486660058361544a565b915061487182615844565b602082019050919050565b600061488960068361544a565b91506148948261586d565b602082019050919050565b60006148ac60058361544a565b91506148b782615896565b602082019050919050565b60006148cf60058361544a565b91506148da826158bf565b602082019050919050565b60006148f260058361544a565b91506148fd826158e8565b602082019050919050565b600061491560068361544a565b915061492082615911565b602082019050919050565b600061493860058361544a565b91506149438261593a565b602082019050919050565b600061495b60058361544a565b915061496682615963565b602082019050919050565b600061497e60058361544a565b91506149898261598c565b602082019050919050565b60006149a160058361544a565b91506149ac826159b5565b602082019050919050565b60006149c460068361544a565b91506149cf826159de565b602082019050919050565b60006149e760058361544a565b91506149f282615a07565b602082019050919050565b6000614a0a60058361544a565b9150614a1582615a30565b602082019050919050565b6000614a2d60068361544a565b9150614a3882615a59565b602082019050919050565b6000614a5060058361544a565b9150614a5b82615a82565b602082019050919050565b6000614a7360058361544a565b9150614a7e82615aab565b602082019050919050565b6000614a9660068361544a565b9150614aa182615ad4565b602082019050919050565b6000614ab960058361544a565b9150614ac482615afd565b602082019050919050565b6000614adc60068361544a565b9150614ae782615b26565b602082019050919050565b6000614aff60058361544a565b9150614b0a82615b4f565b602082019050919050565b6000614b2260068361544a565b9150614b2d82615b78565b602082019050919050565b6000614b4560058361544a565b9150614b5082615ba1565b602082019050919050565b6000614b6860058361544a565b9150614b7382615bca565b602082019050919050565b6000614b8b60058361544a565b9150614b9682615bf3565b602082019050919050565b6000614bae60058361544a565b9150614bb982615c1c565b602082019050919050565b6000614bd160058361544a565b9150614bdc82615c45565b602082019050919050565b6000614bf460058361544a565b9150614bff82615c6e565b602082019050919050565b6000614c1760068361544a565b9150614c2282615c97565b602082019050919050565b6000614c3a60068361544a565b9150614c4582615cc0565b602082019050919050565b6000614c5d60058361544a565b9150614c6882615ce9565b602082019050919050565b6000614c8060058361544a565b9150614c8b82615d12565b602082019050919050565b6000614ca360058361544a565b9150614cae82615d3b565b602082019050919050565b6000614cc660058361544a565b9150614cd182615d64565b602082019050919050565b6000614ce960068361544a565b9150614cf482615d8d565b602082019050919050565b6000614d0c60068361544a565b9150614d1782615db6565b602082019050919050565b614d2b8161558b565b82525050565b6000614d3d82856147bf565b9150614d4982846147bf565b91508190509392505050565b6000602082019050614d6a6000830184614720565b92915050565b6000606082019050614d856000830186614720565b614d926020830185614711565b614d9f6040830184614d22565b949350505050565b6000606082019050614dbc6000830186614720565b614dc96020830185614720565b614dd66040830184614d22565b949350505050565b6000608082019050614df36000830187614720565b614e006020830186614720565b614e0d6040830185614d22565b8181036060830152614e1f818461473e565b905095945050505050565b6000602082019050614e3f600083018461472f565b92915050565b60006020820190508181036000830152614e5f8184614786565b905092915050565b600060a0820190508181036000830152614e818188614786565b9050614e906020830187614720565b614e9d6040830186614720565b614eaa6060830185614777565b614eb7608083018461472f565b9695505050505050565b60006020820190508181036000830152614eda816147f0565b9050919050565b60006020820190508181036000830152614efa81614813565b9050919050565b60006020820190508181036000830152614f1a81614836565b9050919050565b60006020820190508181036000830152614f3a81614859565b9050919050565b60006020820190508181036000830152614f5a8161487c565b9050919050565b60006020820190508181036000830152614f7a8161489f565b9050919050565b60006020820190508181036000830152614f9a816148c2565b9050919050565b60006020820190508181036000830152614fba816148e5565b9050919050565b60006020820190508181036000830152614fda81614908565b9050919050565b60006020820190508181036000830152614ffa8161492b565b9050919050565b6000602082019050818103600083015261501a8161494e565b9050919050565b6000602082019050818103600083015261503a81614971565b9050919050565b6000602082019050818103600083015261505a81614994565b9050919050565b6000602082019050818103600083015261507a816149b7565b9050919050565b6000602082019050818103600083015261509a816149da565b9050919050565b600060208201905081810360008301526150ba816149fd565b9050919050565b600060208201905081810360008301526150da81614a20565b9050919050565b600060208201905081810360008301526150fa81614a43565b9050919050565b6000602082019050818103600083015261511a81614a66565b9050919050565b6000602082019050818103600083015261513a81614a89565b9050919050565b6000602082019050818103600083015261515a81614aac565b9050919050565b6000602082019050818103600083015261517a81614acf565b9050919050565b6000602082019050818103600083015261519a81614af2565b9050919050565b600060208201905081810360008301526151ba81614b15565b9050919050565b600060208201905081810360008301526151da81614b38565b9050919050565b600060208201905081810360008301526151fa81614b5b565b9050919050565b6000602082019050818103600083015261521a81614b7e565b9050919050565b6000602082019050818103600083015261523a81614ba1565b9050919050565b6000602082019050818103600083015261525a81614bc4565b9050919050565b6000602082019050818103600083015261527a81614be7565b9050919050565b6000602082019050818103600083015261529a81614c0a565b9050919050565b600060208201905081810360008301526152ba81614c2d565b9050919050565b600060208201905081810360008301526152da81614c50565b9050919050565b600060208201905081810360008301526152fa81614c73565b9050919050565b6000602082019050818103600083015261531a81614c96565b9050919050565b6000602082019050818103600083015261533a81614cb9565b9050919050565b6000602082019050818103600083015261535a81614cdc565b9050919050565b6000602082019050818103600083015261537a81614cff565b9050919050565b60006020820190506153966000830184614d22565b92915050565b60006153a66153b7565b90506153b28282615651565b919050565b6000604051905090565b600067ffffffffffffffff8211156153dc576153db615789565b5b6153e5826157b8565b9050602081019050919050565b600067ffffffffffffffff82111561540d5761540c615789565b5b615416826157b8565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006154718261558b565b915061547c8361558b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156154b1576154b06156fc565b5b828201905092915050565b60006154c78261558b565b91506154d28361558b565b9250826154e2576154e161572b565b5b828204905092915050565b60006154f88261558b565b91506155038361558b565b925082821015615516576155156156fc565b5b828203905092915050565b600061552c8261556b565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006155a0826155b9565b9050919050565b60006155b28261558b565b9050919050565b60006155c4826155cb565b9050919050565b60006155d68261556b565b9050919050565b82818337600083830152505050565b60005b8381101561560a5780820151818401526020810190506155ef565b83811115615619576000848401525b50505050565b6000600282049050600182168061563757607f821691505b6020821081141561564b5761564a61575a565b5b50919050565b61565a826157b8565b810181811067ffffffffffffffff8211171561567957615678615789565b5b80604052505050565b600061568d8261558b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156156c0576156bf6156fc565b5b600182019050919050565b60006156d68261558b565b91506156e18361558b565b9250826156f1576156f061572b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f5a3a3235000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3236000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31310000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3238000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a32300000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3134000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3230000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a39000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31380000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3138000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3137000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a35000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3135000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a32310000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3331000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a33000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31320000000000000000000000000000000000000000000000000000600082015250565b7f4552523a38000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3136000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a32330000000000000000000000000000000000000000000000000000600082015250565b7f4552523a37000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31350000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3232000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a32320000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3330000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3239000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3133000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3234000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a34000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3231000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31300000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31340000000000000000000000000000000000000000000000000000600082015250565b7f4552523a36000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3132000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a32000000000000000000000000000000000000000000000000000000600082015250565b7f4f5a3a3233000000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31390000000000000000000000000000000000000000000000000000600082015250565b7f4552523a31330000000000000000000000000000000000000000000000000000600082015250565b615de881615521565b8114615df357600080fd5b50565b615dff81615533565b8114615e0a57600080fd5b50565b615e168161553f565b8114615e2157600080fd5b50565b615e2d8161558b565b8114615e3857600080fd5b5056fea26469706673582212208a08a74c0f6272affa9df6d7917bb9dcd141bde43f60dda4ee88bad8610f7b4864736f6c63430008040033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000000942445441534b4e46540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000442544e4600000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : tokenName (string): BDTASKNFT
Arg [1] : tokenSymbol (string): BTNF
Arg [2] : gotMaxTokenSupply (uint256): 100000000

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [4] : 42445441534b4e46540000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 42544e4600000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

16671:8155:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7121:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18232:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7818:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8753:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8419:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23066:484;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18131:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9259:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22296:338;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9524:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22640:420;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24695:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7609:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7432:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16190:103;;;;;;;;;;;;;:::i;:::-;;24550:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16830:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15986:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19411:485;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7924:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19902:804;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18586:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16893:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8928:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21588:702;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9681:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23556:988;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18337:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14813:469;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18028:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9089:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16924:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16299:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20712:870;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18833:572;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7121:305;7223:4;7275:25;7260:40;;;:11;:40;;;;:105;;;;7332:33;7317:48;;;:11;:48;;;;7260:105;:158;;;;7382:36;7406:11;7382:23;:36::i;:::-;7260:158;7240:178;;7121:305;;;:::o;18232:99::-;18278:7;18304:19;:9;:17;:19::i;:::-;18297:26;;18232:99;:::o;7818:100::-;7872:13;7905:5;7898:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7818:100;:::o;8753:169::-;8829:7;8849:23;8864:7;8849:14;:23::i;:::-;8890:15;:24;8906:7;8890:24;;;;;;;;;;;;;;;;;;;;;8883:31;;8753:169;;;:::o;8419:328::-;8500:13;8516:23;8531:7;8516:14;:23::i;:::-;8500:39;;8564:5;8558:11;;:2;:11;;;;8550:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;8628:5;8612:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;8637:37;8654:5;8661:12;:10;:12::i;:::-;8637:16;:37::i;:::-;8612:62;8590:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;8718:21;8727:2;8731:7;8718:8;:21::i;:::-;8419:328;;;:::o;23066:484::-;23162:4;23210:1;23186:9;:21;23196:10;23186:21;;;;;;;;;;;;;;;;:25;23178:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;23256:18;:27;23275:7;23256:27;;;;;;;;;;;:38;;;;;;;;;;;;23242:52;;:10;:52;;;:106;;;;;23346:1;23298:50;;:18;:27;23317:7;23298:27;;;;;;;;;;;:36;;;;;;;;;;;;:50;;;;23242:106;23241:162;;;;23367:18;:27;23386:7;23367:27;;;;;;;;;;;:36;;;;;;;;;;;;23353:50;;:10;:50;;;;23241:162;23233:181;;;;;;;;;;;;:::i;:::-;;;;;;;;;23453:7;23428:9;:21;23438:10;23428:21;;;;;;;;;;;;;;;;:32;23425:118;;23483:4;23476:11;;;;23425:118;23526:5;23519:12;;23066:484;;;;;;:::o;18131:95::-;18175:7;18202:15;;18194:24;;18131:95;:::o;9259:259::-;9420:41;9439:12;:10;:12::i;:::-;9453:7;9420:18;:41::i;:::-;9412:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;9482:28;9492:4;9498:2;9502:7;9482:9;:28::i;:::-;9259:259;;;:::o;22296:338::-;22355:4;14417:1;14559:7;;:19;;14551:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;14417:1;14599:7;:18;;;;22393:11:::1;;;;;;;;;;;22379:25;;:10;:25;;;;22371:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;22474:9;22450;:21;22460:10;22450:21;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;22426:9;:21;22436:10;22426:21;;;;;;;;;;;;;;;:57;;;;22502:11;;;;;;;;;;;22494:29;;:40;22524:9;22494:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22595:9;22570:22;;:34;;;;:::i;:::-;22545:22;:59;;;;22622:4;22615:11;;14373:1:::0;14640:7;:22;;;;22296:338;:::o;9524:151::-;9628:39;9645:4;9651:2;9655:7;9628:39;;;;;;;;;;;;:16;:39::i;:::-;9524:151;;;:::o;22640:420::-;14417:1;14559:7;;:19;;14551:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;14417:1;14599:7;:18;;;;15947:13:::1;:11;:13::i;:::-;22771:14:::2;22758:9;:27;22750:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;22836:14;22815:9;:17;22825:6;22815:17;;;;;;;;;;;;;;;;:35;;22807:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;22912:14;22892:9;:17;22902:6;22892:17;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;22872:9;:17;22882:6;22872:17;;;;;;;;;;;;;;;:54;;;;22987:14;22962:22;;:39;;;;:::i;:::-;22937:22;:64;;;;23020:6;23012:24;;:40;23037:14;23012:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;14373:1:::0;14640:7;:22;;;;22640:420;;:::o;24695:128::-;24761:7;24791:9;:24;24801:13;24791:24;;;;;;;;;;;;;;;;24784:31;;24695:128;;;:::o;7609:203::-;7681:7;7701:13;7717:7;:16;7725:7;7717:16;;;;;;;;;;;;;;;;;;;;;7701:32;;7769:1;7752:19;;:5;:19;;;;7744:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;7799:5;7792:12;;;7609:203;;;:::o;7432:171::-;7504:7;7549:1;7532:19;;:5;:19;;;;7524:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;7579:9;:16;7589:5;7579:16;;;;;;;;;;;;;;;;7572:23;;7432:171;;;:::o;16190:103::-;15947:13;:11;:13::i;:::-;16255:30:::1;16282:1;16255:18;:30::i;:::-;16190:103::o:0;24550:139::-;24620:7;24659:22;;24646:12;:35;;;;:::i;:::-;24639:42;;24550:139;;;:::o;16830:31::-;;;;;;;;;:::o;15986:87::-;16032:7;16059:6;;;;;;;;;;;16052:13;;15986:87;:::o;19411:485::-;19501:18;:27;19520:7;19501:27;;;;;;;;;;;:38;;;;;;;;;;;;19487:52;;:10;:52;;;:106;;;;;19591:1;19543:50;;:18;:27;19562:7;19543:27;;;;;;;;;;;:36;;;;;;;;;;;;:50;;;19487:106;19486:162;;;;19612:18;:27;19631:7;19612:27;;;;;;;;;;;:36;;;;;;;;;;;;19598:50;;:10;:50;;;19486:162;19478:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;19669:35;19687:10;;;;;;;;;;;19699:4;19669:17;:35::i;:::-;19753:4;19715:18;:27;19734:7;19715:27;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;19804:5;19768:18;:27;19787:7;19768:27;;;;;;;;;;;:33;;:41;;;;19828:10;;;;;;;;;;;19820:32;;;19853:10;19873:4;19880:7;19820:68;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19411:485;;:::o;7924:104::-;7980:13;8013:7;8006:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7924:104;:::o;19902:804::-;19979:18;:27;19998:7;19979:27;;;;;;;;;;;:38;;;;;;;;;;;;19965:52;;:10;:52;;;:106;;;;;20069:1;20021:50;;:18;:27;20040:7;20021:27;;;;;;;;;;;:36;;;;;;;;;;;;:50;;;19965:106;19964:162;;;;20090:18;:27;20109:7;20090:27;;;;;;;;;;;:36;;;;;;;;;;;;20076:50;;:10;:50;;;19964:162;:191;;;;20144:11;;;;;;;;;;;20130:25;;:10;:25;;;19964:191;19956:209;;;;;;;;;;;;:::i;:::-;;;;;;;;;20223:4;20184:43;;:18;:27;20203:7;20184:27;;;;;;;;;;;:35;;;;;;;;;;;;:43;;;20176:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20248:35;20266:10;;;;;;;;;;;20278:4;20248:17;:35::i;:::-;20332:5;20294:18;:27;20313:7;20294:27;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;20384:1;20348:18;:27;20367:7;20348:27;;;;;;;;;;;:33;;:37;;;;20447:1;20399:50;;:18;:27;20418:7;20399:27;;;;;;;;;;;:36;;;;;;;;;;;;:50;;;20396:303;;;20473:10;;;;;;;;;;;20465:32;;;20506:4;20513:18;:27;20532:7;20513:27;;;;;;;;;;;:38;;;;;;;;;;;;20553:7;20465:96;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20396:303;;;20601:10;;;;;;;;;;;20593:32;;;20634:4;20641:18;:27;20660:7;20641:27;;;;;;;;;;;:36;;;;;;;;;;;;20679:7;20593:94;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20396:303;19902:804;:::o;18586:241::-;18649:13;18674:25;18708:11;:20;18720:7;18708:20;;;;;;;;;;;18674:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18770:1;18748:12;:19;:23;18740:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;18799:11;:20;18811:7;18799:20;;;;;;;;;;;18792:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18586:241;;;:::o;16893:24::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8928:155::-;9023:52;9042:12;:10;:12::i;:::-;9056:8;9066;9023:18;:52::i;:::-;8928:155;;:::o;21588:702::-;14417:1;14559:7;;:19;;14551:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;14417:1;14599:7;:18;;;;21736::::1;:27;21755:7;21736:27;;;;;;;;;;;:38;;;;;;;;;;;;21722:52;;:10;:52;;;:106;;;;;21826:1;21778:50;;:18;:27;21797:7;21778:27;;;;;;;;;;;:36;;;;;;;;;;;;:50;;;21722:106;21721:162;;;;21847:18;:27;21866:7;21847:27;;;;;;;;;;;:36;;;;;;;;;;;;21833:50;;:10;:50;;;21721:162;21713:181;;;;;;;;;;;;:::i;:::-;;;;;;;;;21952:5;21913:44;;:18;:27;21932:7;21913:27;;;;;;;;;;;:35;;;;;;;;;;;;:44;;;21905:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;22000:14;21987:9;:27;21979:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;22036:35;22054:10;;;;;;;;;;;22066:4;22036:17;:35::i;:::-;22129:15;22082:18;:27;22101:7;22082:27;;;;;;;;;;;:36;;;:63;;;;;;;;;;;;;;;;;;22164:11;;;;;;;;;;;22156:29;;:45;22186:14;22156:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22220:10;;;;;;;;;;;22212:32;;;22245:10;22257:15;22274:7;22212:70;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14373:1:::0;14640:7;:22;;;;21588:702;;;:::o;9681:239::-;9812:41;9831:12;:10;:12::i;:::-;9845:7;9812:18;:41::i;:::-;9804:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;9874:38;9888:4;9894:2;9898:7;9907:4;9874:13;:38::i;:::-;9681:239;;;;:::o;23556:988::-;14417:1;14559:7;;:19;;14551:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;14417:1;14599:7;:18;;;;23754:4:::1;23715:43;;:18;:27;23734:7;23715:27;;;;;;;;;;;:35;;;;;;;;;;;;:43;;;23707:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23801:9;23788;:22;23780:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;23832:35;23850:10;;;;;;;;;;;23862:4;23832:17;:35::i;:::-;23929:1;23881:50;;:18;:27;23900:7;23881:27;;;;;;;;;;;:36;;;;;;;;;;;;:50;;;23878:261;;;23955:18;:27;23974:7;23955:27;;;;;;;;;;;:38;;;;;;;;;;;;23947:56;;:70;24004:12;23947:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23878:261;;;24067:18;:27;24086:7;24067:27;;;;;;;;;;;:36;;;;;;;;;;;;24059:54;;:68;24114:12;24059:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23878:261;24157:10;;;;;;;;;;;24149:32;;;24190:4;24197:6;24205:7;24149:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24232:11;;;;;;;;;;;24224:29;;:40;24254:9;24224:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24322:6;24275:18;:27;24294:7;24275:27;;;;;;;;;;;:36;;;:54;;;;;;;;;;;;;;;;;;24379:5;24340:44;;:18;:27;24359:7;24340:27;;;;;;;;;;;:35;;;;;;;;;::::0;;:44;24431:1:::1;24395:18;:27;24414:7;24395:27;;;;;;;;;;;:33;;:37;;;;24467:9;24443:22;;:33;;;;;;;:::i;:::-;;;;;;;;24527:9;24507;:17;24517:6;24507:17;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;24487:9;:17;24497:6;24487:17;;;;;;;;;;;;;;;:49;;;;14373:1:::0;14640:7;:22;;;;23556:988;;;;;:::o;18337:243::-;15947:13;:11;:13::i;:::-;18435:11:::1;;;;;;;;;;;18421:25;;:10;:25;;;18413:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;18498:15;;18475:20;:38;18467:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18552:20;18534:15;:38;;;;18337:243:::0;:::o;14813:469::-;14886:13;14912:23;14927:7;14912:14;:23::i;:::-;14946;14972:10;:19;14983:7;14972:19;;;;;;;;;;;14946:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15002:18;15023:10;:8;:10::i;:::-;15002:31;;15070:1;15054:4;15048:18;:23;15044:72;;;15095:9;15088:16;;;;;;15044:72;15156:1;15136:9;15130:23;:27;15126:108;;;15205:4;15211:9;15188:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15174:48;;;;;;15126:108;15251:23;15266:7;15251:14;:23::i;:::-;15244:30;;;;14813:469;;;;:::o;18028:97::-;15947:13;:11;:13::i;:::-;18108:9:::1;18095:10;;:22;;;;;;;;;;;;;;;;;;18028:97:::0;:::o;9089:164::-;9186:4;9210:18;:25;9229:5;9210:25;;;;;;;;;;;;;;;:35;9236:8;9210:35;;;;;;;;;;;;;;;;;;;;;;;;;9203:42;;9089:164;;;;:::o;16924:26::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16299:168::-;15947:13;:11;:13::i;:::-;16408:1:::1;16388:22;;:8;:22;;;;16380:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;16431:28;16450:8;16431:18;:28::i;:::-;16299:168:::0;:::o;20712:870::-;14417:1;14559:7;;:19;;14551:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;14417:1;14599:7;:18;;;;20876:11:::1;;;;;;;;;;;20862:25;;:10;:25;;;;20854:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;20955:4;20916:43;;:18;:27;20935:7;20916:27;;;;;;;;;;;:35;;;;;;;;;;;;:43;;;20908:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21002:15;20989:9;:28;20981:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21090:1;21042:50;;:18;:27;21061:7;21042:27;;;;;;;;;;;:36;;;;;;;;;;;;:50;;;21039:229;;;21108:18;:27;21127:7;21108:27;;;;;;;;;;;:38;;;;;;;;;;;;:47;;:59;21156:10;21108:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21039:229;;;21199:18;:27;21218:7;21199:27;;;;;;;;;;;:36;;;;;;;;;;;;:45;;:57;21245:10;21199:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21039:229;21286:10;;;;;;;;;;;21278:32;;;21319:4;21326:10;21338:7;21278:68;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21404:10;21357:18;:27;21376:7;21357:27;;;;;;;;;;;:36;;;:58;;;;;;;;;;;;;;;;;;21464:5;21426:18;:27;21445:7;21426:27;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;21516:1;21480:18;:27;21499:7;21480:27;;;;;;;;;;;:33;;:37;;;;21536:11;;;;;;;;;;;21528:29;;:46;21558:15;21528:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14373:1:::0;14640:7;:22;;;;20712:870;;;;:::o;18833:572::-;14417:1;14559:7;;:19;;14551:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;14417:1;14599:7;:18;;;;18938:15:::1;;18915:19;:9;:17;:19::i;:::-;:38;;18907:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18974:21;:9;:19;:21::i;:::-;19006:18;19027:19;:9;:17;:19::i;:::-;19006:40;;19057:29;19063:10;19075;19057:5;:29::i;:::-;19097;19110:10;19122:3;19097:12;:29::i;:::-;19163:3;19137:11;:23;19149:10;19137:23;;;;;;;;;;;:29;;;;;;;;;;;;:::i;:::-;;19210:91;;;;;;;;19221:10;19210:91;;;;19233:10;;;;;;;;;;;19210:91;;;;;;19245:3;19210:91;;;;19258:10;19210:91;;;;;;19287:1;19210:91;;;;;;19292:1;19210:91;;;;19295:5;19210:91;;;;::::0;19177:18:::1;:30;19196:10;19177:30;;;;;;;;;;;:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19347:10;;;;;;;;;;;19317:80;;19335:10;19317:80;19359:3;19364:10;19384:1;19388::::0;19391:5:::1;19317:80;;;;;;;;;;:::i;:::-;;;;;;;;14628:1;14373::::0;14640:7;:22;;;;18833:572;:::o;6409:157::-;6494:4;6533:25;6518:40;;;:11;:40;;;;6511:47;;6409:157;;;:::o;13727:114::-;13792:7;13819;:14;;;13812:21;;13727:114;;;:::o;12616:116::-;12698:16;12706:7;12698;:16::i;:::-;12690:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;12616:116;:::o;4544:98::-;4597:7;4624:10;4617:17;;4544:98;:::o;12169:174::-;12271:2;12244:15;:24;12260:7;12244:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12327:7;12323:2;12289:46;;12298:23;12313:7;12298:14;:23::i;:::-;12289:46;;;;;;;;;;;;12169:174;;:::o;10290:264::-;10383:4;10400:13;10416:23;10431:7;10416:14;:23::i;:::-;10400:39;;10469:5;10458:16;;:7;:16;;;:52;;;;10478:32;10495:5;10502:7;10478:16;:32::i;:::-;10458:52;:87;;;;10538:7;10514:31;;:20;10526:7;10514:11;:20::i;:::-;:31;;;10458:87;10450:96;;;10290:264;;;;:::o;11697:466::-;11822:4;11795:31;;:23;11810:7;11795:14;:23::i;:::-;:31;;;11787:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;11869:1;11855:16;;:2;:16;;;;11847:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;11892:39;11913:4;11919:2;11923:7;11892:20;:39::i;:::-;11942:29;11959:1;11963:7;11942:8;:29::i;:::-;12001:1;11982:9;:15;11992:4;11982:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;12030:1;12013:9;:13;12023:2;12013:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;12061:2;12042:7;:16;12050:7;12042:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12098:7;12094:2;12079:27;;12088:4;12079:27;;;;;;;;;;;;12117:38;12137:4;12143:2;12147:7;12117:19;:38::i;:::-;11697:466;;;:::o;16079:105::-;16154:12;:10;:12::i;:::-;16143:23;;:7;:5;:7::i;:::-;:23;;;16135:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;16079:105::o;16473:191::-;16547:16;16566:6;;;;;;;;;;;16547:25;;16592:8;16583:6;;:17;;;;;;;;;;;;;;;;;;16647:8;16616:40;;16637:8;16616:40;;;;;;;;;;;;16473:191;;:::o;12349:261::-;12470:8;12461:17;;:5;:17;;;;12453:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;12537:8;12499:18;:25;12518:5;12499:25;;;;;;;;;;;;;;;:35;12525:8;12499:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12583:8;12561:41;;12576:5;12561:41;;;12593:8;12561:41;;;;;;:::i;:::-;;;;;;;;12349:261;;;:::o;9926:225::-;10039:28;10049:4;10055:2;10059:7;10039:9;:28::i;:::-;10086:47;10109:4;10115:2;10119:7;10128:4;10086:22;:47::i;:::-;10078:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9926:225;;;;:::o;8319:94::-;8370:13;8396:9;;;;;;;;;;;;;;8319:94;:::o;8034:279::-;8107:13;8133:23;8148:7;8133:14;:23::i;:::-;8167:21;8191:10;:8;:10::i;:::-;8167:34;;8243:1;8225:7;8219:21;:25;:86;;;;;;;;;;;;;;;;;8271:7;8280:18;:7;:16;:18::i;:::-;8254:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8219:86;8212:93;;;8034:279;;;:::o;13847:127::-;13954:1;13936:7;:14;;;:19;;;;;;;;;;;13847:127;:::o;10922:381::-;11016:1;11002:16;;:2;:16;;;;10994:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;11048:16;11056:7;11048;:16::i;:::-;11047:17;11039:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;11085:45;11114:1;11118:2;11122:7;11085:20;:45::i;:::-;11158:1;11141:9;:13;11151:2;11141:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;11189:2;11170:7;:16;11178:7;11170:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11232:7;11228:2;11207:33;;11224:1;11207:33;;;;;;;;;;;;11251:44;11279:1;11283:2;11287:7;11251:19;:44::i;:::-;10922:381;;:::o;15288:176::-;15388:16;15396:7;15388;:16::i;:::-;15380:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;15447:9;15425:10;:19;15436:7;15425:19;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;15288:176;;:::o;10157:127::-;10222:4;10274:1;10246:30;;:7;:16;10254:7;10246:16;;;;;;;;;;;;;;;;;;;;;:30;;;;10239:37;;10157:127;;;:::o;13453:92::-;;;;:::o;13551:91::-;;;;:::o;12738:709::-;12849:4;12870:15;:2;:13;;;:15::i;:::-;12866:574;;;12922:2;12906:36;;;12943:12;:10;:12::i;:::-;12957:4;12963:7;12972:4;12906:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12902:483;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13164:1;13147:6;:13;:18;13143:227;;;13190:15;;;;;;;;;;:::i;:::-;;;;;;;;13143:227;13320:6;13314:13;13305:6;13301:2;13297:15;13290:38;12902:483;13038:41;;;13028:51;;;:6;:51;;;;13021:58;;;;;12866:574;13424:4;13417:11;;12738:709;;;;;;;:::o;4894:532::-;4950:13;4989:1;4980:5;:10;4976:53;;;5007:10;;;;;;;;;;;;;;;;;;;;;4976:53;5039:12;5054:5;5039:20;;5070:14;5095:78;5110:1;5102:4;:9;5095:78;;5128:8;;;;;:::i;:::-;;;;5159:2;5151:10;;;;;:::i;:::-;;;5095:78;;;5183:19;5215:6;5205:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5183:39;;5233:154;5249:1;5240:5;:10;5233:154;;5277:1;5267:11;;;;;:::i;:::-;;;5344:2;5336:5;:10;;;;:::i;:::-;5323:2;:24;;;;:::i;:::-;5310:39;;5293:6;5300;5293:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;5373:2;5364:11;;;;;:::i;:::-;;;5233:154;;;5411:6;5397:21;;;;;4894:532;;;;:::o;1653:115::-;1713:4;1759:1;1737:7;:19;;;:23;1730:30;;1653:115;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:343:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:345::-;434:5;459:66;475:49;517:6;475:49;:::i;:::-;459:66;:::i;:::-;450:75;;548:6;541:5;534:21;586:4;579:5;575:16;624:3;615:6;610:3;606:16;603:25;600:2;;;641:1;638;631:12;600:2;654:41;688:6;683:3;678;654:41;:::i;:::-;440:261;;;;;;:::o;707:139::-;753:5;791:6;778:20;769:29;;807:33;834:5;807:33;:::i;:::-;759:87;;;;:::o;852:133::-;895:5;933:6;920:20;911:29;;949:30;973:5;949:30;:::i;:::-;901:84;;;;:::o;991:137::-;1036:5;1074:6;1061:20;1052:29;;1090:32;1116:5;1090:32;:::i;:::-;1042:86;;;;:::o;1134:141::-;1190:5;1221:6;1215:13;1206:22;;1237:32;1263:5;1237:32;:::i;:::-;1196:79;;;;:::o;1294:271::-;1349:5;1398:3;1391:4;1383:6;1379:17;1375:27;1365:2;;1416:1;1413;1406:12;1365:2;1456:6;1443:20;1481:78;1555:3;1547:6;1540:4;1532:6;1528:17;1481:78;:::i;:::-;1472:87;;1355:210;;;;;:::o;1585:273::-;1641:5;1690:3;1683:4;1675:6;1671:17;1667:27;1657:2;;1708:1;1705;1698:12;1657:2;1748:6;1735:20;1773:79;1848:3;1840:6;1833:4;1825:6;1821:17;1773:79;:::i;:::-;1764:88;;1647:211;;;;;:::o;1864:139::-;1910:5;1948:6;1935:20;1926:29;;1964:33;1991:5;1964:33;:::i;:::-;1916:87;;;;:::o;2009:262::-;2068:6;2117:2;2105:9;2096:7;2092:23;2088:32;2085:2;;;2133:1;2130;2123:12;2085:2;2176:1;2201:53;2246:7;2237:6;2226:9;2222:22;2201:53;:::i;:::-;2191:63;;2147:117;2075:196;;;;:::o;2277:407::-;2345:6;2353;2402:2;2390:9;2381:7;2377:23;2373:32;2370:2;;;2418:1;2415;2408:12;2370:2;2461:1;2486:53;2531:7;2522:6;2511:9;2507:22;2486:53;:::i;:::-;2476:63;;2432:117;2588:2;2614:53;2659:7;2650:6;2639:9;2635:22;2614:53;:::i;:::-;2604:63;;2559:118;2360:324;;;;;:::o;2690:552::-;2767:6;2775;2783;2832:2;2820:9;2811:7;2807:23;2803:32;2800:2;;;2848:1;2845;2838:12;2800:2;2891:1;2916:53;2961:7;2952:6;2941:9;2937:22;2916:53;:::i;:::-;2906:63;;2862:117;3018:2;3044:53;3089:7;3080:6;3069:9;3065:22;3044:53;:::i;:::-;3034:63;;2989:118;3146:2;3172:53;3217:7;3208:6;3197:9;3193:22;3172:53;:::i;:::-;3162:63;;3117:118;2790:452;;;;;:::o;3248:809::-;3343:6;3351;3359;3367;3416:3;3404:9;3395:7;3391:23;3387:33;3384:2;;;3433:1;3430;3423:12;3384:2;3476:1;3501:53;3546:7;3537:6;3526:9;3522:22;3501:53;:::i;:::-;3491:63;;3447:117;3603:2;3629:53;3674:7;3665:6;3654:9;3650:22;3629:53;:::i;:::-;3619:63;;3574:118;3731:2;3757:53;3802:7;3793:6;3782:9;3778:22;3757:53;:::i;:::-;3747:63;;3702:118;3887:2;3876:9;3872:18;3859:32;3918:18;3910:6;3907:30;3904:2;;;3950:1;3947;3940:12;3904:2;3978:62;4032:7;4023:6;4012:9;4008:22;3978:62;:::i;:::-;3968:72;;3830:220;3374:683;;;;;;;:::o;4063:401::-;4128:6;4136;4185:2;4173:9;4164:7;4160:23;4156:32;4153:2;;;4201:1;4198;4191:12;4153:2;4244:1;4269:53;4314:7;4305:6;4294:9;4290:22;4269:53;:::i;:::-;4259:63;;4215:117;4371:2;4397:50;4439:7;4430:6;4419:9;4415:22;4397:50;:::i;:::-;4387:60;;4342:115;4143:321;;;;;:::o;4470:407::-;4538:6;4546;4595:2;4583:9;4574:7;4570:23;4566:32;4563:2;;;4611:1;4608;4601:12;4563:2;4654:1;4679:53;4724:7;4715:6;4704:9;4700:22;4679:53;:::i;:::-;4669:63;;4625:117;4781:2;4807:53;4852:7;4843:6;4832:9;4828:22;4807:53;:::i;:::-;4797:63;;4752:118;4553:324;;;;;:::o;4883:552::-;4960:6;4968;4976;5025:2;5013:9;5004:7;5000:23;4996:32;4993:2;;;5041:1;5038;5031:12;4993:2;5084:1;5109:53;5154:7;5145:6;5134:9;5130:22;5109:53;:::i;:::-;5099:63;;5055:117;5211:2;5237:53;5282:7;5273:6;5262:9;5258:22;5237:53;:::i;:::-;5227:63;;5182:118;5339:2;5365:53;5410:7;5401:6;5390:9;5386:22;5365:53;:::i;:::-;5355:63;;5310:118;4983:452;;;;;:::o;5441:844::-;5536:6;5544;5552;5560;5568;5617:3;5605:9;5596:7;5592:23;5588:33;5585:2;;;5634:1;5631;5624:12;5585:2;5677:1;5702:53;5747:7;5738:6;5727:9;5723:22;5702:53;:::i;:::-;5692:63;;5648:117;5804:2;5830:53;5875:7;5866:6;5855:9;5851:22;5830:53;:::i;:::-;5820:63;;5775:118;5932:2;5958:53;6003:7;5994:6;5983:9;5979:22;5958:53;:::i;:::-;5948:63;;5903:118;6060:2;6086:53;6131:7;6122:6;6111:9;6107:22;6086:53;:::i;:::-;6076:63;;6031:118;6188:3;6215:53;6260:7;6251:6;6240:9;6236:22;6215:53;:::i;:::-;6205:63;;6159:119;5575:710;;;;;;;;:::o;6291:260::-;6349:6;6398:2;6386:9;6377:7;6373:23;6369:32;6366:2;;;6414:1;6411;6404:12;6366:2;6457:1;6482:52;6526:7;6517:6;6506:9;6502:22;6482:52;:::i;:::-;6472:62;;6428:116;6356:195;;;;:::o;6557:282::-;6626:6;6675:2;6663:9;6654:7;6650:23;6646:32;6643:2;;;6691:1;6688;6681:12;6643:2;6734:1;6759:63;6814:7;6805:6;6794:9;6790:22;6759:63;:::i;:::-;6749:73;;6705:127;6633:206;;;;:::o;6845:375::-;6914:6;6963:2;6951:9;6942:7;6938:23;6934:32;6931:2;;;6979:1;6976;6969:12;6931:2;7050:1;7039:9;7035:17;7022:31;7080:18;7072:6;7069:30;7066:2;;;7112:1;7109;7102:12;7066:2;7140:63;7195:7;7186:6;7175:9;7171:22;7140:63;:::i;:::-;7130:73;;6993:220;6921:299;;;;:::o;7226:262::-;7285:6;7334:2;7322:9;7313:7;7309:23;7305:32;7302:2;;;7350:1;7347;7340:12;7302:2;7393:1;7418:53;7463:7;7454:6;7443:9;7439:22;7418:53;:::i;:::-;7408:63;;7364:117;7292:196;;;;:::o;7494:407::-;7562:6;7570;7619:2;7607:9;7598:7;7594:23;7590:32;7587:2;;;7635:1;7632;7625:12;7587:2;7678:1;7703:53;7748:7;7739:6;7728:9;7724:22;7703:53;:::i;:::-;7693:63;;7649:117;7805:2;7831:53;7876:7;7867:6;7856:9;7852:22;7831:53;:::i;:::-;7821:63;;7776:118;7577:324;;;;;:::o;7907:698::-;7993:6;8001;8009;8017;8066:3;8054:9;8045:7;8041:23;8037:33;8034:2;;;8083:1;8080;8073:12;8034:2;8126:1;8151:53;8196:7;8187:6;8176:9;8172:22;8151:53;:::i;:::-;8141:63;;8097:117;8253:2;8279:53;8324:7;8315:6;8304:9;8300:22;8279:53;:::i;:::-;8269:63;;8224:118;8381:2;8407:53;8452:7;8443:6;8432:9;8428:22;8407:53;:::i;:::-;8397:63;;8352:118;8509:2;8535:53;8580:7;8571:6;8560:9;8556:22;8535:53;:::i;:::-;8525:63;;8480:118;8024:581;;;;;;;:::o;8611:147::-;8706:45;8745:5;8706:45;:::i;:::-;8701:3;8694:58;8684:74;;:::o;8764:118::-;8851:24;8869:5;8851:24;:::i;:::-;8846:3;8839:37;8829:53;;:::o;8888:109::-;8969:21;8984:5;8969:21;:::i;:::-;8964:3;8957:34;8947:50;;:::o;9003:360::-;9089:3;9117:38;9149:5;9117:38;:::i;:::-;9171:70;9234:6;9229:3;9171:70;:::i;:::-;9164:77;;9250:52;9295:6;9290:3;9283:4;9276:5;9272:16;9250:52;:::i;:::-;9327:29;9349:6;9327:29;:::i;:::-;9322:3;9318:39;9311:46;;9093:270;;;;;:::o;9369:147::-;9464:45;9503:5;9464:45;:::i;:::-;9459:3;9452:58;9442:74;;:::o;9522:364::-;9610:3;9638:39;9671:5;9638:39;:::i;:::-;9693:71;9757:6;9752:3;9693:71;:::i;:::-;9686:78;;9773:52;9818:6;9813:3;9806:4;9799:5;9795:16;9773:52;:::i;:::-;9850:29;9872:6;9850:29;:::i;:::-;9845:3;9841:39;9834:46;;9614:272;;;;;:::o;9892:377::-;9998:3;10026:39;10059:5;10026:39;:::i;:::-;10081:89;10163:6;10158:3;10081:89;:::i;:::-;10074:96;;10179:52;10224:6;10219:3;10212:4;10205:5;10201:16;10179:52;:::i;:::-;10256:6;10251:3;10247:16;10240:23;;10002:267;;;;;:::o;10275:365::-;10417:3;10438:66;10502:1;10497:3;10438:66;:::i;:::-;10431:73;;10513:93;10602:3;10513:93;:::i;:::-;10631:2;10626:3;10622:12;10615:19;;10421:219;;;:::o;10646:365::-;10788:3;10809:66;10873:1;10868:3;10809:66;:::i;:::-;10802:73;;10884:93;10973:3;10884:93;:::i;:::-;11002:2;10997:3;10993:12;10986:19;;10792:219;;;:::o;11017:365::-;11159:3;11180:66;11244:1;11239:3;11180:66;:::i;:::-;11173:73;;11255:93;11344:3;11255:93;:::i;:::-;11373:2;11368:3;11364:12;11357:19;;11163:219;;;:::o;11388:365::-;11530:3;11551:66;11615:1;11610:3;11551:66;:::i;:::-;11544:73;;11626:93;11715:3;11626:93;:::i;:::-;11744:2;11739:3;11735:12;11728:19;;11534:219;;;:::o;11759:365::-;11901:3;11922:66;11986:1;11981:3;11922:66;:::i;:::-;11915:73;;11997:93;12086:3;11997:93;:::i;:::-;12115:2;12110:3;12106:12;12099:19;;11905:219;;;:::o;12130:365::-;12272:3;12293:66;12357:1;12352:3;12293:66;:::i;:::-;12286:73;;12368:93;12457:3;12368:93;:::i;:::-;12486:2;12481:3;12477:12;12470:19;;12276:219;;;:::o;12501:365::-;12643:3;12664:66;12728:1;12723:3;12664:66;:::i;:::-;12657:73;;12739:93;12828:3;12739:93;:::i;:::-;12857:2;12852:3;12848:12;12841:19;;12647:219;;;:::o;12872:365::-;13014:3;13035:66;13099:1;13094:3;13035:66;:::i;:::-;13028:73;;13110:93;13199:3;13110:93;:::i;:::-;13228:2;13223:3;13219:12;13212:19;;13018:219;;;:::o;13243:365::-;13385:3;13406:66;13470:1;13465:3;13406:66;:::i;:::-;13399:73;;13481:93;13570:3;13481:93;:::i;:::-;13599:2;13594:3;13590:12;13583:19;;13389:219;;;:::o;13614:365::-;13756:3;13777:66;13841:1;13836:3;13777:66;:::i;:::-;13770:73;;13852:93;13941:3;13852:93;:::i;:::-;13970:2;13965:3;13961:12;13954:19;;13760:219;;;:::o;13985:365::-;14127:3;14148:66;14212:1;14207:3;14148:66;:::i;:::-;14141:73;;14223:93;14312:3;14223:93;:::i;:::-;14341:2;14336:3;14332:12;14325:19;;14131:219;;;:::o;14356:365::-;14498:3;14519:66;14583:1;14578:3;14519:66;:::i;:::-;14512:73;;14594:93;14683:3;14594:93;:::i;:::-;14712:2;14707:3;14703:12;14696:19;;14502:219;;;:::o;14727:365::-;14869:3;14890:66;14954:1;14949:3;14890:66;:::i;:::-;14883:73;;14965:93;15054:3;14965:93;:::i;:::-;15083:2;15078:3;15074:12;15067:19;;14873:219;;;:::o;15098:365::-;15240:3;15261:66;15325:1;15320:3;15261:66;:::i;:::-;15254:73;;15336:93;15425:3;15336:93;:::i;:::-;15454:2;15449:3;15445:12;15438:19;;15244:219;;;:::o;15469:365::-;15611:3;15632:66;15696:1;15691:3;15632:66;:::i;:::-;15625:73;;15707:93;15796:3;15707:93;:::i;:::-;15825:2;15820:3;15816:12;15809:19;;15615:219;;;:::o;15840:365::-;15982:3;16003:66;16067:1;16062:3;16003:66;:::i;:::-;15996:73;;16078:93;16167:3;16078:93;:::i;:::-;16196:2;16191:3;16187:12;16180:19;;15986:219;;;:::o;16211:365::-;16353:3;16374:66;16438:1;16433:3;16374:66;:::i;:::-;16367:73;;16449:93;16538:3;16449:93;:::i;:::-;16567:2;16562:3;16558:12;16551:19;;16357:219;;;:::o;16582:365::-;16724:3;16745:66;16809:1;16804:3;16745:66;:::i;:::-;16738:73;;16820:93;16909:3;16820:93;:::i;:::-;16938:2;16933:3;16929:12;16922:19;;16728:219;;;:::o;16953:365::-;17095:3;17116:66;17180:1;17175:3;17116:66;:::i;:::-;17109:73;;17191:93;17280:3;17191:93;:::i;:::-;17309:2;17304:3;17300:12;17293:19;;17099:219;;;:::o;17324:365::-;17466:3;17487:66;17551:1;17546:3;17487:66;:::i;:::-;17480:73;;17562:93;17651:3;17562:93;:::i;:::-;17680:2;17675:3;17671:12;17664:19;;17470:219;;;:::o;17695:365::-;17837:3;17858:66;17922:1;17917:3;17858:66;:::i;:::-;17851:73;;17933:93;18022:3;17933:93;:::i;:::-;18051:2;18046:3;18042:12;18035:19;;17841:219;;;:::o;18066:365::-;18208:3;18229:66;18293:1;18288:3;18229:66;:::i;:::-;18222:73;;18304:93;18393:3;18304:93;:::i;:::-;18422:2;18417:3;18413:12;18406:19;;18212:219;;;:::o;18437:365::-;18579:3;18600:66;18664:1;18659:3;18600:66;:::i;:::-;18593:73;;18675:93;18764:3;18675:93;:::i;:::-;18793:2;18788:3;18784:12;18777:19;;18583:219;;;:::o;18808:365::-;18950:3;18971:66;19035:1;19030:3;18971:66;:::i;:::-;18964:73;;19046:93;19135:3;19046:93;:::i;:::-;19164:2;19159:3;19155:12;19148:19;;18954:219;;;:::o;19179:365::-;19321:3;19342:66;19406:1;19401:3;19342:66;:::i;:::-;19335:73;;19417:93;19506:3;19417:93;:::i;:::-;19535:2;19530:3;19526:12;19519:19;;19325:219;;;:::o;19550:365::-;19692:3;19713:66;19777:1;19772:3;19713:66;:::i;:::-;19706:73;;19788:93;19877:3;19788:93;:::i;:::-;19906:2;19901:3;19897:12;19890:19;;19696:219;;;:::o;19921:365::-;20063:3;20084:66;20148:1;20143:3;20084:66;:::i;:::-;20077:73;;20159:93;20248:3;20159:93;:::i;:::-;20277:2;20272:3;20268:12;20261:19;;20067:219;;;:::o;20292:365::-;20434:3;20455:66;20519:1;20514:3;20455:66;:::i;:::-;20448:73;;20530:93;20619:3;20530:93;:::i;:::-;20648:2;20643:3;20639:12;20632:19;;20438:219;;;:::o;20663:365::-;20805:3;20826:66;20890:1;20885:3;20826:66;:::i;:::-;20819:73;;20901:93;20990:3;20901:93;:::i;:::-;21019:2;21014:3;21010:12;21003:19;;20809:219;;;:::o;21034:365::-;21176:3;21197:66;21261:1;21256:3;21197:66;:::i;:::-;21190:73;;21272:93;21361:3;21272:93;:::i;:::-;21390:2;21385:3;21381:12;21374:19;;21180:219;;;:::o;21405:365::-;21547:3;21568:66;21632:1;21627:3;21568:66;:::i;:::-;21561:73;;21643:93;21732:3;21643:93;:::i;:::-;21761:2;21756:3;21752:12;21745:19;;21551:219;;;:::o;21776:365::-;21918:3;21939:66;22003:1;21998:3;21939:66;:::i;:::-;21932:73;;22014:93;22103:3;22014:93;:::i;:::-;22132:2;22127:3;22123:12;22116:19;;21922:219;;;:::o;22147:365::-;22289:3;22310:66;22374:1;22369:3;22310:66;:::i;:::-;22303:73;;22385:93;22474:3;22385:93;:::i;:::-;22503:2;22498:3;22494:12;22487:19;;22293:219;;;:::o;22518:365::-;22660:3;22681:66;22745:1;22740:3;22681:66;:::i;:::-;22674:73;;22756:93;22845:3;22756:93;:::i;:::-;22874:2;22869:3;22865:12;22858:19;;22664:219;;;:::o;22889:365::-;23031:3;23052:66;23116:1;23111:3;23052:66;:::i;:::-;23045:73;;23127:93;23216:3;23127:93;:::i;:::-;23245:2;23240:3;23236:12;23229:19;;23035:219;;;:::o;23260:365::-;23402:3;23423:66;23487:1;23482:3;23423:66;:::i;:::-;23416:73;;23498:93;23587:3;23498:93;:::i;:::-;23616:2;23611:3;23607:12;23600:19;;23406:219;;;:::o;23631:365::-;23773:3;23794:66;23858:1;23853:3;23794:66;:::i;:::-;23787:73;;23869:93;23958:3;23869:93;:::i;:::-;23987:2;23982:3;23978:12;23971:19;;23777:219;;;:::o;24002:365::-;24144:3;24165:66;24229:1;24224:3;24165:66;:::i;:::-;24158:73;;24240:93;24329:3;24240:93;:::i;:::-;24358:2;24353:3;24349:12;24342:19;;24148:219;;;:::o;24373:118::-;24460:24;24478:5;24460:24;:::i;:::-;24455:3;24448:37;24438:53;;:::o;24497:435::-;24677:3;24699:95;24790:3;24781:6;24699:95;:::i;:::-;24692:102;;24811:95;24902:3;24893:6;24811:95;:::i;:::-;24804:102;;24923:3;24916:10;;24681:251;;;;;:::o;24938:222::-;25031:4;25069:2;25058:9;25054:18;25046:26;;25082:71;25150:1;25139:9;25135:17;25126:6;25082:71;:::i;:::-;25036:124;;;;:::o;25166:458::-;25323:4;25361:2;25350:9;25346:18;25338:26;;25374:71;25442:1;25431:9;25427:17;25418:6;25374:71;:::i;:::-;25455:80;25531:2;25520:9;25516:18;25507:6;25455:80;:::i;:::-;25545:72;25613:2;25602:9;25598:18;25589:6;25545:72;:::i;:::-;25328:296;;;;;;:::o;25630:442::-;25779:4;25817:2;25806:9;25802:18;25794:26;;25830:71;25898:1;25887:9;25883:17;25874:6;25830:71;:::i;:::-;25911:72;25979:2;25968:9;25964:18;25955:6;25911:72;:::i;:::-;25993;26061:2;26050:9;26046:18;26037:6;25993:72;:::i;:::-;25784:288;;;;;;:::o;26078:640::-;26273:4;26311:3;26300:9;26296:19;26288:27;;26325:71;26393:1;26382:9;26378:17;26369:6;26325:71;:::i;:::-;26406:72;26474:2;26463:9;26459:18;26450:6;26406:72;:::i;:::-;26488;26556:2;26545:9;26541:18;26532:6;26488:72;:::i;:::-;26607:9;26601:4;26597:20;26592:2;26581:9;26577:18;26570:48;26635:76;26706:4;26697:6;26635:76;:::i;:::-;26627:84;;26278:440;;;;;;;:::o;26724:210::-;26811:4;26849:2;26838:9;26834:18;26826:26;;26862:65;26924:1;26913:9;26909:17;26900:6;26862:65;:::i;:::-;26816:118;;;;:::o;26940:313::-;27053:4;27091:2;27080:9;27076:18;27068:26;;27140:9;27134:4;27130:20;27126:1;27115:9;27111:17;27104:47;27168:78;27241:4;27232:6;27168:78;:::i;:::-;27160:86;;27058:195;;;;:::o;27259:759::-;27486:4;27524:3;27513:9;27509:19;27501:27;;27574:9;27568:4;27564:20;27560:1;27549:9;27545:17;27538:47;27602:78;27675:4;27666:6;27602:78;:::i;:::-;27594:86;;27690:72;27758:2;27747:9;27743:18;27734:6;27690:72;:::i;:::-;27772;27840:2;27829:9;27825:18;27816:6;27772:72;:::i;:::-;27854:80;27930:2;27919:9;27915:18;27906:6;27854:80;:::i;:::-;27944:67;28006:3;27995:9;27991:19;27982:6;27944:67;:::i;:::-;27491:527;;;;;;;;:::o;28024:419::-;28190:4;28228:2;28217:9;28213:18;28205:26;;28277:9;28271:4;28267:20;28263:1;28252:9;28248:17;28241:47;28305:131;28431:4;28305:131;:::i;:::-;28297:139;;28195:248;;;:::o;28449:419::-;28615:4;28653:2;28642:9;28638:18;28630:26;;28702:9;28696:4;28692:20;28688:1;28677:9;28673:17;28666:47;28730:131;28856:4;28730:131;:::i;:::-;28722:139;;28620:248;;;:::o;28874:419::-;29040:4;29078:2;29067:9;29063:18;29055:26;;29127:9;29121:4;29117:20;29113:1;29102:9;29098:17;29091:47;29155:131;29281:4;29155:131;:::i;:::-;29147:139;;29045:248;;;:::o;29299:419::-;29465:4;29503:2;29492:9;29488:18;29480:26;;29552:9;29546:4;29542:20;29538:1;29527:9;29523:17;29516:47;29580:131;29706:4;29580:131;:::i;:::-;29572:139;;29470:248;;;:::o;29724:419::-;29890:4;29928:2;29917:9;29913:18;29905:26;;29977:9;29971:4;29967:20;29963:1;29952:9;29948:17;29941:47;30005:131;30131:4;30005:131;:::i;:::-;29997:139;;29895:248;;;:::o;30149:419::-;30315:4;30353:2;30342:9;30338:18;30330:26;;30402:9;30396:4;30392:20;30388:1;30377:9;30373:17;30366:47;30430:131;30556:4;30430:131;:::i;:::-;30422:139;;30320:248;;;:::o;30574:419::-;30740:4;30778:2;30767:9;30763:18;30755:26;;30827:9;30821:4;30817:20;30813:1;30802:9;30798:17;30791:47;30855:131;30981:4;30855:131;:::i;:::-;30847:139;;30745:248;;;:::o;30999:419::-;31165:4;31203:2;31192:9;31188:18;31180:26;;31252:9;31246:4;31242:20;31238:1;31227:9;31223:17;31216:47;31280:131;31406:4;31280:131;:::i;:::-;31272:139;;31170:248;;;:::o;31424:419::-;31590:4;31628:2;31617:9;31613:18;31605:26;;31677:9;31671:4;31667:20;31663:1;31652:9;31648:17;31641:47;31705:131;31831:4;31705:131;:::i;:::-;31697:139;;31595:248;;;:::o;31849:419::-;32015:4;32053:2;32042:9;32038:18;32030:26;;32102:9;32096:4;32092:20;32088:1;32077:9;32073:17;32066:47;32130:131;32256:4;32130:131;:::i;:::-;32122:139;;32020:248;;;:::o;32274:419::-;32440:4;32478:2;32467:9;32463:18;32455:26;;32527:9;32521:4;32517:20;32513:1;32502:9;32498:17;32491:47;32555:131;32681:4;32555:131;:::i;:::-;32547:139;;32445:248;;;:::o;32699:419::-;32865:4;32903:2;32892:9;32888:18;32880:26;;32952:9;32946:4;32942:20;32938:1;32927:9;32923:17;32916:47;32980:131;33106:4;32980:131;:::i;:::-;32972:139;;32870:248;;;:::o;33124:419::-;33290:4;33328:2;33317:9;33313:18;33305:26;;33377:9;33371:4;33367:20;33363:1;33352:9;33348:17;33341:47;33405:131;33531:4;33405:131;:::i;:::-;33397:139;;33295:248;;;:::o;33549:419::-;33715:4;33753:2;33742:9;33738:18;33730:26;;33802:9;33796:4;33792:20;33788:1;33777:9;33773:17;33766:47;33830:131;33956:4;33830:131;:::i;:::-;33822:139;;33720:248;;;:::o;33974:419::-;34140:4;34178:2;34167:9;34163:18;34155:26;;34227:9;34221:4;34217:20;34213:1;34202:9;34198:17;34191:47;34255:131;34381:4;34255:131;:::i;:::-;34247:139;;34145:248;;;:::o;34399:419::-;34565:4;34603:2;34592:9;34588:18;34580:26;;34652:9;34646:4;34642:20;34638:1;34627:9;34623:17;34616:47;34680:131;34806:4;34680:131;:::i;:::-;34672:139;;34570:248;;;:::o;34824:419::-;34990:4;35028:2;35017:9;35013:18;35005:26;;35077:9;35071:4;35067:20;35063:1;35052:9;35048:17;35041:47;35105:131;35231:4;35105:131;:::i;:::-;35097:139;;34995:248;;;:::o;35249:419::-;35415:4;35453:2;35442:9;35438:18;35430:26;;35502:9;35496:4;35492:20;35488:1;35477:9;35473:17;35466:47;35530:131;35656:4;35530:131;:::i;:::-;35522:139;;35420:248;;;:::o;35674:419::-;35840:4;35878:2;35867:9;35863:18;35855:26;;35927:9;35921:4;35917:20;35913:1;35902:9;35898:17;35891:47;35955:131;36081:4;35955:131;:::i;:::-;35947:139;;35845:248;;;:::o;36099:419::-;36265:4;36303:2;36292:9;36288:18;36280:26;;36352:9;36346:4;36342:20;36338:1;36327:9;36323:17;36316:47;36380:131;36506:4;36380:131;:::i;:::-;36372:139;;36270:248;;;:::o;36524:419::-;36690:4;36728:2;36717:9;36713:18;36705:26;;36777:9;36771:4;36767:20;36763:1;36752:9;36748:17;36741:47;36805:131;36931:4;36805:131;:::i;:::-;36797:139;;36695:248;;;:::o;36949:419::-;37115:4;37153:2;37142:9;37138:18;37130:26;;37202:9;37196:4;37192:20;37188:1;37177:9;37173:17;37166:47;37230:131;37356:4;37230:131;:::i;:::-;37222:139;;37120:248;;;:::o;37374:419::-;37540:4;37578:2;37567:9;37563:18;37555:26;;37627:9;37621:4;37617:20;37613:1;37602:9;37598:17;37591:47;37655:131;37781:4;37655:131;:::i;:::-;37647:139;;37545:248;;;:::o;37799:419::-;37965:4;38003:2;37992:9;37988:18;37980:26;;38052:9;38046:4;38042:20;38038:1;38027:9;38023:17;38016:47;38080:131;38206:4;38080:131;:::i;:::-;38072:139;;37970:248;;;:::o;38224:419::-;38390:4;38428:2;38417:9;38413:18;38405:26;;38477:9;38471:4;38467:20;38463:1;38452:9;38448:17;38441:47;38505:131;38631:4;38505:131;:::i;:::-;38497:139;;38395:248;;;:::o;38649:419::-;38815:4;38853:2;38842:9;38838:18;38830:26;;38902:9;38896:4;38892:20;38888:1;38877:9;38873:17;38866:47;38930:131;39056:4;38930:131;:::i;:::-;38922:139;;38820:248;;;:::o;39074:419::-;39240:4;39278:2;39267:9;39263:18;39255:26;;39327:9;39321:4;39317:20;39313:1;39302:9;39298:17;39291:47;39355:131;39481:4;39355:131;:::i;:::-;39347:139;;39245:248;;;:::o;39499:419::-;39665:4;39703:2;39692:9;39688:18;39680:26;;39752:9;39746:4;39742:20;39738:1;39727:9;39723:17;39716:47;39780:131;39906:4;39780:131;:::i;:::-;39772:139;;39670:248;;;:::o;39924:419::-;40090:4;40128:2;40117:9;40113:18;40105:26;;40177:9;40171:4;40167:20;40163:1;40152:9;40148:17;40141:47;40205:131;40331:4;40205:131;:::i;:::-;40197:139;;40095:248;;;:::o;40349:419::-;40515:4;40553:2;40542:9;40538:18;40530:26;;40602:9;40596:4;40592:20;40588:1;40577:9;40573:17;40566:47;40630:131;40756:4;40630:131;:::i;:::-;40622:139;;40520:248;;;:::o;40774:419::-;40940:4;40978:2;40967:9;40963:18;40955:26;;41027:9;41021:4;41017:20;41013:1;41002:9;40998:17;40991:47;41055:131;41181:4;41055:131;:::i;:::-;41047:139;;40945:248;;;:::o;41199:419::-;41365:4;41403:2;41392:9;41388:18;41380:26;;41452:9;41446:4;41442:20;41438:1;41427:9;41423:17;41416:47;41480:131;41606:4;41480:131;:::i;:::-;41472:139;;41370:248;;;:::o;41624:419::-;41790:4;41828:2;41817:9;41813:18;41805:26;;41877:9;41871:4;41867:20;41863:1;41852:9;41848:17;41841:47;41905:131;42031:4;41905:131;:::i;:::-;41897:139;;41795:248;;;:::o;42049:419::-;42215:4;42253:2;42242:9;42238:18;42230:26;;42302:9;42296:4;42292:20;42288:1;42277:9;42273:17;42266:47;42330:131;42456:4;42330:131;:::i;:::-;42322:139;;42220:248;;;:::o;42474:419::-;42640:4;42678:2;42667:9;42663:18;42655:26;;42727:9;42721:4;42717:20;42713:1;42702:9;42698:17;42691:47;42755:131;42881:4;42755:131;:::i;:::-;42747:139;;42645:248;;;:::o;42899:419::-;43065:4;43103:2;43092:9;43088:18;43080:26;;43152:9;43146:4;43142:20;43138:1;43127:9;43123:17;43116:47;43180:131;43306:4;43180:131;:::i;:::-;43172:139;;43070:248;;;:::o;43324:419::-;43490:4;43528:2;43517:9;43513:18;43505:26;;43577:9;43571:4;43567:20;43563:1;43552:9;43548:17;43541:47;43605:131;43731:4;43605:131;:::i;:::-;43597:139;;43495:248;;;:::o;43749:419::-;43915:4;43953:2;43942:9;43938:18;43930:26;;44002:9;43996:4;43992:20;43988:1;43977:9;43973:17;43966:47;44030:131;44156:4;44030:131;:::i;:::-;44022:139;;43920:248;;;:::o;44174:222::-;44267:4;44305:2;44294:9;44290:18;44282:26;;44318:71;44386:1;44375:9;44371:17;44362:6;44318:71;:::i;:::-;44272:124;;;;:::o;44402:129::-;44436:6;44463:20;;:::i;:::-;44453:30;;44492:33;44520:4;44512:6;44492:33;:::i;:::-;44443:88;;;:::o;44537:75::-;44570:6;44603:2;44597:9;44587:19;;44577:35;:::o;44618:307::-;44679:4;44769:18;44761:6;44758:30;44755:2;;;44791:18;;:::i;:::-;44755:2;44829:29;44851:6;44829:29;:::i;:::-;44821:37;;44913:4;44907;44903:15;44895:23;;44684:241;;;:::o;44931:308::-;44993:4;45083:18;45075:6;45072:30;45069:2;;;45105:18;;:::i;:::-;45069:2;45143:29;45165:6;45143:29;:::i;:::-;45135:37;;45227:4;45221;45217:15;45209:23;;44998:241;;;:::o;45245:98::-;45296:6;45330:5;45324:12;45314:22;;45303:40;;;:::o;45349:99::-;45401:6;45435:5;45429:12;45419:22;;45408:40;;;:::o;45454:168::-;45537:11;45571:6;45566:3;45559:19;45611:4;45606:3;45602:14;45587:29;;45549:73;;;;:::o;45628:169::-;45712:11;45746:6;45741:3;45734:19;45786:4;45781:3;45777:14;45762:29;;45724:73;;;;:::o;45803:148::-;45905:11;45942:3;45927:18;;45917:34;;;;:::o;45957:305::-;45997:3;46016:20;46034:1;46016:20;:::i;:::-;46011:25;;46050:20;46068:1;46050:20;:::i;:::-;46045:25;;46204:1;46136:66;46132:74;46129:1;46126:81;46123:2;;;46210:18;;:::i;:::-;46123:2;46254:1;46251;46247:9;46240:16;;46001:261;;;;:::o;46268:185::-;46308:1;46325:20;46343:1;46325:20;:::i;:::-;46320:25;;46359:20;46377:1;46359:20;:::i;:::-;46354:25;;46398:1;46388:2;;46403:18;;:::i;:::-;46388:2;46445:1;46442;46438:9;46433:14;;46310:143;;;;:::o;46459:191::-;46499:4;46519:20;46537:1;46519:20;:::i;:::-;46514:25;;46553:20;46571:1;46553:20;:::i;:::-;46548:25;;46592:1;46589;46586:8;46583:2;;;46597:18;;:::i;:::-;46583:2;46642:1;46639;46635:9;46627:17;;46504:146;;;;:::o;46656:96::-;46693:7;46722:24;46740:5;46722:24;:::i;:::-;46711:35;;46701:51;;;:::o;46758:90::-;46792:7;46835:5;46828:13;46821:21;46810:32;;46800:48;;;:::o;46854:149::-;46890:7;46930:66;46923:5;46919:78;46908:89;;46898:105;;;:::o;47009:126::-;47046:7;47086:42;47079:5;47075:54;47064:65;;47054:81;;;:::o;47141:77::-;47178:7;47207:5;47196:16;;47186:32;;;:::o;47224:134::-;47282:9;47315:37;47346:5;47315:37;:::i;:::-;47302:50;;47292:66;;;:::o;47364:121::-;47422:9;47455:24;47473:5;47455:24;:::i;:::-;47442:37;;47432:53;;;:::o;47491:126::-;47541:9;47574:37;47605:5;47574:37;:::i;:::-;47561:50;;47551:66;;;:::o;47623:113::-;47673:9;47706:24;47724:5;47706:24;:::i;:::-;47693:37;;47683:53;;;:::o;47742:154::-;47826:6;47821:3;47816;47803:30;47888:1;47879:6;47874:3;47870:16;47863:27;47793:103;;;:::o;47902:307::-;47970:1;47980:113;47994:6;47991:1;47988:13;47980:113;;;48079:1;48074:3;48070:11;48064:18;48060:1;48055:3;48051:11;48044:39;48016:2;48013:1;48009:10;48004:15;;47980:113;;;48111:6;48108:1;48105:13;48102:2;;;48191:1;48182:6;48177:3;48173:16;48166:27;48102:2;47951:258;;;;:::o;48215:320::-;48259:6;48296:1;48290:4;48286:12;48276:22;;48343:1;48337:4;48333:12;48364:18;48354:2;;48420:4;48412:6;48408:17;48398:27;;48354:2;48482;48474:6;48471:14;48451:18;48448:38;48445:2;;;48501:18;;:::i;:::-;48445:2;48266:269;;;;:::o;48541:281::-;48624:27;48646:4;48624:27;:::i;:::-;48616:6;48612:40;48754:6;48742:10;48739:22;48718:18;48706:10;48703:34;48700:62;48697:2;;;48765:18;;:::i;:::-;48697:2;48805:10;48801:2;48794:22;48584:238;;;:::o;48828:233::-;48867:3;48890:24;48908:5;48890:24;:::i;:::-;48881:33;;48936:66;48929:5;48926:77;48923:2;;;49006:18;;:::i;:::-;48923:2;49053:1;49046:5;49042:13;49035:20;;48871:190;;;:::o;49067:176::-;49099:1;49116:20;49134:1;49116:20;:::i;:::-;49111:25;;49150:20;49168:1;49150:20;:::i;:::-;49145:25;;49189:1;49179:2;;49194:18;;:::i;:::-;49179:2;49235:1;49232;49228:9;49223:14;;49101:142;;;;:::o;49249:180::-;49297:77;49294:1;49287:88;49394:4;49391:1;49384:15;49418:4;49415:1;49408:15;49435:180;49483:77;49480:1;49473:88;49580:4;49577:1;49570:15;49604:4;49601:1;49594:15;49621:180;49669:77;49666:1;49659:88;49766:4;49763:1;49756:15;49790:4;49787:1;49780:15;49807:180;49855:77;49852:1;49845:88;49952:4;49949:1;49942:15;49976:4;49973:1;49966:15;49993:102;50034:6;50085:2;50081:7;50076:2;50069:5;50065:14;50061:28;50051:38;;50041:54;;;:::o;50101:155::-;50241:7;50237:1;50229:6;50225:14;50218:31;50207:49;:::o;50262:155::-;50402:7;50398:1;50390:6;50386:14;50379:31;50368:49;:::o;50423:156::-;50563:8;50559:1;50551:6;50547:14;50540:32;50529:50;:::o;50585:155::-;50725:7;50721:1;50713:6;50709:14;50702:31;50691:49;:::o;50746:156::-;50886:8;50882:1;50874:6;50870:14;50863:32;50852:50;:::o;50908:155::-;51048:7;51044:1;51036:6;51032:14;51025:31;51014:49;:::o;51069:155::-;51209:7;51205:1;51197:6;51193:14;51186:31;51175:49;:::o;51230:155::-;51370:7;51366:1;51358:6;51354:14;51347:31;51336:49;:::o;51391:156::-;51531:8;51527:1;51519:6;51515:14;51508:32;51497:50;:::o;51553:155::-;51693:7;51689:1;51681:6;51677:14;51670:31;51659:49;:::o;51714:155::-;51854:7;51850:1;51842:6;51838:14;51831:31;51820:49;:::o;51875:155::-;52015:7;52011:1;52003:6;51999:14;51992:31;51981:49;:::o;52036:155::-;52176:7;52172:1;52164:6;52160:14;52153:31;52142:49;:::o;52197:156::-;52337:8;52333:1;52325:6;52321:14;52314:32;52303:50;:::o;52359:155::-;52499:7;52495:1;52487:6;52483:14;52476:31;52465:49;:::o;52520:155::-;52660:7;52656:1;52648:6;52644:14;52637:31;52626:49;:::o;52681:156::-;52821:8;52817:1;52809:6;52805:14;52798:32;52787:50;:::o;52843:155::-;52983:7;52979:1;52971:6;52967:14;52960:31;52949:49;:::o;53004:155::-;53144:7;53140:1;53132:6;53128:14;53121:31;53110:49;:::o;53165:156::-;53305:8;53301:1;53293:6;53289:14;53282:32;53271:50;:::o;53327:155::-;53467:7;53463:1;53455:6;53451:14;53444:31;53433:49;:::o;53488:156::-;53628:8;53624:1;53616:6;53612:14;53605:32;53594:50;:::o;53650:155::-;53790:7;53786:1;53778:6;53774:14;53767:31;53756:49;:::o;53811:156::-;53951:8;53947:1;53939:6;53935:14;53928:32;53917:50;:::o;53973:155::-;54113:7;54109:1;54101:6;54097:14;54090:31;54079:49;:::o;54134:155::-;54274:7;54270:1;54262:6;54258:14;54251:31;54240:49;:::o;54295:155::-;54435:7;54431:1;54423:6;54419:14;54412:31;54401:49;:::o;54456:155::-;54596:7;54592:1;54584:6;54580:14;54573:31;54562:49;:::o;54617:155::-;54757:7;54753:1;54745:6;54741:14;54734:31;54723:49;:::o;54778:155::-;54918:7;54914:1;54906:6;54902:14;54895:31;54884:49;:::o;54939:156::-;55079:8;55075:1;55067:6;55063:14;55056:32;55045:50;:::o;55101:156::-;55241:8;55237:1;55229:6;55225:14;55218:32;55207:50;:::o;55263:155::-;55403:7;55399:1;55391:6;55387:14;55380:31;55369:49;:::o;55424:155::-;55564:7;55560:1;55552:6;55548:14;55541:31;55530:49;:::o;55585:155::-;55725:7;55721:1;55713:6;55709:14;55702:31;55691:49;:::o;55746:155::-;55886:7;55882:1;55874:6;55870:14;55863:31;55852:49;:::o;55907:156::-;56047:8;56043:1;56035:6;56031:14;56024:32;56013:50;:::o;56069:156::-;56209:8;56205:1;56197:6;56193:14;56186:32;56175:50;:::o;56231:122::-;56304:24;56322:5;56304:24;:::i;:::-;56297:5;56294:35;56284:2;;56343:1;56340;56333:12;56284:2;56274:79;:::o;56359:116::-;56429:21;56444:5;56429:21;:::i;:::-;56422:5;56419:32;56409:2;;56465:1;56462;56455:12;56409:2;56399:76;:::o;56481:120::-;56553:23;56570:5;56553:23;:::i;:::-;56546:5;56543:34;56533:2;;56591:1;56588;56581:12;56533:2;56523:78;:::o;56607:122::-;56680:24;56698:5;56680:24;:::i;:::-;56673:5;56670:35;56660:2;;56719:1;56716;56709:12;56660:2;56650:79;:::o

Swarm Source

ipfs://8a08a74c0f6272affa9df6d7917bb9dcd141bde43f60dda4ee88bad8610f7b48

Block Transaction Gas Used Reward
view all blocks ##produced##

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.