ETH Price: $1,803.53 (-1.32%)

Contract

0xedCc5b70Aa99f1B49FC7b214a0e2E5e1c06DbDd8
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
0x379cba40e880f65ac1f0db8e30004058e0b0acf2c85f7328aa56f79fbc2a85f9 Take Token(pending)2025-03-23 8:09:397 days ago1742717379IN
0xedCc5b70...1c06DbDd8
0 ETH(Pending)(Pending)
0xcf90fad41cebc13cad6a88b35850307c3cf7fce71f294a77cd38a99ec4fe30e3 Take Token(pending)2025-03-23 1:34:497 days ago1742693689IN
0xedCc5b70...1c06DbDd8
0 ETH(Pending)(Pending)
Set Approval For...213617322024-12-09 1:43:23111 days ago1733708603IN
0xedCc5b70...1c06DbDd8
0 ETH0.000587812.66663502
Transfer From213323242024-12-04 23:08:59116 days ago1733353739IN
0xedCc5b70...1c06DbDd8
0 ETH0.0019824124.36150362
Transfer From198214242024-05-07 23:19:59327 days ago1715123999IN
0xedCc5b70...1c06DbDd8
0 ETH0.000312083.83511956
Set Approval For...187921092023-12-15 14:27:47471 days ago1702650467IN
0xedCc5b70...1c06DbDd8
0 ETH0.0028925962.44537485
Set Approval For...180457182023-09-02 1:59:11575 days ago1693619951IN
0xedCc5b70...1c06DbDd8
0 ETH0.0004723710.19762421
Safe Transfer Fr...176079992023-07-02 18:07:11637 days ago1688321231IN
0xedCc5b70...1c06DbDd8
0 ETH0.00136516.07533745
Transfer From172897542023-05-18 23:39:35682 days ago1684453175IN
0xedCc5b70...1c06DbDd8
0 ETH0.0033846141.59283392
Set Approval For...172718582023-05-16 11:04:47684 days ago1684235087IN
0xedCc5b70...1c06DbDd8
0 ETH0.0024261552.37580163
Safe Transfer Fr...170282752023-04-12 0:06:59718 days ago1681258019IN
0xedCc5b70...1c06DbDd8
0 ETH0.0018156321.55236134
Transfer From169441382023-03-31 2:12:59730 days ago1680228779IN
0xedCc5b70...1c06DbDd8
0 ETH0.0023729225.17615812
Transfer From163100102023-01-01 6:05:23819 days ago1672553123IN
0xedCc5b70...1c06DbDd8
0 ETH0.0013433316.50798806
Take Token160291122022-11-23 0:27:23858 days ago1669163243IN
0xedCc5b70...1c06DbDd8
0 ETH0.002765812.79750093
Take Token160290872022-11-23 0:22:23858 days ago1669162943IN
0xedCc5b70...1c06DbDd8
0 ETH0.002645412.40104691
Take Token159902732022-11-17 14:15:23864 days ago1668694523IN
0xedCc5b70...1c06DbDd8
0 ETH0.0037078717.15741673
Take Token159902682022-11-17 14:14:23864 days ago1668694463IN
0xedCc5b70...1c06DbDd8
0 ETH0.0034833818.01043982
Take Token158821122022-11-02 11:42:47879 days ago1667389367IN
0xedCc5b70...1c06DbDd8
0 ETH0.0024456811.46544907
Take Token158692592022-10-31 16:32:59881 days ago1667233979IN
0xedCc5b70...1c06DbDd8
0 ETH0.0046819724.20764331
Take Token156315222022-09-28 11:25:11914 days ago1664364311IN
0xedCc5b70...1c06DbDd8
0 ETH0.0027697611.87612645
Take Token156309522022-09-28 9:30:23914 days ago1664357423IN
0xedCc5b70...1c06DbDd8
0 ETH0.003176614.69828835
Take Token156173062022-09-26 11:39:47916 days ago1664192387IN
0xedCc5b70...1c06DbDd8
0 ETH0.001496266.4936119
Take Token153701172022-08-19 7:53:53954 days ago1660895633IN
0xedCc5b70...1c06DbDd8
0 ETH0.0033021317.07332576
Transfer152909492022-08-06 20:39:40967 days ago1659818380IN
0xedCc5b70...1c06DbDd8
0 ETH0.000056082.662
Take Token152019492022-07-23 23:45:52980 days ago1658619952IN
0xedCc5b70...1c06DbDd8
0 ETH0.0024746111.4501586
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xA35ba05b...310890F7c
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
MultiHandler

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-03-25
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.1;

/*
VERSION DATE: 24/03/2021
*/

library Address 
{
    function isContract(address account) internal view returns (bool)
	{
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }
}

library Strings
{
    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);
    }
}

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

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

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

interface IERC721 is IERC165
{
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(address from, address to, uint256 tokenId) external;
    function transferFrom(address from, address to, uint256 tokenId) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator) external view returns (bool);
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}

interface IERC721Enumerable is IERC721
{
    function totalSupply() external view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);
    function tokenByIndex(uint256 index) external view returns (uint256);
}

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

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

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

    string private _name;
    string private _symbol;
    string private _baseTokenURI;
	
    mapping (uint256 => address) private _owners;			// Mapping from token ID to owner address
    mapping (address => uint256) private _balances;			// Mapping owner address to token count
    mapping (uint256 => address) private _tokenApprovals;	// Mapping from token ID to approved address
    mapping (address => mapping (address => bool)) private _operatorApprovals;	// Mapping from owner to operator approvals

	uint256[] private _allTokens;							// Array with all token ids, used for enumeration
    mapping(uint256 => uint256) private _allTokensIndex;	// Mapping from token id to position in the allTokens array

	mapping(address => mapping(uint256 => uint256)) private _ownedTokens;	// Mapping from owner to list of owned token IDs
    mapping(uint256 => uint256) private _ownedTokensIndex;	// Mapping from token ID to index of the owner tokens list

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

	function onERC721Received( address _operator, address _from, uint256 _tokenId, bytes calldata _data )
		external pure override returns(bytes4)
	{
		_operator;
		_from;
		_tokenId;
		_data;
		return 0x150b7a02;
	}
	
	// 0x01ffc9a7 = ERC165
	// 0x80ac58cd = ERC721
	// 0x780e9d63 = ERC721Enumerable
	// 0x5b5e139f = ERC721Metadata
	// 0x150b7a02 = ERC721Receiver
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool)
	{
        return interfaceId == type(IERC721).interfaceId
            || interfaceId == type(IERC721Metadata).interfaceId
            || interfaceId == type(IERC721Enumerable).interfaceId
            || interfaceId == type(IERC721Receiver).interfaceId
            || super.supportsInterface(interfaceId);
    }

    function totalSupply() public view virtual override returns (uint256)
	{
		return _allTokens.length;
	}

    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256 tokenId)
	{
        require(index < balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
	}

    function tokenByIndex(uint256 index) public view virtual override returns (uint256)
	{
        require(index < totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
	}

    function balanceOf(address owner) public view virtual override returns (uint256)
	{
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    function ownerOf(uint256 tokenId) public view virtual override returns (address)
	{
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        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)
	{
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

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

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

    function approve(address to, uint256 tokenId) public virtual override
	{
        address owner = ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

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

        _approve(to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

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

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

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

    function transferFrom(address from, address to, uint256 tokenId) public virtual override
	{
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _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), "ERC721: transfer caller is not owner nor approved");
        _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), "ERC721: transfer to non ERC721Receiver implementer");
    }

    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)
	{
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, 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), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function _mint(address to, uint256 tokenId) internal virtual
	{
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }

    function _transfer(address from, address to, uint256 tokenId) internal virtual
	{
        require(ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        if (_tokenApprovals[tokenId] != address(0)) _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

    function _approve(address to, uint256 tokenId) internal virtual
	{
        _tokenApprovals[tokenId] = to;
        emit Approval(ownerOf(tokenId), to, tokenId);
    }

    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool)
    {
        if (to.isContract()) 
		{
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        }
		else 
		{
            return true;
        }
    }
	
    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual
	{
		require( to != address(0), "forbidden transfer to address(0)" );
		require( from != to, "from equal to" );
		
        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
		
		_addTokenToOwnerEnumeration(to, tokenId);
    }
	
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private
	{
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }
	
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private
	{
        uint256 lastTokenIndex = balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId;
            _ownedTokensIndex[lastTokenId] = tokenIndex;
        }

        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private
	{
        uint256 length = balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

}
 
abstract contract CheckAccess 
{
	function isAdmin(address addr) public virtual view returns (bool);
}

contract MultiHandler is ERC721Full
{
	using Strings for uint256;
    using Address for address;
	address checkAccessContract;
	
	struct Type
	{
        string name;
        string URI;
        string IPFSHash;
        uint issuedCount;
		uint minBound;
		uint maxBound;
    }

	Type[] typesById;

	uint public endPoint = 0;
	
	mapping (uint256 => uint256) public tokenType; // idToken => idType
	mapping (uint64 => bool) public nonces;
	
    constructor(
		string memory _name,
		string memory _symbol,
		string memory _tokenURI,
		address _checkAccessContract
	) ERC721Full(_name, _symbol, _tokenURI) 
	{
		checkAccessContract = _checkAccessContract;
		
		require(checkAccessContract.isContract(), "checkAccessContract is not found");
	}
	
	event CreateType(uint typeId, string name, uint count, uint min, uint max);
	
	function checkAdmin(address addr) public view returns (bool)
	{
		CheckAccess check = CheckAccess(checkAccessContract);
		return( check.isAdmin(addr) );
	}

	modifier onlyAdmin()
	{
		require( checkAdmin(_msgSender()), "wrong admin" );
		_;
	}
	
	function createType(
		string memory _name,
		string memory _uri,
		string memory _ipfs,
		uint _startPoint,
		uint _count) public onlyAdmin
	{
		require( bytes(_name).length >= 3, "wrong length" );
		require( bytes(_ipfs).length >= 3, "wrong length" );
		require( _count > 0, "count must not be zero" );
		require( _startPoint > endPoint, "wrong startPoint" );
		
		uint id = typesById.length;
		if ( bytes(_uri).length == 0 ) _uri = _baseURI();

		uint minBound = _startPoint;
		uint maxBound = _startPoint + _count - 1;
		endPoint = maxBound;
		
		Type memory _type = Type({
			name: _name,
			URI: _uri,
			IPFSHash: _ipfs,
			issuedCount: 0,
			minBound: minBound,
			maxBound: maxBound
		});

		typesById.push( _type );
		
		emit CreateType(id, _name, _count, minBound, maxBound);
	}

	function getTypeById(uint256 typeId) public view returns (
		string memory name,
		string memory URI,
		string memory IPFSHash,
		uint maxCount,
		uint issuedCount,
		uint minBound,
		uint maxBound
	){
		require( typeId < typesById.length, "query for nonexistent type" );
		
		name = typesById[typeId].name;
		URI = typesById[typeId].URI;
		IPFSHash = typesById[typeId].IPFSHash;
		maxCount = typesById[typeId].maxBound - typesById[typeId].minBound + 1;
		issuedCount = typesById[typeId].issuedCount;
		minBound = typesById[typeId].minBound;
		maxBound = typesById[typeId].maxBound;
	}
	
    function tokenURI(uint256 tokenId) public view override returns (string memory)
	{
        require(_exists(tokenId), "query for nonexistent token");
		uint typeId = tokenType[tokenId];
		return string(abi.encodePacked( typesById[typeId].URI, tokenId.toString()));
    }
	
	function tokenIPFSHash(uint256 tokenId) public view returns (string memory hash)
	{
		require(_exists(tokenId), "query for nonexistent token");
		uint typeId = tokenType[tokenId];
		return typesById[typeId].IPFSHash;
	}
	
	function issueToken(address addr, uint typeId, uint256 tokenId) internal
	{
		require( typeId < typesById.length, "query for nonexistent type" );
		
		require( tokenId >= typesById[typeId].minBound, "min overrun" );
		require( tokenId <= typesById[typeId].maxBound, "max overrun" );
		
		if (_exists(tokenId))
		{
			_transfer(address(this), addr, tokenId);
		}
		else
		{
			tokenType[tokenId] = typeId;
			
			typesById[typeId].issuedCount++;
			
			_mint(addr, tokenId);
		}
	}
	
	function giveTokenTo(address to, uint typeId, uint tokenId) public onlyAdmin
	{
		issueToken(to, typeId, tokenId);
	}
	
	function giveTokens(address[] memory addrs, uint typeId, uint[] memory idTokens) public onlyAdmin
	{
		require(addrs.length>0, "length is 0");
		require(addrs.length == idTokens.length, "arrays are not equal");
		
		uint count = addrs.length;
		for(uint i = 0; i < count; i++) 
		{
			issueToken(addrs[i], typeId, idTokens[i]);
        }
    }
	
	function takeToken(uint256 typeId, uint256 tokenId, uint64 nonce, bytes32 r, bytes32 s, uint8 v) public
	{
		bytes memory prefix = "\x19Ethereum Signed Message:\n32";
		bytes32 hash = keccak256( abi.encodePacked(address(this), _msgSender(), nonce, typeId, tokenId) );
        address signer = ecrecover(keccak256(abi.encodePacked(prefix,hash)), v, r, s);

		require( nonces[nonce] == false, "wrong nonce" );
		nonces[nonce] = true;

		require( checkAdmin(signer), "wrong admin" );
		
		issueToken(_msgSender(), typeId, tokenId);
	}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"address","name":"_checkAccessContract","type":"address"}],"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":false,"internalType":"uint256","name":"typeId","type":"uint256"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"uint256","name":"count","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"min","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"max","type":"uint256"}],"name":"CreateType","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":[{"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":"addr","type":"address"}],"name":"checkAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_uri","type":"string"},{"internalType":"string","name":"_ipfs","type":"string"},{"internalType":"uint256","name":"_startPoint","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"createType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"}],"name":"getTypeById","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"URI","type":"string"},{"internalType":"string","name":"IPFSHash","type":"string"},{"internalType":"uint256","name":"maxCount","type":"uint256"},{"internalType":"uint256","name":"issuedCount","type":"uint256"},{"internalType":"uint256","name":"minBound","type":"uint256"},{"internalType":"uint256","name":"maxBound","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"typeId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"giveTokenTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"uint256","name":"typeId","type":"uint256"},{"internalType":"uint256[]","name":"idTokens","type":"uint256[]"}],"name":"giveTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"nonces","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"uint8","name":"v","type":"uint8"}],"name":"takeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenIPFSHash","outputs":[{"internalType":"string","name":"hash","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063b6aa991611610097578063d371663011610071578063d371663014610396578063d50df00d146103a9578063e6c3b1f6146103bc578063e985e9c5146103cf576101a9565b8063b6aa99161461034a578063b88d4fde14610370578063c87b56dd14610383576101a9565b806395d89b41116100d357806395d89b411461031457806399e51e1c1461031c578063a22cb46514610324578063a55e7be614610337576101a9565b806370a08231146102db5780638819a12f146102ee5780639026dee814610301576101a9565b806323b872dd1161016657806342842e0e1161014057806342842e0e1461028f5780634400c82c146102a25780634f6ccce7146102b55780636352211e146102c8576101a9565b806323b872dd146102565780632afac9af146102695780632f745c591461027c576101a9565b806301ffc9a7146101ae57806306fdde03146101d7578063081812fc146101ec578063095ea7b31461020c578063150b7a021461022157806318160ddd14610241575b600080fd5b6101c16101bc3660046120a5565b6103e2565b6040516101ce91906123af565b60405180910390f35b6101df610460565b6040516101ce91906123ed565b6101ff6101fa366004612173565b6104f2565b6040516101ce919061235e565b61021f61021a366004611f67565b61053e565b005b61023461022f366004611e22565b6105d6565b6040516101ce91906123d8565b6102496105e7565b6040516101ce9190612ac4565b61021f610264366004611de7565b6105ed565b61021f610277366004611fc2565b610625565b61024961028a366004611f67565b61070d565b61021f61029d366004611de7565b61075f565b61021f6102b0366004611f90565b61077a565b6102496102c3366004612173565b6107ac565b6101ff6102d6366004612173565b610807565b6102496102e9366004611d9b565b61083c565b61021f6102fc3660046120dd565b610880565b6101c161030f366004611d9b565b610a7d565b6101df610b07565b610249610b16565b61021f610332366004611f31565b610b1c565b61021f61034536600461218b565b610bea565b61035d610358366004612173565b610d77565b6040516101ce9796959493929190612400565b61021f61037e366004611eb8565b611104565b6101df610391366004612173565b611143565b6101df6103a4366004612173565b6111dd565b6101c16103b73660046121eb565b6112d7565b6102496103ca366004612173565b6112ec565b6101c16103dd366004611db5565b6112fe565b60006001600160e01b031982166380ac58cd60e01b148061041357506001600160e01b03198216635b5e139f60e01b145b8061042e57506001600160e01b0319821663780e9d6360e01b145b8061044957506001600160e01b03198216630a85bd0160e11b145b80610458575061045882611332565b90505b919050565b60606000805461046f90612bd3565b80601f016020809104026020016040519081016040528092919081815260200182805461049b90612bd3565b80156104e85780601f106104bd576101008083540402835291602001916104e8565b820191906000526020600020905b8154815290600101906020018083116104cb57829003601f168201915b5050505050905090565b60006104fd8261134b565b6105225760405162461bcd60e51b8152600401610519906128d0565b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061054982610807565b9050806001600160a01b0316836001600160a01b0316141561057d5760405162461bcd60e51b81526004016105199061298a565b806001600160a01b031661058f611368565b6001600160a01b031614806105ab57506105ab816103dd611368565b6105c75760405162461bcd60e51b8152600401610519906126fe565b6105d1838361136c565b505050565b630a85bd0160e11b95945050505050565b60075490565b6105fe6105f8611368565b826113da565b61061a5760405162461bcd60e51b8152600401610519906129cb565b6105d183838361145f565b61063061030f611368565b61064c5760405162461bcd60e51b81526004016105199061291c565b600083511161066d5760405162461bcd60e51b81526004016105199061281c565b805183511461068e5760405162461bcd60e51b81526004016105199061275b565b825160005b81811015610706576106f48582815181106106be57634e487b7160e01b600052603260045260246000fd5b6020026020010151858584815181106106e757634e487b7160e01b600052603260045260246000fd5b60200260200101516115a9565b806106fe81612c0e565b915050610693565b5050505050565b60006107188361083c565b82106107365760405162461bcd60e51b815260040161051990612460565b506001600160a01b03919091166000908152600960209081526040808320938352929052205490565b6105d183838360405180602001604052806000815250611104565b61078561030f611368565b6107a15760405162461bcd60e51b81526004016105199061291c565b6105d18383836115a9565b60006107b66105e7565b82106107d45760405162461bcd60e51b815260040161051990612a1c565b600782815481106107f557634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b6000818152600360205260408120546001600160a01b0316806104585760405162461bcd60e51b8152600401610519906127d3565b60006001600160a01b0382166108645760405162461bcd60e51b815260040161051990612789565b506001600160a01b031660009081526004602052604090205490565b61088b61030f611368565b6108a75760405162461bcd60e51b81526004016105199061291c565b6003855110156108c95760405162461bcd60e51b8152600401610519906126a8565b6003835110156108eb5760405162461bcd60e51b8152600401610519906126a8565b6000811161090b5760405162461bcd60e51b8152600401610519906126ce565b600d54821161092c5760405162461bcd60e51b8152600401610519906124fd565b600c5484516109405761093d6116ec565b94505b826000600161094f8584612b64565b6109599190612b90565b600d8190556040805160c0810182528a815260208082018b90529181018990526000606082018190526080820186905260a08201849052600c80546001810182559152815180519495509193849360069092027fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c701926109dd928492910190611bf0565b5060208281015180516109f69260018501920190611bf0565b5060408201518051610a12916002840191602090910190611bf0565b50606082015181600301556080820151816004015560a0820151816005015550507f215b5066ded56c7fc073dbdda4d09e3a6f644406a2e5bc085a7d7b23ba4b2a9e848a878686604051610a6a959493929190612acd565b60405180910390a1505050505050505050565b600b54604051630935e01b60e21b81526000916001600160a01b03169081906324d7806c90610ab090869060040161235e565b60206040518083038186803b158015610ac857600080fd5b505afa158015610adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b009190612089565b9392505050565b60606001805461046f90612bd3565b600d5481565b610b24611368565b6001600160a01b0316826001600160a01b03161415610b555760405162461bcd60e51b8152600401610519906125c9565b8060066000610b62611368565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610ba6611368565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610bde91906123af565b60405180910390a35050565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152600030610c29611368565b878a8a604051602001610c4095949392919061224d565b604051602081830303815290604052805190602001209050600060018383604051602001610c6f929190612296565b6040516020818303038152906040528051906020012085888860405160008152602001604052604051610ca594939291906123ba565b6020604051602081039080840390855afa158015610cc7573d6000803e3d6000fd5b505060408051601f19015167ffffffffffffffff8a166000908152600f602052919091205490925060ff16159050610d115760405162461bcd60e51b815260040161051990612841565b67ffffffffffffffff87166000908152600f60205260409020805460ff19166001179055610d3e81610a7d565b610d5a5760405162461bcd60e51b81526004016105199061291c565b610d6c610d65611368565b8a8a6115a9565b505050505050505050565b6060806060600080600080600c805490508810610da65760405162461bcd60e51b815260040161051990612a68565b600c8881548110610dc757634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016000018054610de390612bd3565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0f90612bd3565b8015610e5c5780601f10610e3157610100808354040283529160200191610e5c565b820191906000526020600020905b815481529060010190602001808311610e3f57829003601f168201915b50505050509650600c8881548110610e8457634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016001018054610ea090612bd3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecc90612bd3565b8015610f195780601f10610eee57610100808354040283529160200191610f19565b820191906000526020600020905b815481529060010190602001808311610efc57829003601f168201915b50505050509550600c8881548110610f4157634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016002018054610f5d90612bd3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8990612bd3565b8015610fd65780601f10610fab57610100808354040283529160200191610fd6565b820191906000526020600020905b815481529060010190602001808311610fb957829003601f168201915b50505050509450600c8881548110610ffe57634e487b7160e01b600052603260045260246000fd5b906000526020600020906006020160040154600c898154811061103157634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016005015461104d9190612b90565b611058906001612b64565b9350600c888154811061107b57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060060201600301549250600c88815481106110b057634e487b7160e01b600052603260045260246000fd5b9060005260206000209060060201600401549150600c88815481106110e557634e487b7160e01b600052603260045260246000fd5b9060005260206000209060060201600501549050919395979092949650565b61111561110f611368565b836113da565b6111315760405162461bcd60e51b8152600401610519906129cb565b61113d848484846116fb565b50505050565b606061114e8261134b565b61116a5760405162461bcd60e51b815260040161051990612671565b6000828152600e6020526040902054600c80548290811061119b57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016001016111b58461172e565b6040516020016111c69291906122b8565b604051602081830303815290604052915050919050565b60606111e88261134b565b6112045760405162461bcd60e51b815260040161051990612671565b6000828152600e6020526040902054600c80548290811061123557634e487b7160e01b600052603260045260246000fd5b9060005260206000209060060201600201805461125190612bd3565b80601f016020809104026020016040519081016040528092919081815260200182805461127d90612bd3565b80156112ca5780601f1061129f576101008083540402835291602001916112ca565b820191906000526020600020905b8154815290600101906020018083116112ad57829003601f168201915b5050505050915050919050565b600f6020526000908152604090205460ff1681565b600e6020526000908152604090205481565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3b151590565b6001600160e01b031981166301ffc9a760e01b14919050565b6000908152600360205260409020546001600160a01b0316151590565b3390565b600081815260056020526040902080546001600160a01b0319166001600160a01b03841690811790915581906113a182610807565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006113e58261134b565b6114015760405162461bcd60e51b815260040161051990612625565b600061140c83610807565b9050806001600160a01b0316846001600160a01b031614806114475750836001600160a01b031661143c846104f2565b6001600160a01b0316145b80611457575061145781856112fe565b949350505050565b826001600160a01b031661147282610807565b6001600160a01b0316146114985760405162461bcd60e51b815260040161051990612941565b6001600160a01b0382166114be5760405162461bcd60e51b815260040161051990612585565b6114c9838383611849565b6000818152600560205260409020546001600160a01b0316156114f1576114f160008261136c565b6001600160a01b038316600090815260046020526040812080546001929061151a908490612b90565b90915550506001600160a01b0382166000908152600460205260408120805460019290611548908490612b64565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600c5482106115ca5760405162461bcd60e51b815260040161051990612a68565b600c82815481106115eb57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016004015481101561161c5760405162461bcd60e51b815260040161051990612a9f565b600c828154811061163d57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016005015481111561166e5760405162461bcd60e51b815260040161051990612600565b6116778161134b565b1561168c5761168730848361145f565b6105d1565b6000818152600e60205260409020829055600c8054839081106116bf57634e487b7160e01b600052603260045260246000fd5b6000918252602082206003600690920201018054916116dd83612c0e565b91905055506105d183826118d1565b60606002805461046f90612bd3565b61170684848461145f565b611712848484846119b0565b61113d5760405162461bcd60e51b8152600401610519906124ab565b60608161175357506040805180820190915260018152600360fc1b602082015261045b565b8160005b811561177d578061176781612c0e565b91506117769050600a83612b7c565b9150611757565b60008167ffffffffffffffff8111156117a657634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156117d0576020820181803683370190505b5090505b8415611457576117e5600183612b90565b91506117f2600a86612c29565b6117fd906030612b64565b60f81b81838151811061182057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611842600a86612b7c565b94506117d4565b6001600160a01b03821661186f5760405162461bcd60e51b815260040161051990612866565b816001600160a01b0316836001600160a01b031614156118a15760405162461bcd60e51b81526004016105199061255e565b6001600160a01b0383166118bd576118b881611acb565b6118c7565b6118c78382611b0f565b6105d18282611bac565b6001600160a01b0382166118f75760405162461bcd60e51b81526004016105199061289b565b6119008161134b565b1561191d5760405162461bcd60e51b815260040161051990612527565b61192960008383611849565b6001600160a01b0382166000908152600460205260408120805460019290611952908490612b64565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006119c4846001600160a01b031661132c565b15611ac057836001600160a01b031663150b7a026119e0611368565b8786866040518563ffffffff1660e01b8152600401611a029493929190612372565b602060405180830381600087803b158015611a1c57600080fd5b505af1925050508015611a4c575060408051601f3d908101601f19168201909252611a49918101906120c1565b60015b611aa6573d808015611a7a576040519150601f19603f3d011682016040523d82523d6000602084013e611a7f565b606091505b508051611a9e5760405162461bcd60e51b8152600401610519906124ab565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611457565b506001949350505050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b60006001611b1c8461083c565b611b269190612b90565b6000838152600a6020526040902054909150808214611b79576001600160a01b03841660009081526009602090815260408083208584528252808320548484528184208190558352600a90915290208190555b506000918252600a602090815260408084208490556001600160a01b039094168352600981528383209183525290812055565b6000611bb78361083c565b6001600160a01b0390931660009081526009602090815260408083208684528252808320859055938252600a9052919091209190915550565b828054611bfc90612bd3565b90600052602060002090601f016020900481019282611c1e5760008555611c64565b82601f10611c3757805160ff1916838001178555611c64565b82800160010185558215611c64579182015b82811115611c64578251825591602001919060010190611c49565b50611c70929150611c74565b5090565b5b80821115611c705760008155600101611c75565b600067ffffffffffffffff831115611ca357611ca3612c69565b611cb6601f8401601f1916602001612b03565b9050828152838383011115611cca57600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b038116811461045b57600080fd5b600082601f830112611d08578081fd5b81356020611d1d611d1883612b34565b612b03565b8281528181019085830183850287018401881015611d39578586fd5b855b85811015611d5757813584529284019290840190600101611d3b565b5090979650505050505050565b600082601f830112611d74578081fd5b610b0083833560208501611c89565b803567ffffffffffffffff8116811461045b57600080fd5b600060208284031215611dac578081fd5b610b0082611ce1565b60008060408385031215611dc7578081fd5b611dd083611ce1565b9150611dde60208401611ce1565b90509250929050565b600080600060608486031215611dfb578081fd5b611e0484611ce1565b9250611e1260208501611ce1565b9150604084013590509250925092565b600080600080600060808688031215611e39578081fd5b611e4286611ce1565b9450611e5060208701611ce1565b935060408601359250606086013567ffffffffffffffff80821115611e73578283fd5b818801915088601f830112611e86578283fd5b813581811115611e94578384fd5b896020828501011115611ea5578384fd5b9699959850939650602001949392505050565b60008060008060808587031215611ecd578384fd5b611ed685611ce1565b9350611ee460208601611ce1565b925060408501359150606085013567ffffffffffffffff811115611f06578182fd5b8501601f81018713611f16578182fd5b611f2587823560208401611c89565b91505092959194509250565b60008060408385031215611f43578182fd5b611f4c83611ce1565b91506020830135611f5c81612c7f565b809150509250929050565b60008060408385031215611f79578182fd5b611f8283611ce1565b946020939093013593505050565b600080600060608486031215611fa4578081fd5b611fad84611ce1565b95602085013595506040909401359392505050565b600080600060608486031215611fd6578081fd5b833567ffffffffffffffff80821115611fed578283fd5b818601915086601f830112612000578283fd5b81356020612010611d1883612b34565b82815281810190858301838502870184018c101561202c578788fd5b8796505b848710156120555761204181611ce1565b835260019690960195918301918301612030565b509750508701359450506040860135915080821115612072578283fd5b5061207f86828701611cf8565b9150509250925092565b60006020828403121561209a578081fd5b8151610b0081612c7f565b6000602082840312156120b6578081fd5b8135610b0081612c90565b6000602082840312156120d2578081fd5b8151610b0081612c90565b600080600080600060a086880312156120f4578283fd5b853567ffffffffffffffff8082111561210b578485fd5b61211789838a01611d64565b9650602088013591508082111561212c578485fd5b61213889838a01611d64565b9550604088013591508082111561214d578485fd5b5061215a88828901611d64565b9598949750949560608101359550608001359392505050565b600060208284031215612184578081fd5b5035919050565b60008060008060008060c087890312156121a3578384fd5b86359550602087013594506121ba60408801611d83565b9350606087013592506080870135915060a087013560ff811681146121dd578182fd5b809150509295509295509295565b6000602082840312156121fc578081fd5b610b0082611d83565b6000815180845261221d816020860160208601612ba7565b601f01601f19169290920160200192915050565b60008151612243818560208601612ba7565b9290920192915050565b606095861b6bffffffffffffffffffffffff1990811682529490951b909316601485015260c09190911b6001600160c01b03191660288401526030830152605082015260700190565b600083516122a8818460208801612ba7565b9190910191825250602001919050565b82546000908190600281046001808316806122d457607f831692505b60208084108214156122f457634e487b7160e01b87526022600452602487fd5b818015612308576001811461231957612345565b60ff19861689528489019650612345565b6123228b612b58565b885b8681101561233d5781548b820152908501908301612324565b505084890196505b5050505050506123558185612231565b95945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123a590830184612205565b9695505050505050565b901515815260200190565b93845260ff9290921660208401526040830152606082015260800190565b6001600160e01b031991909116815260200190565b600060208252610b006020830184612205565b600060e0825261241360e083018a612205565b8281036020840152612425818a612205565b905082810360408401526124398189612205565b9150508560608301528460808301528360a08301528260c083015298975050505050505050565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526010908201526f1ddc9bdb99c81cdd185c9d141bda5b9d60821b604082015260600190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b6020808252600d908201526c66726f6d20657175616c20746f60981b604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252600b908201526a36b0bc1037bb32b9393ab760a91b604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252601b908201527f717565727920666f72206e6f6e6578697374656e7420746f6b656e0000000000604082015260600190565b6020808252600c908201526b0eee4dedcce40d8cadccee8d60a31b604082015260600190565b602080825260169082015275636f756e74206d757374206e6f74206265207a65726f60501b604082015260600190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b602080825260149082015273185c9c985e5cc8185c99481b9bdd08195c5d585b60621b604082015260600190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252600b908201526a06c656e67746820697320360ac1b604082015260600190565b6020808252600b908201526a77726f6e67206e6f6e636560a81b604082015260600190565b6020808252818101527f666f7262696464656e207472616e7366657220746f2061646472657373283029604082015260600190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252600b908201526a3bb937b7339030b236b4b760a91b604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201526b7574206f6620626f756e647360a01b606082015260800190565b6020808252601a908201527f717565727920666f72206e6f6e6578697374656e742074797065000000000000604082015260600190565b6020808252600b908201526a36b4b71037bb32b9393ab760a91b604082015260600190565b90815260200190565b600086825260a06020830152612ae660a0830187612205565b604083019590955250606081019290925260809091015292915050565b604051601f8201601f1916810167ffffffffffffffff81118282101715612b2c57612b2c612c69565b604052919050565b600067ffffffffffffffff821115612b4e57612b4e612c69565b5060209081020190565b60009081526020902090565b60008219821115612b7757612b77612c3d565b500190565b600082612b8b57612b8b612c53565b500490565b600082821015612ba257612ba2612c3d565b500390565b60005b83811015612bc2578181015183820152602001612baa565b8381111561113d5750506000910152565b600281046001821680612be757607f821691505b60208210811415612c0857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612c2257612c22612c3d565b5060010190565b600082612c3857612c38612c53565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114612c8d57600080fd5b50565b6001600160e01b031981168114612c8d57600080fdfea2646970667358221220d080b7f27b056eae7b9dd1abbcce4c2827f4121da0b87bc109610d22c148b1d764736f6c63430008010033

Deployed Bytecode Sourcemap

13432:4601:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:426;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6261:102;;;:::i;:::-;;;;;;;:::i;7370:223::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6970:392::-;;;;;;:::i;:::-;;:::i;:::-;;4379:220;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5193:106::-;;;:::i;:::-;;;;;;;:::i;8080:254::-;;;;;;:::i;:::-;;:::i;17128:353::-;;;;;;:::i;:::-;;:::i;5307:256::-;;;;;;:::i;:::-;;:::i;8342:153::-;;;;;;:::i;:::-;;:::i;17002:120::-;;;;;;:::i;:::-;;:::i;5571:215::-;;;;;;:::i;:::-;;:::i;6012:241::-;;;;;;:::i;:::-;;:::i;5794:210::-;;;;;;:::i;:::-;;:::i;14550:820::-;;;;;;:::i;:::-;;:::i;14291:159::-;;;;;;:::i;:::-;;:::i;6371:106::-;;;:::i;13749:24::-;;;:::i;7601:297::-;;;;;;:::i;:::-;;:::i;17487:543::-;;;;;;:::i;:::-;;:::i;15375:603::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;8503:287::-;;;;;;:::i;:::-;;:::i;15987:274::-;;;;;;:::i;:::-;;:::i;16267:224::-;;;;;;:::i;:::-;;:::i;13850:38::-;;;;;;:::i;:::-;;:::i;13780:45::-;;;;;;:::i;:::-;;:::i;7906:166::-;;;;;;:::i;:::-;;:::i;4759:426::-;4861:4;-1:-1:-1;;;;;;4887:40:0;;-1:-1:-1;;;4887:40:0;;:105;;-1:-1:-1;;;;;;;4944:48:0;;-1:-1:-1;;;4944:48:0;4887:105;:172;;;-1:-1:-1;;;;;;;5009:50:0;;-1:-1:-1;;;5009:50:0;4887:172;:237;;;-1:-1:-1;;;;;;;5076:48:0;;-1:-1:-1;;;5076:48:0;4887:237;:290;;;;5141:36;5165:11;5141:23;:36::i;:::-;4880:297;;4759:426;;;;:::o;6261:102::-;6315:13;6350:5;6343:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6261:102;:::o;7370:223::-;7446:7;7476:16;7484:7;7476;:16::i;:::-;7468:73;;;;-1:-1:-1;;;7468:73:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;7561:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;7561:24:0;;7370:223::o;6970:392::-;7053:13;7069:16;7077:7;7069;:16::i;:::-;7053:32;;7110:5;-1:-1:-1;;;;;7104:11:0;:2;-1:-1:-1;;;;;7104:11:0;;;7096:57;;;;-1:-1:-1;;;7096:57:0;;;;;;;:::i;:::-;7190:5;-1:-1:-1;;;;;7174:21:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;7174:21:0;;:62;;;;7199:37;7216:5;7223:12;:10;:12::i;7199:37::-;7166:154;;;;-1:-1:-1;;;7166:154:0;;;;;;;:::i;:::-;7333:21;7342:2;7346:7;7333:8;:21::i;:::-;6970:392;;;:::o;4379:220::-;-1:-1:-1;;;4379:220:0;;;;;;;:::o;5193:106::-;5277:10;:17;5193:106;:::o;8080:254::-;8190:41;8209:12;:10;:12::i;:::-;8223:7;8190:18;:41::i;:::-;8182:103;;;;-1:-1:-1;;;8182:103:0;;;;;;;:::i;:::-;8298:28;8308:4;8314:2;8318:7;8298:9;:28::i;17128:353::-;14492:24;14503:12;:10;:12::i;14492:24::-;14483:50;;;;-1:-1:-1;;;14483:50:0;;;;;;;:::i;:::-;17254:1:::1;17241:5;:12;:14;17233:38;;;;-1:-1:-1::0;;;17233:38:0::1;;;;;;;:::i;:::-;17300:8;:15;17284:5;:12;:31;17276:64;;;;-1:-1:-1::0;;;17276:64:0::1;;;;;;;:::i;:::-;17362:12:::0;;17349:10:::1;17379:95;17399:5;17395:1;:9;17379:95;;;17421:41;17432:5;17438:1;17432:8;;;;;;-1:-1:-1::0;;;17432:8:0::1;;;;;;;;;;;;;;;17442:6;17450:8;17459:1;17450:11;;;;;;-1:-1:-1::0;;;17450:11:0::1;;;;;;;;;;;;;;;17421:10;:41::i;:::-;17406:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17379:95;;;;14538:1;17128:353:::0;;;:::o;5307:256::-;5404:15;5450:16;5460:5;5450:9;:16::i;:::-;5442:5;:24;5434:80;;;;-1:-1:-1;;;5434:80:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5532:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;5307:256::o;8342:153::-;8448:39;8465:4;8471:2;8475:7;8448:39;;;;;;;;;;;;:16;:39::i;17002:120::-;14492:24;14503:12;:10;:12::i;14492:24::-;14483:50;;;;-1:-1:-1;;;14483:50:0;;;;;;;:::i;:::-;17086:31:::1;17097:2;17101:6;17109:7;17086:10;:31::i;5571:215::-:0;5646:7;5684:13;:11;:13::i;:::-;5676:5;:21;5668:78;;;;-1:-1:-1;;;5668:78:0;;;;;;;:::i;:::-;5764:10;5775:5;5764:17;;;;;;-1:-1:-1;;;5764:17:0;;;;;;;;;;;;;;;;;5757:24;;5571:215;;;:::o;6012:241::-;6084:7;6122:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6122:16:0;6157:19;6149:73;;;;-1:-1:-1;;;6149:73:0;;;;;;;:::i;5794:210::-;5866:7;-1:-1:-1;;;;;5896:19:0;;5888:74;;;;-1:-1:-1;;;5888:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5980:16:0;;;;;:9;:16;;;;;;;5794:210::o;14550:820::-;14492:24;14503:12;:10;:12::i;14492:24::-;14483:50;;;;-1:-1:-1;;;14483:50:0;;;;;;;:::i;:::-;14735:1:::1;14718:5;14712:19;:24;;14703:51;;;;-1:-1:-1::0;;;14703:51:0::1;;;;;;;:::i;:::-;14791:1;14774:5;14768:19;:24;;14759:51;;;;-1:-1:-1::0;;;14759:51:0::1;;;;;;;:::i;:::-;14833:1;14824:6;:10;14815:47;;;;-1:-1:-1::0;;;14815:47:0::1;;;;;;;:::i;:::-;14890:8;;14876:11;:22;14867:53;;;;-1:-1:-1::0;;;14867:53:0::1;;;;;;;:::i;:::-;14939:9;:16:::0;14965:18;;14960:48:::1;;14998:10;:8;:10::i;:::-;14991:17;;14960:48;15031:11:::0;15015:13:::1;15086:1;15063:20;15077:6:::0;15031:11;15063:20:::1;:::i;:::-;:24;;;;:::i;:::-;15092:8;:19:::0;;;15140:132:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;15120:17:::1;15140:132:::0;;;;;;;;;;;;;;;;;;15279:9:::1;:23:::0;;::::1;::::0;::::1;::::0;;;;;;;;15047:40;;-1:-1:-1;15140:132:0;;;;15279:23:::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;15279:23:0::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;15279:23:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;15316:49;15327:2;15331:5;15338:6;15346:8;15356;15316:49;;;;;;;;;;:::i;:::-;;;;;;;;14538:1;;;;14550:820:::0;;;;;:::o;14291:159::-;14391:19;;14424;;-1:-1:-1;;;14424:19:0;;14346:4;;-1:-1:-1;;;;;14391:19:0;;;;14424:13;;:19;;14438:4;;14424:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14416:29;14291:159;-1:-1:-1;;;14291:159:0:o;6371:106::-;6427:13;6462:7;6455:14;;;;;:::i;13749:24::-;;;;:::o;7601:297::-;7718:12;:10;:12::i;:::-;-1:-1:-1;;;;;7706:24:0;:8;-1:-1:-1;;;;;7706:24:0;;;7698:62;;;;-1:-1:-1;;;7698:62:0;;;;;;;:::i;:::-;7818:8;7773:18;:32;7792:12;:10;:12::i;:::-;-1:-1:-1;;;;;7773:32:0;;;;;;;;;;;;;;;;;-1:-1:-1;7773:32:0;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;7773:53:0;;;;;;;;;;;7857:12;:10;:12::i;:::-;-1:-1:-1;;;;;7842:48:0;;7881:8;7842:48;;;;;;:::i;:::-;;;;;;;;7601:297;;:::o;17487:543::-;17598:56;;;;;;;;;;;;;;;;;:19;17710:4;17717:12;:10;:12::i;:::-;17731:5;17738:6;17746:7;17685:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17674:82;;;;;;17659:97;;17767:14;17784:60;17821:6;17828:4;17804:29;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17794:40;;;;;;17836:1;17839;17842;17784:60;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17784:60:0;;;-1:-1:-1;;17784:60:0;;17860:13;;;;;;;:6;17784:60;17860:13;;;;;;17784:60;;-1:-1:-1;17860:13:0;;:22;;-1:-1:-1;17851:48:0;;;;-1:-1:-1;;;17851:48:0;;;;;;;:::i;:::-;17904:13;;;;;;;:6;:13;;;;;:20;;-1:-1:-1;;17904:20:0;17920:4;17904:20;;;17940:18;17951:6;17940:10;:18::i;:::-;17931:44;;;;-1:-1:-1;;;17931:44:0;;;;;;;:::i;:::-;17984:41;17995:12;:10;:12::i;:::-;18009:6;18017:7;17984:10;:41::i;:::-;17487:543;;;;;;;;;:::o;15375:603::-;15437:18;15460:17;15482:22;15509:13;15527:16;15548:13;15566;15606:9;:16;;;;15597:6;:25;15588:66;;;;-1:-1:-1;;;15588:66:0;;;;;;;:::i;:::-;15670:9;15680:6;15670:17;;;;;;-1:-1:-1;;;15670:17:0;;;;;;;;;;;;;;;;;;;:22;;15663:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15703:9;15713:6;15703:17;;;;;;-1:-1:-1;;;15703:17:0;;;;;;;;;;;;;;;;;;;:21;;15697:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15740:9;15750:6;15740:17;;;;;;-1:-1:-1;;;15740:17:0;;;;;;;;;;;;;;;;;;;:26;;15729:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15811:9;15821:6;15811:17;;;;;;-1:-1:-1;;;15811:17:0;;;;;;;;;;;;;;;;;;;:26;;;15782:9;15792:6;15782:17;;;;;;-1:-1:-1;;;15782:17:0;;;;;;;;;;;;;;;;;;;:26;;;:55;;;;:::i;:::-;:59;;15840:1;15782:59;:::i;:::-;15771:70;;15860:9;15870:6;15860:17;;;;;;-1:-1:-1;;;15860:17:0;;;;;;;;;;;;;;;;;;;:29;;;15846:43;;15905:9;15915:6;15905:17;;;;;;-1:-1:-1;;;15905:17:0;;;;;;;;;;;;;;;;;;;:26;;;15894:37;;15947:9;15957:6;15947:17;;;;;;-1:-1:-1;;;15947:17:0;;;;;;;;;;;;;;;;;;;:26;;;15936:37;;15375:603;;;;;;;;;:::o;8503:287::-;8637:41;8656:12;:10;:12::i;:::-;8670:7;8637:18;:41::i;:::-;8629:103;;;;-1:-1:-1;;;8629:103:0;;;;;;;:::i;:::-;8743:39;8757:4;8763:2;8767:7;8776:5;8743:13;:39::i;:::-;8503:287;;;;:::o;15987:274::-;16052:13;16088:16;16096:7;16088;:16::i;:::-;16080:56;;;;-1:-1:-1;;;16080:56:0;;;;;;;:::i;:::-;16141:11;16155:18;;;:9;:18;;;;;;16210:9;:17;;16155:18;;16210:17;;;;-1:-1:-1;;;16210:17:0;;;;;;;;;;;;;;;;;;;:21;;16233:18;:7;:16;:18::i;:::-;16192:60;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16178:75;;;15987:274;;;:::o;16267:224::-;16328:18;16363:16;16371:7;16363;:16::i;:::-;16355:56;;;;-1:-1:-1;;;16355:56:0;;;;;;;:::i;:::-;16416:11;16430:18;;;:9;:18;;;;;;16460:9;:17;;16430:18;;16460:17;;;;-1:-1:-1;;;16460:17:0;;;;;;;;;;;;;;;;;;;:26;;16453:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16267:224;;;:::o;13850:38::-;;;;;;;;;;;;;;;:::o;13780:45::-;;;;;;;;;;;;;:::o;7906:166::-;-1:-1:-1;;;;;8029:25:0;;;8003:4;8029:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7906:166::o;122:176::-;243:20;282:8;;;122:176::o;1144:159::-;-1:-1:-1;;;;;;1255:40:0;;-1:-1:-1;;;1255:40:0;1144:159;;;:::o;9080:129::-;9145:4;9171:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9171:16:0;:30;;;9080:129::o;884:100::-;966:10;884:100;:::o;10879:169::-;10956:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;10956:29:0;-1:-1:-1;;;;;10956:29:0;;;;;;;;:24;;11010:16;10956:24;11010:7;:16::i;:::-;-1:-1:-1;;;;;11001:39:0;;;;;;;;;;;10879:169;;:::o;9217:343::-;9310:4;9337:16;9345:7;9337;:16::i;:::-;9329:73;;;;-1:-1:-1;;;9329:73:0;;;;;;;:::i;:::-;9413:13;9429:16;9437:7;9429;:16::i;:::-;9413:32;;9475:5;-1:-1:-1;;;;;9464:16:0;:7;-1:-1:-1;;;;;9464:16:0;;:51;;;;9508:7;-1:-1:-1;;;;;9484:31:0;:20;9496:7;9484:11;:20::i;:::-;-1:-1:-1;;;;;9484:31:0;;9464:51;:87;;;;9519:32;9536:5;9543:7;9519:16;:32::i;:::-;9456:96;9217:343;-1:-1:-1;;;;9217:343:0:o;10340:531::-;10460:4;-1:-1:-1;;;;;10440:24:0;:16;10448:7;10440;:16::i;:::-;-1:-1:-1;;;;;10440:24:0;;10432:78;;;;-1:-1:-1;;;10432:78:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10529:16:0;;10521:65;;;;-1:-1:-1;;;10521:65:0;;;;;;;:::i;:::-;10599:39;10620:4;10626:2;10630:7;10599:20;:39::i;:::-;10691:1;10655:24;;;:15;:24;;;;;;-1:-1:-1;;;;;10655:24:0;:38;10651:73;;10695:29;10712:1;10716:7;10695:8;:29::i;:::-;-1:-1:-1;;;;;10737:15:0;;;;;;:9;:15;;;;;:20;;10756:1;;10737:15;:20;;10756:1;;10737:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10768:13:0;;;;;;:9;:13;;;;;:18;;10785:1;;10768:13;:18;;10785:1;;10768:18;:::i;:::-;;;;-1:-1:-1;;10797:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10797:21:0;-1:-1:-1;;;;;10797:21:0;;;;;;;;;10836:27;;10797:16;;10836:27;;;;;;;10340:531;;;:::o;16497:499::-;16595:9;:16;16586:25;;16577:66;;;;-1:-1:-1;;;16577:66:0;;;;;;;:::i;:::-;16672:9;16682:6;16672:17;;;;;;-1:-1:-1;;;16672:17:0;;;;;;;;;;;;;;;;;;;:26;;;16661:7;:37;;16652:63;;;;-1:-1:-1;;;16652:63:0;;;;;;;:::i;:::-;16740:9;16750:6;16740:17;;;;;;-1:-1:-1;;;16740:17:0;;;;;;;;;;;;;;;;;;;:26;;;16729:7;:37;;16720:63;;;;-1:-1:-1;;;16720:63:0;;;;;;;:::i;:::-;16796:16;16804:7;16796;:16::i;:::-;16792:200;;;16823:39;16841:4;16848;16854:7;16823:9;:39::i;:::-;16792:200;;;16886:18;;;;:9;:18;;;;;:27;;;16924:9;:17;;16907:6;;16924:17;;;;-1:-1:-1;;;16924:17:0;;;;;;;;;;;;;;;;:29;:17;;;;;:29;:31;;;;;;:::i;:::-;;;;;;16966:20;16972:4;16978:7;16966:5;:20::i;6855:107::-;6906:13;6941;6934:20;;;;;:::i;8798:274::-;8914:28;8924:4;8930:2;8934:7;8914:9;:28::i;:::-;8961:48;8984:4;8990:2;8994:7;9003:5;8961:22;:48::i;:::-;8953:111;;;;-1:-1:-1;;;8953:111:0;;;;;;;:::i;329:514::-;385:13;417:10;413:26;;-1:-1:-1;429:10:0;;;;;;;;;;;;-1:-1:-1;;;429:10:0;;;;;;413:26;465:5;450:12;506:81;513:9;;506:81;;542:8;;;;:::i;:::-;;-1:-1:-1;565:10:0;;-1:-1:-1;573:2:0;565:10;;:::i;:::-;;;506:81;;;597:19;629:6;619:17;;;;;;-1:-1:-1;;;619:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;619:17:0;;597:39;;647:157;654:10;;647:157;;684:11;694:1;684:11;;:::i;:::-;;-1:-1:-1;753:10:0;761:2;753:5;:10;:::i;:::-;740:24;;:2;:24;:::i;:::-;727:39;;710:6;717;710:14;;;;;;-1:-1:-1;;;710:14:0;;;;;;;;;;;;:56;-1:-1:-1;;;;;710:56:0;;;;;;;;-1:-1:-1;781:11:0;790:2;781:11;;:::i;:::-;;;647:157;;11910:445;-1:-1:-1;;;;;12016:16:0;;12007:63;;;;-1:-1:-1;;;12007:63:0;;;;;;;:::i;:::-;12092:2;-1:-1:-1;;;;;12084:10:0;:4;-1:-1:-1;;;;;12084:10:0;;;12075:38;;;;-1:-1:-1;;;12075:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12132:18:0;;12128:171;;12167:40;12199:7;12167:31;:40::i;:::-;12128:171;;;12240:47;12273:4;12279:7;12240:32;:47::i;:::-;12307:40;12335:2;12339:7;12307:27;:40::i;9948:384::-;-1:-1:-1;;;;;10030:16:0;;10022:61;;;;-1:-1:-1;;;10022:61:0;;;;;;;:::i;:::-;10103:16;10111:7;10103;:16::i;:::-;10102:17;10094:58;;;;-1:-1:-1;;;10094:58:0;;;;;;;:::i;:::-;10165:45;10194:1;10198:2;10202:7;10165:20;:45::i;:::-;-1:-1:-1;;;;;10223:13:0;;;;;;:9;:13;;;;;:18;;10240:1;;10223:13;:18;;10240:1;;10223:18;:::i;:::-;;;;-1:-1:-1;;10252:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10252:21:0;-1:-1:-1;;;;;10252:21:0;;;;;;;;10291:33;;10252:16;;;10291:33;;10252:16;;10291:33;9948:384;;:::o;11056:845::-;11168:4;11194:15;:2;-1:-1:-1;;;;;11194:13:0;;:15::i;:::-;11190:704;;;11250:2;-1:-1:-1;;;;;11234:36:0;;11271:12;:10;:12::i;:::-;11285:4;11291:7;11300:5;11234:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11234:72:0;;;;;;;;-1:-1:-1;;11234:72:0;;;;;;;;;;;;:::i;:::-;;;11230:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11480:13:0;;11476:341;;11523:60;;-1:-1:-1;;;11523:60:0;;;;;;;:::i;11476:341::-;11767:6;11761:13;11752:6;11748:2;11744:15;11737:38;11230:602;-1:-1:-1;;;;;;11357:55:0;-1:-1:-1;;;11357:55:0;;-1:-1:-1;11350:62:0;;11190:704;-1:-1:-1;11878:4:0;11056:845;;;;;;:::o;12364:166::-;12470:10;:17;;12443:24;;;;:15;:24;;;;;:44;;;12498:24;;;;;;;;;;;;12364:166::o;12539:550::-;12633:22;12676:1;12658:15;12668:4;12658:9;:15::i;:::-;:19;;;;:::i;:::-;12688:18;12709:26;;;:17;:26;;;;;;12633:44;;-1:-1:-1;12752:28:0;;;12748:236;;-1:-1:-1;;;;;12819:18:0;;12797:19;12819:18;;;:12;:18;;;;;;;;:34;;;;;;;;;12870:30;;;;;;:44;;;12929:30;;:17;:30;;;;;:43;;;12748:236;-1:-1:-1;13003:26:0;;;;:17;:26;;;;;;;;12996:33;;;-1:-1:-1;;;;;13047:18:0;;;;;:12;:18;;;;;:34;;;;;;;13040:41;12539:550::o;13097:216::-;13184:14;13201:13;13211:2;13201:9;:13::i;:::-;-1:-1:-1;;;;;13225:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;13270:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;13097:216:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:408:1;;114:18;106:6;103:30;100:2;;;136:18;;:::i;:::-;174:57;219:2;198:15;;-1:-1:-1;;194:29:1;225:4;190:40;174:57;:::i;:::-;165:66;;254:6;247:5;240:21;294:3;285:6;280:3;276:16;273:25;270:2;;;311:1;308;301:12;270:2;360:6;355:3;348:4;341:5;337:16;324:43;414:1;407:4;398:6;391:5;387:18;383:29;376:40;90:332;;;;;:::o;427:175::-;497:20;;-1:-1:-1;;;;;546:31:1;;536:42;;526:2;;592:1;589;582:12;607:706;;720:3;713:4;705:6;701:17;697:27;687:2;;742:5;735;728:20;687:2;782:6;769:20;808:4;832:66;848:49;894:2;848:49;:::i;:::-;832:66;:::i;:::-;932:15;;;963:12;;;;995:15;;;1041:11;;;1029:24;;1025:33;;1022:42;-1:-1:-1;1019:2:1;;;1081:5;1074;1067:20;1019:2;1107:5;1121:163;1135:2;1132:1;1129:9;1121:163;;;1192:17;;1180:30;;1230:12;;;;1262;;;;1153:1;1146:9;1121:163;;;-1:-1:-1;1302:5:1;;677:636;-1:-1:-1;;;;;;;677:636:1:o;1318:233::-;;1416:3;1409:4;1401:6;1397:17;1393:27;1383:2;;1438:5;1431;1424:20;1383:2;1464:81;1541:3;1532:6;1519:20;1512:4;1504:6;1500:17;1464:81;:::i;1556:173::-;1625:20;;1685:18;1674:30;;1664:41;;1654:2;;1719:1;1716;1709:12;1734:198;;1846:2;1834:9;1825:7;1821:23;1817:32;1814:2;;;1867:6;1859;1852:22;1814:2;1895:31;1916:9;1895:31;:::i;1937:274::-;;;2066:2;2054:9;2045:7;2041:23;2037:32;2034:2;;;2087:6;2079;2072:22;2034:2;2115:31;2136:9;2115:31;:::i;:::-;2105:41;;2165:40;2201:2;2190:9;2186:18;2165:40;:::i;:::-;2155:50;;2024:187;;;;;:::o;2216:342::-;;;;2362:2;2350:9;2341:7;2337:23;2333:32;2330:2;;;2383:6;2375;2368:22;2330:2;2411:31;2432:9;2411:31;:::i;:::-;2401:41;;2461:40;2497:2;2486:9;2482:18;2461:40;:::i;:::-;2451:50;;2548:2;2537:9;2533:18;2520:32;2510:42;;2320:238;;;;;:::o;2563:862::-;;;;;;2745:3;2733:9;2724:7;2720:23;2716:33;2713:2;;;2767:6;2759;2752:22;2713:2;2795:31;2816:9;2795:31;:::i;:::-;2785:41;;2845:40;2881:2;2870:9;2866:18;2845:40;:::i;:::-;2835:50;;2932:2;2921:9;2917:18;2904:32;2894:42;;2987:2;2976:9;2972:18;2959:32;3010:18;3051:2;3043:6;3040:14;3037:2;;;3072:6;3064;3057:22;3037:2;3115:6;3104:9;3100:22;3090:32;;3160:7;3153:4;3149:2;3145:13;3141:27;3131:2;;3187:6;3179;3172:22;3131:2;3232;3219:16;3258:2;3250:6;3247:14;3244:2;;;3279:6;3271;3264:22;3244:2;3329:7;3324:2;3315:6;3311:2;3307:15;3303:24;3300:37;3297:2;;;3355:6;3347;3340:22;3297:2;2703:722;;;;-1:-1:-1;2703:722:1;;-1:-1:-1;3391:2:1;3383:11;;3413:6;2703:722;-1:-1:-1;;;2703:722:1:o;3430:702::-;;;;;3602:3;3590:9;3581:7;3577:23;3573:33;3570:2;;;3624:6;3616;3609:22;3570:2;3652:31;3673:9;3652:31;:::i;:::-;3642:41;;3702:40;3738:2;3727:9;3723:18;3702:40;:::i;:::-;3692:50;;3789:2;3778:9;3774:18;3761:32;3751:42;;3844:2;3833:9;3829:18;3816:32;3871:18;3863:6;3860:30;3857:2;;;3908:6;3900;3893:22;3857:2;3936:22;;3989:4;3981:13;;3977:27;-1:-1:-1;3967:2:1;;4023:6;4015;4008:22;3967:2;4051:75;4118:7;4113:2;4100:16;4095:2;4091;4087:11;4051:75;:::i;:::-;4041:85;;;3560:572;;;;;;;:::o;4137:329::-;;;4263:2;4251:9;4242:7;4238:23;4234:32;4231:2;;;4284:6;4276;4269:22;4231:2;4312:31;4333:9;4312:31;:::i;:::-;4302:41;;4393:2;4382:9;4378:18;4365:32;4406:30;4430:5;4406:30;:::i;:::-;4455:5;4445:15;;;4221:245;;;;;:::o;4471:266::-;;;4600:2;4588:9;4579:7;4575:23;4571:32;4568:2;;;4621:6;4613;4606:22;4568:2;4649:31;4670:9;4649:31;:::i;:::-;4639:41;4727:2;4712:18;;;;4699:32;;-1:-1:-1;;;4558:179:1:o;4742:334::-;;;;4888:2;4876:9;4867:7;4863:23;4859:32;4856:2;;;4909:6;4901;4894:22;4856:2;4937:31;4958:9;4937:31;:::i;:::-;4927:41;5015:2;5000:18;;4987:32;;-1:-1:-1;5066:2:1;5051:18;;;5038:32;;4846:230;-1:-1:-1;;;4846:230:1:o;5081:1295::-;;;;5277:2;5265:9;5256:7;5252:23;5248:32;5245:2;;;5298:6;5290;5283:22;5245:2;5343:9;5330:23;5372:18;5413:2;5405:6;5402:14;5399:2;;;5434:6;5426;5419:22;5399:2;5477:6;5466:9;5462:22;5452:32;;5522:7;5515:4;5511:2;5507:13;5503:27;5493:2;;5549:6;5541;5534:22;5493:2;5590;5577:16;5612:4;5636:66;5652:49;5698:2;5652:49;:::i;5636:66::-;5736:15;;;5767:12;;;;5799:11;;;5837;;;5829:20;;5825:29;;5822:42;-1:-1:-1;5819:2:1;;;5882:6;5874;5867:22;5819:2;5909:6;5900:15;;5924:171;5938:2;5935:1;5932:9;5924:171;;;5995:25;6016:3;5995:25;:::i;:::-;5983:38;;5956:1;5949:9;;;;;6041:12;;;;6073;;5924:171;;;-1:-1:-1;6114:5:1;-1:-1:-1;;6151:18:1;;6138:32;;-1:-1:-1;;6223:2:1;6208:18;;6195:32;;-1:-1:-1;6239:16:1;;;6236:2;;;6273:6;6265;6258:22;6236:2;;6301:69;6362:7;6351:8;6340:9;6336:24;6301:69;:::i;:::-;6291:79;;;5235:1141;;;;;:::o;6381:257::-;;6501:2;6489:9;6480:7;6476:23;6472:32;6469:2;;;6522:6;6514;6507:22;6469:2;6559:9;6553:16;6578:30;6602:5;6578:30;:::i;6643:257::-;;6754:2;6742:9;6733:7;6729:23;6725:32;6722:2;;;6775:6;6767;6760:22;6722:2;6819:9;6806:23;6838:32;6864:5;6838:32;:::i;6905:261::-;;7027:2;7015:9;7006:7;7002:23;6998:32;6995:2;;;7048:6;7040;7033:22;6995:2;7085:9;7079:16;7104:32;7130:5;7104:32;:::i;7171:927::-;;;;;;7381:3;7369:9;7360:7;7356:23;7352:33;7349:2;;;7403:6;7395;7388:22;7349:2;7448:9;7435:23;7477:18;7518:2;7510:6;7507:14;7504:2;;;7539:6;7531;7524:22;7504:2;7567:52;7611:7;7602:6;7591:9;7587:22;7567:52;:::i;:::-;7557:62;;7672:2;7661:9;7657:18;7644:32;7628:48;;7701:2;7691:8;7688:16;7685:2;;;7722:6;7714;7707:22;7685:2;7750:54;7796:7;7785:8;7774:9;7770:24;7750:54;:::i;:::-;7740:64;;7857:2;7846:9;7842:18;7829:32;7813:48;;7886:2;7876:8;7873:16;7870:2;;;7907:6;7899;7892:22;7870:2;;7935:54;7981:7;7970:8;7959:9;7955:24;7935:54;:::i;:::-;7339:759;;;;-1:-1:-1;7925:64:1;;8036:2;8021:18;;8008:32;;-1:-1:-1;8087:3:1;8072:19;8059:33;;7339:759;-1:-1:-1;;;7339:759:1:o;8103:190::-;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8236:6;8228;8221:22;8183:2;-1:-1:-1;8264:23:1;;8173:120;-1:-1:-1;8173:120:1:o;8298:638::-;;;;;;;8492:3;8480:9;8471:7;8467:23;8463:33;8460:2;;;8514:6;8506;8499:22;8460:2;8555:9;8542:23;8532:33;;8612:2;8601:9;8597:18;8584:32;8574:42;;8635:39;8670:2;8659:9;8655:18;8635:39;:::i;:::-;8625:49;;8721:2;8710:9;8706:18;8693:32;8683:42;;8772:3;8761:9;8757:19;8744:33;8734:43;;8827:3;8816:9;8812:19;8799:33;8872:4;8865:5;8861:16;8854:5;8851:27;8841:2;;8897:6;8889;8882:22;8841:2;8925:5;8915:15;;;8450:486;;;;;;;;:::o;8941:196::-;;9052:2;9040:9;9031:7;9027:23;9023:32;9020:2;;;9073:6;9065;9058:22;9020:2;9101:30;9121:9;9101:30;:::i;9142:270::-;;9234:5;9228:12;9261:6;9256:3;9249:19;9277:63;9333:6;9326:4;9321:3;9317:14;9310:4;9303:5;9299:16;9277:63;:::i;:::-;9394:2;9373:15;-1:-1:-1;;9369:29:1;9360:39;;;;9401:4;9356:50;;9204:208;-1:-1:-1;;9204:208:1:o;9417:186::-;;9498:5;9492:12;9513:52;9558:6;9553:3;9546:4;9539:5;9535:16;9513:52;:::i;:::-;9581:16;;;;;9468:135;-1:-1:-1;;9468:135:1:o;9608:572::-;9917:2;9913:15;;;-1:-1:-1;;9909:24:1;;;9897:37;;9968:15;;;;9964:24;;;9959:2;9950:12;;9943:46;10045:3;10023:16;;;;-1:-1:-1;;;;;;10019:51:1;10014:2;10005:12;;9998:73;10096:2;10087:12;;10080:28;10133:2;10124:12;;10117:28;10170:3;10161:13;;9837:343::o;10185:370::-;;10380:6;10374:13;10396:53;10442:6;10437:3;10430:4;10422:6;10418:17;10396:53;:::i;:::-;10471:16;;;;10496:21;;;-1:-1:-1;10544:4:1;10533:16;;10350:205;-1:-1:-1;10350:205:1:o;10560:1180::-;10794:13;;10560:1180;;;;10867:1;10852:17;;10888:1;10924:18;;;;10951:2;;11005:4;10997:6;10993:17;10983:27;;10951:2;11031;11079;11071:6;11068:14;11048:18;11045:38;11042:2;;;-1:-1:-1;;;11106:33:1;;11162:4;11159:1;11152:15;11192:4;11113:3;11180:17;11042:2;11223:18;11250:104;;;;11368:1;11363:324;;;;11216:471;;11250:104;-1:-1:-1;;11283:24:1;;11271:37;;11328:16;;;;-1:-1:-1;11250:104:1;;11363:324;11399:39;11431:6;11399:39;:::i;:::-;11460:3;11476:165;11490:6;11487:1;11484:13;11476:165;;;11568:14;;11555:11;;;11548:35;11611:16;;;;11505:10;;11476:165;;;11480:3;;11670:6;11665:3;11661:16;11654:23;;11216:471;;;;;;;11703:31;11730:3;11722:6;11703:31;:::i;:::-;11696:38;10744:996;-1:-1:-1;;;;;10744:996:1:o;11745:203::-;-1:-1:-1;;;;;11909:32:1;;;;11891:51;;11879:2;11864:18;;11846:102::o;11953:501::-;-1:-1:-1;;;;;12222:15:1;;;12204:34;;12274:15;;12269:2;12254:18;;12247:43;12321:2;12306:18;;12299:34;;;12369:3;12364:2;12349:18;;12342:31;;;11953:501;;12390:58;;12428:19;;12420:6;12390:58;:::i;:::-;12382:66;12156:298;-1:-1:-1;;;;;;12156:298:1:o;12459:187::-;12624:14;;12617:22;12599:41;;12587:2;12572:18;;12554:92::o;12651:398::-;12878:25;;;12951:4;12939:17;;;;12934:2;12919:18;;12912:45;12988:2;12973:18;;12966:34;13031:2;13016:18;;13009:34;12865:3;12850:19;;12832:217::o;13054:202::-;-1:-1:-1;;;;;;13216:33:1;;;;13198:52;;13186:2;13171:18;;13153:103::o;13261:232::-;;13410:2;13399:9;13392:21;13430:57;13483:2;13472:9;13468:18;13460:6;13430:57;:::i;13498:871::-;;13855:3;13844:9;13837:22;13882:58;13935:3;13924:9;13920:19;13912:6;13882:58;:::i;:::-;13988:9;13980:6;13976:22;13971:2;13960:9;13956:18;13949:50;14022:45;14060:6;14052;14022:45;:::i;:::-;14008:59;;14115:9;14107:6;14103:22;14098:2;14087:9;14083:18;14076:50;14143:45;14181:6;14173;14143:45;:::i;:::-;14135:53;;;14224:6;14219:2;14208:9;14204:18;14197:34;14268:6;14262:3;14251:9;14247:19;14240:35;14312:6;14306:3;14295:9;14291:19;14284:35;14356:6;14350:3;14339:9;14335:19;14328:35;13827:542;;;;;;;;;;:::o;14374:407::-;14576:2;14558:21;;;14615:2;14595:18;;;14588:30;14654:34;14649:2;14634:18;;14627:62;-1:-1:-1;;;14720:2:1;14705:18;;14698:41;14771:3;14756:19;;14548:233::o;14786:414::-;14988:2;14970:21;;;15027:2;15007:18;;;15000:30;15066:34;15061:2;15046:18;;15039:62;-1:-1:-1;;;15132:2:1;15117:18;;15110:48;15190:3;15175:19;;14960:240::o;15205:340::-;15407:2;15389:21;;;15446:2;15426:18;;;15419:30;-1:-1:-1;;;15480:2:1;15465:18;;15458:46;15536:2;15521:18;;15379:166::o;15550:352::-;15752:2;15734:21;;;15791:2;15771:18;;;15764:30;15830;15825:2;15810:18;;15803:58;15893:2;15878:18;;15724:178::o;15907:337::-;16109:2;16091:21;;;16148:2;16128:18;;;16121:30;-1:-1:-1;;;16182:2:1;16167:18;;16160:43;16235:2;16220:18;;16081:163::o;16249:400::-;16451:2;16433:21;;;16490:2;16470:18;;;16463:30;16529:34;16524:2;16509:18;;16502:62;-1:-1:-1;;;16595:2:1;16580:18;;16573:34;16639:3;16624:19;;16423:226::o;16654:349::-;16856:2;16838:21;;;16895:2;16875:18;;;16868:30;16934:27;16929:2;16914:18;;16907:55;16994:2;16979:18;;16828:175::o;17008:335::-;17210:2;17192:21;;;17249:2;17229:18;;;17222:30;-1:-1:-1;;;17283:2:1;17268:18;;17261:41;17334:2;17319:18;;17182:161::o;17348:408::-;17550:2;17532:21;;;17589:2;17569:18;;;17562:30;17628:34;17623:2;17608:18;;17601:62;-1:-1:-1;;;17694:2:1;17679:18;;17672:42;17746:3;17731:19;;17522:234::o;17761:351::-;17963:2;17945:21;;;18002:2;17982:18;;;17975:30;18041:29;18036:2;18021:18;;18014:57;18103:2;18088:18;;17935:177::o;18117:336::-;18319:2;18301:21;;;18358:2;18338:18;;;18331:30;-1:-1:-1;;;18392:2:1;18377:18;;18370:42;18444:2;18429:18;;18291:162::o;18458:346::-;18660:2;18642:21;;;18699:2;18679:18;;;18672:30;-1:-1:-1;;;18733:2:1;18718:18;;18711:52;18795:2;18780:18;;18632:172::o;18809:420::-;19011:2;18993:21;;;19050:2;19030:18;;;19023:30;19089:34;19084:2;19069:18;;19062:62;19160:26;19155:2;19140:18;;19133:54;19219:3;19204:19;;18983:246::o;19234:344::-;19436:2;19418:21;;;19475:2;19455:18;;;19448:30;-1:-1:-1;;;19509:2:1;19494:18;;19487:50;19569:2;19554:18;;19408:170::o;19583:406::-;19785:2;19767:21;;;19824:2;19804:18;;;19797:30;19863:34;19858:2;19843:18;;19836:62;-1:-1:-1;;;19929:2:1;19914:18;;19907:40;19979:3;19964:19;;19757:232::o;19994:405::-;20196:2;20178:21;;;20235:2;20215:18;;;20208:30;20274:34;20269:2;20254:18;;20247:62;-1:-1:-1;;;20340:2:1;20325:18;;20318:39;20389:3;20374:19;;20168:231::o;20404:335::-;20606:2;20588:21;;;20645:2;20625:18;;;20618:30;-1:-1:-1;;;20679:2:1;20664:18;;20657:41;20730:2;20715:18;;20578:161::o;20744:335::-;20946:2;20928:21;;;20985:2;20965:18;;;20958:30;-1:-1:-1;;;21019:2:1;21004:18;;20997:41;21070:2;21055:18;;20918:161::o;21084:356::-;21286:2;21268:21;;;21305:18;;;21298:30;21364:34;21359:2;21344:18;;21337:62;21431:2;21416:18;;21258:182::o;21445:356::-;21647:2;21629:21;;;21666:18;;;21659:30;21725:34;21720:2;21705:18;;21698:62;21792:2;21777:18;;21619:182::o;21806:408::-;22008:2;21990:21;;;22047:2;22027:18;;;22020:30;22086:34;22081:2;22066:18;;22059:62;-1:-1:-1;;;22152:2:1;22137:18;;22130:42;22204:3;22189:19;;21980:234::o;22219:335::-;22421:2;22403:21;;;22460:2;22440:18;;;22433:30;-1:-1:-1;;;22494:2:1;22479:18;;22472:41;22545:2;22530:18;;22393:161::o;22559:405::-;22761:2;22743:21;;;22800:2;22780:18;;;22773:30;22839:34;22834:2;22819:18;;22812:62;-1:-1:-1;;;22905:2:1;22890:18;;22883:39;22954:3;22939:19;;22733:231::o;22969:397::-;23171:2;23153:21;;;23210:2;23190:18;;;23183:30;23249:34;23244:2;23229:18;;23222:62;-1:-1:-1;;;23315:2:1;23300:18;;23293:31;23356:3;23341:19;;23143:223::o;23371:413::-;23573:2;23555:21;;;23612:2;23592:18;;;23585:30;23651:34;23646:2;23631:18;;23624:62;-1:-1:-1;;;23717:2:1;23702:18;;23695:47;23774:3;23759:19;;23545:239::o;23789:408::-;23991:2;23973:21;;;24030:2;24010:18;;;24003:30;24069:34;24064:2;24049:18;;24042:62;-1:-1:-1;;;24135:2:1;24120:18;;24113:42;24187:3;24172:19;;23963:234::o;24202:350::-;24404:2;24386:21;;;24443:2;24423:18;;;24416:30;24482:28;24477:2;24462:18;;24455:56;24543:2;24528:18;;24376:176::o;24557:335::-;24759:2;24741:21;;;24798:2;24778:18;;;24771:30;-1:-1:-1;;;24832:2:1;24817:18;;24810:41;24883:2;24868:18;;24731:161::o;24897:177::-;25043:25;;;25031:2;25016:18;;24998:76::o;25079:519::-;;25340:6;25329:9;25322:25;25383:3;25378:2;25367:9;25363:18;25356:31;25404:58;25457:3;25446:9;25442:19;25434:6;25404:58;:::i;:::-;25493:2;25478:18;;25471:34;;;;-1:-1:-1;25536:2:1;25521:18;;25514:34;;;;25579:3;25564:19;;;25557:35;25396:66;25312:286;-1:-1:-1;;25312:286:1:o;25603:275::-;25674:2;25668:9;25739:2;25720:13;;-1:-1:-1;;25716:27:1;25704:40;;25774:18;25759:34;;25795:22;;;25756:62;25753:2;;;25821:18;;:::i;:::-;25857:2;25850:22;25648:230;;-1:-1:-1;25648:230:1:o;25883:192::-;;25982:18;25974:6;25971:30;25968:2;;;26004:18;;:::i;:::-;-1:-1:-1;26064:4:1;26045:17;;;26041:28;;25958:117::o;26080:129::-;;26148:17;;;26198:4;26182:21;;;26138:71::o;26214:128::-;;26285:1;26281:6;26278:1;26275:13;26272:2;;;26291:18;;:::i;:::-;-1:-1:-1;26327:9:1;;26262:80::o;26347:120::-;;26413:1;26403:2;;26418:18;;:::i;:::-;-1:-1:-1;26452:9:1;;26393:74::o;26472:125::-;;26540:1;26537;26534:8;26531:2;;;26545:18;;:::i;:::-;-1:-1:-1;26582:9:1;;26521:76::o;26602:258::-;26674:1;26684:113;26698:6;26695:1;26692:13;26684:113;;;26774:11;;;26768:18;26755:11;;;26748:39;26720:2;26713:10;26684:113;;;26815:6;26812:1;26809:13;26806:2;;;-1:-1:-1;;26850:1:1;26832:16;;26825:27;26655:205::o;26865:380::-;26950:1;26940:12;;26997:1;26987:12;;;27008:2;;27062:4;27054:6;27050:17;27040:27;;27008:2;27115;27107:6;27104:14;27084:18;27081:38;27078:2;;;27161:10;27156:3;27152:20;27149:1;27142:31;27196:4;27193:1;27186:15;27224:4;27221:1;27214:15;27078:2;;26920:325;;;:::o;27250:135::-;;-1:-1:-1;;27310:17:1;;27307:2;;;27330:18;;:::i;:::-;-1:-1:-1;27377:1:1;27366:13;;27297:88::o;27390:112::-;;27448:1;27438:2;;27453:18;;:::i;:::-;-1:-1:-1;27487:9:1;;27428:74::o;27507:127::-;27568:10;27563:3;27559:20;27556:1;27549:31;27599:4;27596:1;27589:15;27623:4;27620:1;27613:15;27639:127;27700:10;27695:3;27691:20;27688:1;27681:31;27731:4;27728:1;27721:15;27755:4;27752:1;27745:15;27771:127;27832:10;27827:3;27823:20;27820:1;27813:31;27863:4;27860:1;27853:15;27887:4;27884:1;27877:15;27903:120;27991:5;27984:13;27977:21;27970:5;27967:32;27957:2;;28013:1;28010;28003:12;27957:2;27947:76;:::o;28028:133::-;-1:-1:-1;;;;;;28104:32:1;;28094:43;;28084:2;;28151:1;28148;28141:12

Swarm Source

ipfs://d080b7f27b056eae7b9dd1abbcce4c2827f4121da0b87bc109610d22c148b1d7

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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