Contract 0x62adfC4BDAE2aF82Cc6c21d87A37BdAaae64fcC7

 

Contract Overview

Balance:
0 MATIC

MATIC Value:
$0.00

Token:
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x46c9627e0ce693ac885d3403bb7282f73b75a2c3f8a99bb6a7b238ff049d8ea3List NFT402242122023-03-11 14:29:4984 days 4 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.016231474164 157.194903635
0x914227beca44eb549c2be5f68d724e4f7d6175f1d5fd66b2968d294f480977e2Mint NFT402241922023-03-11 14:29:0784 days 4 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.06602379248 160.164455044
0x49f6782dd177366397ef7d9b37a8f262cb055dd700c460942a3408dda3f63333List NFT382414622023-01-18 19:08:19135 days 23 hrs ago0x70c4e7897053ac98a6922ef20d0e3d810936f388 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.002365608183 55.060240751
0xfe2217b267893a61eafd27582088a9e60549330fe29660633be42d9f0efb9bd6List NFT382414332023-01-18 19:07:17135 days 23 hrs ago0x70c4e7897053ac98a6922ef20d0e3d810936f388 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.002413788203 52.744257581
0xc17242937e1e05f92537dfbedbccce0622db458191b0f105dcb0c4a93140a37eList NFT382414192023-01-18 19:06:47135 days 23 hrs ago0x70c4e7897053ac98a6922ef20d0e3d810936f388 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.002548190079 55.681104797
0x234f37e08855d9c5453cee0387f849fafb27f49500a53c22d43f52825b7193b4List NFT382414072023-01-18 19:06:21135 days 23 hrs ago0x70c4e7897053ac98a6922ef20d0e3d810936f388 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.002553636094 55.801326286
0xfc65088d446351723b93c73359e95e8599934143e9937d26b0b6cced06e35a33List NFT355014542022-11-12 3:42:54203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.004298161929 100.041009444
0xdd03e141a11004fc42029b68b73dd741d2bf3dcfda32b370c474b9ee7591657dList NFT355014402022-11-12 3:42:26203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.013105538762 126.906804199
0xa25101fc8df6ce94aeed968e2df30b8d658a60179ad9f751b07d36d34926e3f5Mint NFT355014252022-11-12 3:41:24203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.047557437613 115.367669631
0xd099286b675738b8c92bcbf0a0e4524e8705d57382ba008d072b1913a1b6ff61Mint NFT355014212022-11-12 3:41:08203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.048084445724 116.646117349
0xb9cff0248b42e02d0da8c9832dfe01044d24bc87943bc0e9527a59c33d40ffb5List NFT355012952022-11-12 3:35:16203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.011969236468 115.903479926
0xbe7cd154c8ba3b3eeb813f56d32b394dbf7d565f0ab247f58f5f6655cb0185d8List NFT355012762022-11-12 3:34:38203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.010563570047 102.291782114
0x4fd61891cc01d7f9e0b5f23b84f77848f1bd6cab1acd84e3b8ff9a5c67b18426Mint NFT355011882022-11-12 3:31:38203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.044793768991 108.663397396
0x54a0356de4df148ae114c821535bfa0cf2d0c55aec3679105c638543144d7ed5Mint NFT355011362022-11-12 3:29:50203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.05896623767 143.043817505
0x3d6a78980be21728998019b0761db3921584d3ea451efa5d0fa3b0a499faeb78Mint NFT355010372022-11-12 3:26:24203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.049729607963 120.637050065
0x3641415802a2f3253652c3a2c899020a48983a22ff525c1e0f07ed24bad9c893List NFT355004802022-11-12 3:03:01203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.004823452625 46.707653078
0xdbab495c2cac27503e5afb855c2b530cf0b8745f55a581323446e067b03d1590List NFT355004662022-11-12 3:02:29203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.004729423937 45.797131161
0x3c09921ecaf5b067ae4a75d95ce0b676c02e88a9c1ed5609bcab65530255b13eList NFT355004482022-11-12 3:01:53203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.004635494287 44.887568264
0x36ef36d3c5b21186fb374d4d798acdfa7ca14218d354840731ca95e888d4166bList NFT355004342022-11-12 3:01:25203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.004984701704 48.269100157
0x0b51982216624b8ff37e588ffccac9c34309d38ee7ef853eb030e4e16f97fff9List NFT355004202022-11-12 3:00:57203 days 15 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.005611172401 54.335496632
0x209a09733795ba1ec04590370b04c12d2134e0bc761b368dd01a4cd983bd6050Mint NFT354991442022-11-12 2:12:47203 days 16 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.023872184631 57.910569789
0x6380c92764aef685c6ebe6672783ef28c03f063baefdbffcb6c6d00cfe0bf875Mint NFT354991282022-11-12 2:12:11203 days 16 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.023728752671 57.562623983
0x31ff4ab0929e34b1da7396d315a1310cc639a3ce10032596954b2e0de5bb6066Mint NFT354991002022-11-12 2:11:15203 days 16 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.023427477137 56.831771818
0x0177ed1ea8905620a971feabe86b5599f53c19834519f785d9716fe8eb510fdeMint NFT354990762022-11-12 2:10:27203 days 16 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.02023189578 49.0797399
0x8c01f847d1262a025ee10d429a31f1c0230e9ee53697b563896a4ee169af316bMint NFT354990572022-11-12 2:09:45203 days 16 hrs ago0xb3e653e286f0ecd2fa8c8f9c6548759efb2eba63 IN  0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70 MATIC0.021197035746 51.421034014
[ Download CSV Export 
Latest 6 internal transactions
Parent Txn Hash Block From To Value
0xeb80994209916e356ea9454d088e3c2daf645855eb0c8c27eb2c6ad63105dc25335750592022-09-26 3:55:10250 days 14 hrs ago 0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70xd4ff71731a2bb4076ed43440985bd790abe066ae0.025 MATIC
0xeb80994209916e356ea9454d088e3c2daf645855eb0c8c27eb2c6ad63105dc25335750592022-09-26 3:55:10250 days 14 hrs ago 0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70x7be963fae460aeb07b0c072a1d772cb55f744fcd0.975 MATIC
0xe4ff589a6c082a7b84d0d8a1d56d660f146a0cb36f4baee97aeb2a9ea434fed2334711682022-09-23 15:26:58253 days 3 hrs ago 0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70xd4ff71731a2bb4076ed43440985bd790abe066ae1.1000000000000001 MATIC
0x4268d6e7351ab854b6d7d18d5c5550a45f239df0d1b46e0a43317f425cbce364331951862022-09-16 22:39:19259 days 20 hrs ago 0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70xd4ff71731a2bb4076ed43440985bd790abe066ae0.03 MATIC
0x4268d6e7351ab854b6d7d18d5c5550a45f239df0d1b46e0a43317f425cbce364331951862022-09-16 22:39:19259 days 20 hrs ago 0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70xb3e653e286f0ecd2fa8c8f9c6548759efb2eba631.47 MATIC
0x2b5d152c1d8585d77d20aa0d619f870baaebac9aeb7d18b49f39589e553ca362331949382022-09-16 22:30:35259 days 20 hrs ago 0x62adfc4bdae2af82cc6c21d87a37bdaaae64fcc70xd4ff71731a2bb4076ed43440985bd790abe066ae1.5 MATIC
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x1eb2cf60a6c36455d348be5d56fe64756637031a

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 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
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.