Contract 0x8BFA5316C53bAe03F0e94d0ecA6De603b38a2314 2

 
 
Txn Hash
Method
Block
From
To
Value
0x190214ec0c6c390b7df7bd4aeb48781853a616551ce7ac71073f4b5267525296Set Approval For...156468882022-09-30 14:55:598 hrs 23 mins ago0xb49192e4835757398df1a177d8db9b5bb69bdec8 IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00056389 22.7421548
0xb5a908f29fe37d3507d05b57674bed55258df62ffb6681c8e41d29c074682028Set Approval For...156468182022-09-30 14:41:598 hrs 37 mins agoENS Name briskkid1.eth IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00097022 20.77258128
0xd3e0b3cc5df7912f175e5998a18826045ca0991e3233687f643dced0baaee9b6Set Approval For...156464022022-09-30 13:18:4710 hrs ago0xb49192e4835757398df1a177d8db9b5bb69bdec8 IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00081186 17.38218293
0xaf8083b3dd3c5b5b7d32b030536000a22b54d6790a646d283e4194a431cda312Safe Transfer Fr...156249802022-09-27 13:26:473 days 9 hrs ago0x5fd54826e536e0b092c21274ab2d473fd38301b1 IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00218919 23.9029134
0x32aef1e9951222c7f00af6e6f0f43fa561c8050caa088531c3a955d81a47ce20Set Approval For...155845762022-09-21 21:59:359 days 1 hr agoENS Name briskkid1.eth IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00035293 14.23432027
0x8fca91923e28edac3d9d798748577dd93ffe6474985dfa4b9ad88967f4477bbdSafe Transfer Fr...155660432022-09-19 7:21:2311 days 15 hrs agoENS Name mxmya.eth IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00036255 4.86898933
0xf848cf13a5ba8789e296df2dabc7e2eb4f55c4ee9ab076af0fd918177067dfb0Set Approval For...155586942022-09-18 6:37:3512 days 16 hrs ago0x973146bf8ff2a0466c6f84514dc0a3424b081bda IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00021884 4.68550921
0x905a39fbc85edadcd08bb87e2d330ac4e0026e710591bf2de67088aa8e1a60c4Safe Transfer Fr...155575992022-09-18 2:56:5912 days 20 hrs ago0x307bf72dce545ecd88f5a02ef2f60e6c05680893 IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.0003694 5.60141047
0xee0ad8788c14114b44e2ddd795bcb4892141d7a08d9fc64776681e8906454cd9Transfer From155514862022-09-17 6:21:3513 days 16 hrs ago0x3bcb6fa076b9e61f1c55b024a0408eaaa95df9ad IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00029129 4.61386213
0x1b556defa8852d7227edb8df78bd524d46932a67eed5beb2c9617b784b6b3251Safe Transfer Fr...155407442022-09-15 18:02:2315 days 5 hrs ago0x38a7d7203cb5b717e40accf243137145e6ba8213 IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00178689 25.25722969
0x450340b9dce189778fd8ed68af75a6385519af9074cd70b0443ffb1c91de069fSafe Transfer Fr...155144002022-09-11 10:47:0219 days 12 hrs ago0xb49192e4835757398df1a177d8db9b5bb69bdec8 IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.0005156 7.28791965
0xd1a138f182b2c23a15bb944c3c852184babd2bf2a7f7f583b6095249ff62ededSet Approval For...155053752022-09-09 22:54:3721 days 25 mins agoENS Name ariesne.eth IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00090373 19.34907815
0xdcef5701c5c27d20bcf2eab1d024dad34d7dd0ab2c88a5a6dd49376029113021Safe Transfer Fr...154701912022-09-04 6:52:3526 days 16 hrs ago0xd4b0a204175ff66d647f72d40cde11abf8efd4fe IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00028254 5.26672888
0x82734736a52c452cdadda093c8cc7f5a4028a6e22901f67bdc9d0349455f67fbSafe Transfer Fr...154700852022-09-04 6:29:4526 days 16 hrs ago0xd4b0a204175ff66d647f72d40cde11abf8efd4fe IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00037593 5.31370141
0x5d18e4d4aa07b0a902392495e1b476b8696ae604d2559594fab62f462a08cf4bSet Approval For...154621422022-09-02 23:55:1027 days 23 hrs agoENS Name briskkid1.eth IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00033876 7.25287439
0xa67062acc993d9e3ae9d512c4309e23f0ea9f919854b3584b82579bfab6af01cSet Approval For...154613792022-09-02 21:00:3928 days 2 hrs agoENS Name briskkid1.eth IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00028939 10.76663906
0xb7726ef254b17b4267552ce09978704fc0410c281a3b900871b54b30da296a62Set Approval For...154613792022-09-02 21:00:3928 days 2 hrs agoENS Name briskkid1.eth IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00026626 10.70243106
0x6c45e4b5550e726a82d63683fb36aee0d5d77969e794d6da43c6b0a1b7e15da0Set Approval For...154613772022-09-02 21:00:2428 days 2 hrs agoENS Name briskkid1.eth IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.0002511 10.127102
0x7a23442a60d3b5eae7497e54632acf5a3076d4b1fcacbead15ca3b2958dc5bf9Safe Transfer Fr...154562272022-09-02 1:18:3028 days 22 hrs ago0x5fd54826e536e0b092c21274ab2d473fd38301b1 IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00151377 21.39670535
0x2709130374e277354614246c5c88544c370c949de24c1cefbccbae9cc1a6b73dSet Approval For...154557082022-09-01 23:23:3028 days 23 hrs ago0x525a278dbfa4d9da14700b7fd435af21b18b713b IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00043244 17.3820509
0xe5daa7e385746b2de632a74d319bc5f0bb1d0c5efefad300b636d6d0735c6301Set Approval For...154401042022-08-30 11:26:2031 days 11 hrs ago0x5fd54826e536e0b092c21274ab2d473fd38301b1 IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00069399 14.85840617
0x93b0075e057aae447f58738bf2f4239a36dee250eb46d2e167297c018f7ef548Set Approval For...154354672022-08-29 17:38:4632 days 5 hrs ago0x38a7d7203cb5b717e40accf243137145e6ba8213 IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00107892 23.09979005
0x7348f7258e5c9b56257303a3043b1dd71a00f4bf7bf15b205bf877b7e86e4e48Set Approval For...154248832022-08-28 1:06:2933 days 22 hrs ago0x4ac72cf2c23a1e00ae49749671690b3ea6c7d46f IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00018222 3.90155462
0x4a0030a378e5c1f046db6f7680c5bf491f7a19c18d0f1c7b3fc3c4df069a3d3aSet Approval For...154233452022-08-27 19:09:0934 days 4 hrs ago0x1058fced97517dc3e2778d701e67dfa0c6c2af09 IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00020588 8.30367729
0x971264ea2b80d13432e1d554eb1798f5ff571e7c0db60a4c54c0155858f8141aWithdraw154138792022-08-26 6:46:3535 days 16 hrs ago0x5fd54826e536e0b092c21274ab2d473fd38301b1 IN  0x8bfa5316c53bae03f0e94d0eca6de603b38a23140 Ether0.00023159 7.60436256
[ Download CSV Export 
Latest 5 internal transactions
Parent Txn Hash Block From To Value
0x971264ea2b80d13432e1d554eb1798f5ff571e7c0db60a4c54c0155858f8141a154138792022-08-26 6:46:3535 days 16 hrs ago 0x8bfa5316c53bae03f0e94d0eca6de603b38a23140x5fd54826e536e0b092c21274ab2d473fd38301b11.26 Ether
0xdad7a8385f89a5af501acf3dbd011122488c13b0b6af054d0e5894c182565d4e153140352022-08-10 11:19:5551 days 11 hrs ago 0x8bfa5316c53bae03f0e94d0eca6de603b38a23140x5fd54826e536e0b092c21274ab2d473fd38301b12.84 Ether
0x9a7cfc3c8332aa30cf5a5db9218c96446469de32dda8287c10408edc9995f7ce149789662022-06-17 11:34:33105 days 11 hrs ago 0x8bfa5316c53bae03f0e94d0eca6de603b38a23140x5fd54826e536e0b092c21274ab2d473fd38301b10.18 Ether
0xb182c79f61409ba0115a0b1dd1d86de9cd7b20c5e0bbad17a424ce11df5b56c0148488282022-05-26 15:48:53127 days 7 hrs ago 0x8bfa5316c53bae03f0e94d0eca6de603b38a23140x5fd54826e536e0b092c21274ab2d473fd38301b16.18 Ether
0xdffdda2c15396c43084ec04cbd77f5090f083f82ed61a5a5d32564d75a744d22147699362022-05-13 22:01:13140 days 1 hr ago 0x8bfa5316c53bae03f0e94d0eca6de603b38a23140x5fd54826e536e0b092c21274ab2d473fd38301b18.36 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
THE_SATOSHI_GIRLS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-10
*/

pragma solidity 0.8.7;

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

    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }
    function toHexString(uint256 value, uint256 length)
        internal
        pure
        returns (string memory)
    {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}
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 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,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return interfaceId == type(IERC165).interfaceId;
    }
}
interface IERC721 is IERC165 {
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 indexed tokenId
    );
    event Approval(
        address indexed owner,
        address indexed approved,
        uint256 indexed tokenId
    );
    event ApprovalForAll(
        address indexed owner,
        address indexed operator,
        bool approved
    );
    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId)
        external
        view
        returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator)
        external
        view
        returns (bool);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}
interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index)
        external
        view
        returns (uint256);
    function tokenByIndex(uint256 index) external view returns (uint256);
}
interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}
interface IERC721Receiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}
error ApprovalCallerNotOwnerNorApproved();
error ApprovalQueryForNonexistentToken();
error ApproveToCaller();
error ApprovalToCurrentOwner();
error BalanceQueryForZeroAddress();
error MintedQueryForZeroAddress();
error MintToZeroAddress();
error MintZeroQuantity();
error OwnerIndexOutOfBounds();
error OwnerQueryForNonexistentToken();
error TokenIndexOutOfBounds();
error TransferCallerNotOwnerNorApproved();
error TransferFromIncorrectOwner();
error TransferToNonERC721ReceiverImplementer();
error TransferToZeroAddress();
error UnableDetermineTokenOwner();
error URIQueryForNonexistentToken();
contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 internal _currentIndex;
    string private _name;
    string private _symbol;
    mapping(uint256 => TokenOwnership) internal _ownerships;
    mapping(address => AddressData) private _addressData;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function totalSupply() public view override returns (uint256) {
        return _currentIndex;
    }
    function tokenByIndex(uint256 index)
        public
        view
        override
        returns (uint256)
    {
        if (index >= totalSupply()) revert TokenIndexOutOfBounds();
        return index;
    }
    function tokenOfOwnerByIndex(address owner, uint256 index)
        public
        view
        override
        returns (uint256 a)
    {
        if (index >= balanceOf(owner)) revert OwnerIndexOutOfBounds();
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx;
        address currOwnershipAddr;
        unchecked {
            for (uint256 i; i < numMintedSoFar; i++) {
                TokenOwnership memory ownership = _ownerships[i];
                if (ownership.addr != address(0)) {
                    currOwnershipAddr = ownership.addr;
                }
                if (currOwnershipAddr == owner) {
                    if (tokenIdsIdx == index) {
                        return i;
                    }
                    tokenIdsIdx++;
                }
            }
        }
        assert(false);
    }
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override(ERC165, IERC165)
        returns (bool)
    {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    function balanceOf(address owner) public view override returns (uint256) {
        if (owner == address(0)) revert BalanceQueryForZeroAddress();
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        if (owner == address(0)) revert MintedQueryForZeroAddress();
        return uint256(_addressData[owner].numberMinted);
    }
    function ownershipOf(uint256 tokenId)
        internal
        view
        returns (TokenOwnership memory)
    {
        if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();

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

        revert UnableDetermineTokenOwner();
    }
    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function tokenURI(uint256 tokenId)
        public
        view
        override
        returns (string memory)
    {
        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();

        string memory baseURI = _baseURI();
        return
            bytes(baseURI).length != 0
                ? string(abi.encodePacked(baseURI, tokenId.toString(), ""))
                : "";
    }
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }
    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        if (to == owner) revert ApprovalToCurrentOwner();

        if (_msgSender() != owner && !isApprovedForAll(owner, _msgSender()))
            revert ApprovalCallerNotOwnerNorApproved();

        _approve(to, tokenId, owner);
    }
    function getApproved(uint256 tokenId)
        public
        view
        override
        returns (address)
    {
        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();

        return _tokenApprovals[tokenId];
    }
    function setApprovalForAll(address operator, bool approved)
        public
        override
    {
        if (operator == _msgSender()) revert ApproveToCaller();

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }
    function isApprovedForAll(address owner, address operator)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _operatorApprovals[owner][operator];
    }
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        _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 override {
        _transfer(from, to, tokenId);
        if (!_checkOnERC721Received(from, to, tokenId, _data))
            revert TransferToNonERC721ReceiverImplementer();
    }
    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < _currentIndex;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, "");
    }
    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        _mint(to, quantity, _data, true);
    }
    function _mint(
        address to,
        uint256 quantity,
        bytes memory _data,
        bool safe
    ) internal {
        uint256 startTokenId = _currentIndex;
        if (to == address(0)) revert MintToZeroAddress();
        unchecked {
            _addressData[to].balance += uint128(quantity);
            _addressData[to].numberMinted += uint128(quantity);
            _ownerships[startTokenId].addr = to;
            _ownerships[startTokenId].startTimestamp = uint64(block.timestamp);
            uint256 updatedIndex = startTokenId;
            for (uint256 i; i < quantity; i++) {
                emit Transfer(address(0), to, updatedIndex);
                if (
                    safe &&
                    !_checkOnERC721Received(address(0), to, updatedIndex, _data)
                ) {
                    revert TransferToNonERC721ReceiverImplementer();
                }
                updatedIndex++;
            }
            _currentIndex = updatedIndex;
        }

        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);
        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));
        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();
        if (prevOwnership.addr != from) revert TransferFromIncorrectOwner();
        if (to == address(0)) revert TransferToZeroAddress();
        _approve(address(0), tokenId, prevOwnership.addr);
        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;
            _ownerships[tokenId].addr = to;
            _ownerships[tokenId].startTimestamp = uint64(block.timestamp);
            uint256 nextTokenId = tokenId + 1;
            if (_ownerships[nextTokenId].addr == address(0)) {
                if (_exists(nextTokenId)) {
                    _ownerships[nextTokenId].addr = prevOwnership.addr;
                    _ownerships[nextTokenId].startTimestamp = prevOwnership
                        .startTimestamp;
                }
            }
        }
        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }
    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try
                IERC721Receiver(to).onERC721Received(
                    _msgSender(),
                    from,
                    tokenId,
                    _data
                )
            returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0)
                    revert TransferToNonERC721ReceiverImplementer();
                else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }
    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}
library MerkleProof {
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }
    function processProof(bytes32[] memory proof, bytes32 leaf)
        internal
        pure
        returns (bytes32)
    {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b)
        private
        pure
        returns (bytes32 value)
    {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        _transferOwnership(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
contract THE_SATOSHI_GIRLS is ERC721A, Ownable {
    using Strings for uint256;

    constructor(string memory baseuri, bytes32 finalPreviousCollectionRootHash, bytes32 finalPreSaleRootHash)
        ERC721A("THE SATOSHI GIRLS", "TSG")
    {
        _baseURI1 = baseuri;
        PreSaleRootHash = finalPreSaleRootHash;
        PreviousCollectionRootHash = finalPreviousCollectionRootHash;
    }

    uint256 public  maxSupply                   = 5000;
    uint256 public  reserved                    = 100;
    
    uint256 public  publicSalePrice             = 0.06 ether;
    uint256 public  preSalePrice                = 0.04 ether;

    uint256 public  preSaleMaxQuantity          = 1500;

    uint256 public  maxPerWallet                = 5;

    bool public     isPreviousCollectionPaused  = true;
    bool public     isPreSalePaused             = true;
    bool public     isPublicSalePaused          = true;
    
    string public   _baseURI1;
    bytes32 private PreSaleRootHash;
    bytes32 private PreviousCollectionRootHash;

    struct userAddress {
        address userAddress;
        uint256 counter;
    }

    mapping(address => userAddress) public _PublicSaleAddresses;
    mapping(address => bool) public _PublicSaleAddressExist;

    mapping(address => userAddress) public _PreSaleAddresses;
    mapping(address => bool) public _PreSaleAddressExist;

    mapping(address => userAddress) public _PreviousCollectionAddresses;
    mapping(address => bool) public _PreviousCollectionAddressExist;

    // Flip Previous Collection, Whitelist And Public Mint Pause Status 
    function flipPreviousCollectionPauseStatus() public onlyOwner {
        isPreviousCollectionPaused = !isPreviousCollectionPaused;
    }
    function flipPreSalePauseStatus() public onlyOwner {
        isPreSalePaused = !isPreSalePaused;
    }
    function flipPublicSalePauseStatus() public onlyOwner {
        isPublicSalePaused = !isPublicSalePaused;
    }

    // setting merkle root hashes
    function setPreSaleRootHash(bytes32 _rootHash) public onlyOwner {
        PreSaleRootHash = _rootHash;
    }
    function setPreviousCollectionRootHash(bytes32 _rootHash) public onlyOwner {
        PreviousCollectionRootHash = _rootHash;
    }

    // Setter And Getter base URI Functions
    function setBaseURI(string memory _newBaseURI) public onlyOwner {
        _baseURI1 = _newBaseURI;
    }
    function _baseURI() internal view virtual override returns (string memory) {
        return _baseURI1;
    }

    // Get Public And Whitelist Price
    function getPublicPrice(uint256 _quantity) public view returns (uint256) {
        return _quantity * publicSalePrice;
    }
    function getPreSalePrice(uint256 _quantity) public view returns (uint256) {
        return _quantity * preSalePrice;
    }

    // Reserved, Previous Collection, Pre Sale, Free And Normal Mint Functions
    function mintReservedTokens(uint256 quantity) public onlyOwner {
        require(quantity <= reserved, "All reserve tokens have bene minted");
        reserved -= quantity;
        _safeMint(msg.sender, quantity);
    }
    function PreviousCollectionWhiteListMint(bytes32[] calldata _merkleProof, uint256 chosenAmount, uint256 maxPreviousCollectionMintLimit) public payable {
        if (_PreviousCollectionAddressExist[msg.sender] == false) {
            _PreviousCollectionAddresses[msg.sender] = userAddress({
                userAddress: msg.sender,
                counter: 0
            });
            _PreviousCollectionAddressExist[msg.sender] = true;
        }
        require(isPreviousCollectionPaused == false, "Previous Collection Mint Is Not ACtive Right Now");
        require(chosenAmount > 0, "Number Of Tokens Can Not Be Less Than Or Equal To 0");
        require(_PreviousCollectionAddresses[msg.sender].counter + chosenAmount <= maxPreviousCollectionMintLimit, "Max Previous Collection Mint Limit reached");
        require(totalSupply() + chosenAmount <= maxSupply - reserved, "Presale Limit Reached");
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        require(MerkleProof.verify(_merkleProof, PreSaleRootHash, leaf), "Invalid Proof");

        _safeMint(msg.sender, chosenAmount);
        _PreviousCollectionAddresses[msg.sender].counter += chosenAmount;
    }
    function whiteListMint(bytes32[] calldata _merkleProof, uint256 chosenAmount) public payable {
        if (_PreSaleAddressExist[msg.sender] == false) {
            _PreSaleAddresses[msg.sender] = userAddress({
                userAddress: msg.sender,
                counter: 0
            });
            _PreSaleAddressExist[msg.sender] = true;
        }
        require(isPreSalePaused == false, "Whitelist Mint Is Not Active Right Now");
        require(chosenAmount > 0, "Number Of Tokens Can Not Be Less Than Or Equal To 0");
        require(_PreSaleAddresses[msg.sender].counter + chosenAmount <= preSaleMaxQuantity, "Quantity Must Be Lesser Than Max Presale Supply");
        require(_PreSaleAddresses[msg.sender].counter + chosenAmount <= maxPerWallet, "Max limit per wallet reached");
        require(totalSupply() + chosenAmount <= maxSupply - reserved, "Presale Limit Reached");
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        require(MerkleProof.verify(_merkleProof, PreSaleRootHash, leaf), "Invalid Proof");
        require(preSalePrice * chosenAmount == msg.value, "Sent Ether Value Is Incorrect");

        _safeMint(msg.sender, chosenAmount);
        _PreSaleAddresses[msg.sender].counter += chosenAmount;
    }
    function mint(uint256 chosenAmount) public payable {
        if (_PublicSaleAddressExist[msg.sender] == false) {
            _PublicSaleAddresses[msg.sender] = userAddress({
                userAddress: msg.sender,
                counter: 0
            });
            _PublicSaleAddressExist[msg.sender] = true;
        }
        require( isPublicSalePaused == false, "Public Mint Is Not ACtive Right Now" );
        require( chosenAmount > 0,"Number Of Tokens Can Not Be Less Than Or Equal To 0" );
        require(_PreSaleAddresses[msg.sender].counter + chosenAmount <= maxPerWallet, "Max limit per wallet reached");
        require( totalSupply() + chosenAmount <= maxSupply - reserved, "All Tokens Have Been Minted" );
        require( publicSalePrice * chosenAmount == msg.value, "Sent Ether Value Is Incorrect" );
        _safeMint(msg.sender, chosenAmount);
        _PublicSaleAddresses[msg.sender].counter += chosenAmount;
    }
    function freeMint(uint quantity) public payable onlyOwner {
        require(totalSupply() + quantity <= (maxSupply - reserved), "QUANTITY MUST BE LESS THEN MAX SUPPLY");
        for (uint i = 0; i < quantity; i++) {
            _safeMint(msg.sender, quantity);
        }
    }

    // Withdraw function
    function withdraw() public onlyOwner {
        uint totalBalance   = address(this).balance;
        payable(msg.sender).transfer(totalBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"baseuri","type":"string"},{"internalType":"bytes32","name":"finalPreviousCollectionRootHash","type":"bytes32"},{"internalType":"bytes32","name":"finalPreSaleRootHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"OwnerIndexOutOfBounds","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TokenIndexOutOfBounds","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"UnableDetermineTokenOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"chosenAmount","type":"uint256"},{"internalType":"uint256","name":"maxPreviousCollectionMintLimit","type":"uint256"}],"name":"PreviousCollectionWhiteListMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PreSaleAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PreSaleAddresses","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PreviousCollectionAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PreviousCollectionAddresses","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PublicSaleAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PublicSaleAddresses","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseURI1","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipPreSalePauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPreviousCollectionPauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPublicSalePauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"freeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"getPreSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"getPublicPrice","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":[],"name":"isPreSalePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPreviousCollectionPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPublicSalePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintReservedTokens","outputs":[],"stateMutability":"nonpayable","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":"preSaleMaxQuantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserved","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":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_rootHash","type":"bytes32"}],"name":"setPreSaleRootHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_rootHash","type":"bytes32"}],"name":"setPreviousCollectionRootHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"a","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"whiteListMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052611388600855606460095566d529ae9e860000600a55668e1bc9bf040000600b556105dc600c556005600d556001600e60006101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff0219169083151502179055503480156200008e57600080fd5b5060405162005872380380620058728339818101604052810190620000b49190620003b7565b6040518060400160405280601181526020017f544845205341544f534849204749524c530000000000000000000000000000008152506040518060400160405280600381526020017f545347000000000000000000000000000000000000000000000000000000000081525081600190805190602001906200013892919062000272565b5080600290805190602001906200015192919062000272565b5050506200017462000168620001a460201b60201c565b620001ac60201b60201c565b82600f90805190602001906200018c92919062000272565b508060108190555081601181905550505050620005da565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200028090620004d1565b90600052602060002090601f016020900481019282620002a45760008555620002f0565b82601f10620002bf57805160ff1916838001178555620002f0565b82800160010185558215620002f0579182015b82811115620002ef578251825591602001919060010190620002d2565b5b509050620002ff919062000303565b5090565b5b808211156200031e57600081600090555060010162000304565b5090565b60006200033962000333846200045b565b62000432565b905082815260208101848484011115620003585762000357620005a0565b5b620003658482856200049b565b509392505050565b6000815190506200037e81620005c0565b92915050565b600082601f8301126200039c576200039b6200059b565b5b8151620003ae84826020860162000322565b91505092915050565b600080600060608486031215620003d357620003d2620005aa565b5b600084015167ffffffffffffffff811115620003f457620003f3620005a5565b5b620004028682870162000384565b935050602062000415868287016200036d565b925050604062000428868287016200036d565b9150509250925092565b60006200043e62000451565b90506200044c828262000507565b919050565b6000604051905090565b600067ffffffffffffffff8211156200047957620004786200056c565b5b6200048482620005af565b9050602081019050919050565b6000819050919050565b60005b83811015620004bb5780820151818401526020810190506200049e565b83811115620004cb576000848401525b50505050565b60006002820490506001821680620004ea57607f821691505b602082108114156200050157620005006200053d565b5b50919050565b6200051282620005af565b810181811067ffffffffffffffff821117156200053457620005336200056c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620005cb8162000491565b8114620005d757600080fd5b50565b61528880620005ea6000396000f3fe6080604052600436106102ae5760003560e01c806367f8ccb811610175578063b88d4fde116100dc578063d6cffbd711610095578063e985e9c51161006f578063e985e9c514610aa3578063f2fde38b14610ae0578063f76752ba14610b09578063fe60d12c14610b32576102ae565b8063d6cffbd7146109fc578063dbe67ab314610a3a578063e757c17d14610a78576102ae565b8063b88d4fde1461090a578063bf382a2f14610933578063c30bf3181461095c578063c87b56dd14610978578063ccc24ca1146109b5578063d5abeb01146109d1576102ae565b806395d89b411161012e57806395d89b411461081b5780639b6860c8146108465780639e21dabb14610871578063a0712d68146108ae578063a22cb465146108ca578063acda3e01146108f3576102ae565b806367f8ccb81461074057806370a0823114610757578063715018a6146107945780637c928fe9146107ab5780637d5cb4e5146107c75780638da5cb5b146107f0576102ae565b80632f745c59116102195780634e823f02116101d25780634e823f02146105f85780634f6ccce71461063557806355f804b31461067257806362ba16f81461069b5780636352211e146106d8578063647e901114610715576102ae565b80632f745c59146104e857806330a3f446146105255780633ccfd60b1461056257806342842e0e14610579578063453c2310146105a2578063492b5ff7146105cd576102ae565b806311e0f0631161026b57806311e0f063146103ea5780631802d8471461041557806318160ddd146104525780632031b4a81461047d57806323b872dd146104945780632e280e32146104bd576102ae565b806301ffc9a7146102b357806306fdde03146102f05780630747be6a1461031b578063081812fc14610359578063095ea7b31461039657806309f29f92146103bf575b600080fd5b3480156102bf57600080fd5b506102da60048036038101906102d59190614230565b610b5d565b6040516102e791906146f1565b60405180910390f35b3480156102fc57600080fd5b50610305610ca7565b604051610312919061470c565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613f6c565b610d39565b6040516103509291906146c8565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b91906142d3565b610d7d565b60405161038d9190614661565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b891906140ef565b610df9565b005b3480156103cb57600080fd5b506103d4610f04565b6040516103e1919061490e565b60405180910390f35b3480156103f657600080fd5b506103ff610f0a565b60405161040c919061470c565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190613f6c565b610f98565b60405161044991906146f1565b60405180910390f35b34801561045e57600080fd5b50610467610fb8565b604051610474919061490e565b60405180910390f35b34801561048957600080fd5b50610492610fc1565b005b3480156104a057600080fd5b506104bb60048036038101906104b69190613fd9565b611069565b005b3480156104c957600080fd5b506104d2611079565b6040516104df91906146f1565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a91906140ef565b61108c565b60405161051c919061490e565b60405180910390f35b34801561053157600080fd5b5061054c600480360381019061054791906142d3565b61124d565b604051610559919061490e565b60405180910390f35b34801561056e57600080fd5b50610577611264565b005b34801561058557600080fd5b506105a0600480360381019061059b9190613fd9565b61132f565b005b3480156105ae57600080fd5b506105b761134f565b6040516105c4919061490e565b60405180910390f35b3480156105d957600080fd5b506105e2611355565b6040516105ef91906146f1565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190613f6c565b611368565b60405161062c91906146f1565b60405180910390f35b34801561064157600080fd5b5061065c600480360381019061065791906142d3565b611388565b604051610669919061490e565b60405180910390f35b34801561067e57600080fd5b506106996004803603810190610694919061428a565b6113d2565b005b3480156106a757600080fd5b506106c260048036038101906106bd9190613f6c565b611468565b6040516106cf91906146f1565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa91906142d3565b611488565b60405161070c9190614661565b60405180910390f35b34801561072157600080fd5b5061072a61149e565b60405161073791906146f1565b60405180910390f35b34801561074c57600080fd5b506107556114b1565b005b34801561076357600080fd5b5061077e60048036038101906107799190613f6c565b611559565b60405161078b919061490e565b60405180910390f35b3480156107a057600080fd5b506107a9611639565b005b6107c560048036038101906107c091906142d3565b6116c1565b005b3480156107d357600080fd5b506107ee60048036038101906107e991906142d3565b6117cd565b005b3480156107fc57600080fd5b506108056118b4565b6040516108129190614661565b60405180910390f35b34801561082757600080fd5b506108306118de565b60405161083d919061470c565b60405180910390f35b34801561085257600080fd5b5061085b611970565b604051610868919061490e565b60405180910390f35b34801561087d57600080fd5b50610898600480360381019061089391906142d3565b611976565b6040516108a5919061490e565b60405180910390f35b6108c860048036038101906108c391906142d3565b61198d565b005b3480156108d657600080fd5b506108f160048036038101906108ec91906140af565b611d42565b005b3480156108ff57600080fd5b50610908611eba565b005b34801561091657600080fd5b50610931600480360381019061092c919061402c565b611f62565b005b34801561093f57600080fd5b5061095a60048036038101906109559190614203565b611fb5565b005b6109766004803603810190610971919061412f565b61203b565b005b34801561098457600080fd5b5061099f600480360381019061099a91906142d3565b61253d565b6040516109ac919061470c565b60405180910390f35b6109cf60048036038101906109ca919061418f565b6125dc565b005b3480156109dd57600080fd5b506109e66129fc565b6040516109f3919061490e565b60405180910390f35b348015610a0857600080fd5b50610a236004803603810190610a1e9190613f6c565b612a02565b604051610a319291906146c8565b60405180910390f35b348015610a4657600080fd5b50610a616004803603810190610a5c9190613f6c565b612a46565b604051610a6f9291906146c8565b60405180910390f35b348015610a8457600080fd5b50610a8d612a8a565b604051610a9a919061490e565b60405180910390f35b348015610aaf57600080fd5b50610aca6004803603810190610ac59190613f99565b612a90565b604051610ad791906146f1565b60405180910390f35b348015610aec57600080fd5b50610b076004803603810190610b029190613f6c565b612b24565b005b348015610b1557600080fd5b50610b306004803603810190610b2b9190614203565b612c1c565b005b348015610b3e57600080fd5b50610b47612ca2565b604051610b54919061490e565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c2857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610c9057507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ca05750610c9f82612ca8565b5b9050919050565b606060018054610cb690614bc8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce290614bc8565b8015610d2f5780601f10610d0457610100808354040283529160200191610d2f565b820191906000526020600020905b815481529060010190602001808311610d1257829003601f168201915b5050505050905090565b60126020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b6000610d8882612d12565b610dbe576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e0482611488565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e6c576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e8b612d1f565b73ffffffffffffffffffffffffffffffffffffffff1614158015610ebd5750610ebb81610eb6612d1f565b612a90565b155b15610ef4576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eff838383612d27565b505050565b600c5481565b600f8054610f1790614bc8565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4390614bc8565b8015610f905780601f10610f6557610100808354040283529160200191610f90565b820191906000526020600020905b815481529060010190602001808311610f7357829003601f168201915b505050505081565b60136020528060005260406000206000915054906101000a900460ff1681565b60008054905090565b610fc9612d1f565b73ffffffffffffffffffffffffffffffffffffffff16610fe76118b4565b73ffffffffffffffffffffffffffffffffffffffff161461103d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611034906147ee565b60405180910390fd5b600e60009054906101000a900460ff1615600e60006101000a81548160ff021916908315150217905550565b611074838383612dd9565b505050565b600e60019054906101000a900460ff1681565b600061109783611559565b82106110cf576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006110d9610fb8565b905060008060005b83811015611233576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146111d357806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611225578684141561121c578195505050505050611247565b83806001019450505b5080806001019150506110e1565b50600061124357611242614cc9565b5b5050505b92915050565b6000600a548261125d9190614a7a565b9050919050565b61126c612d1f565b73ffffffffffffffffffffffffffffffffffffffff1661128a6118b4565b73ffffffffffffffffffffffffffffffffffffffff16146112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d7906147ee565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561132b573d6000803e3d6000fd5b5050565b61134a83838360405180602001604052806000815250611f62565b505050565b600d5481565b600e60029054906101000a900460ff1681565b60176020528060005260406000206000915054906101000a900460ff1681565b6000611392610fb8565b82106113ca576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b6113da612d1f565b73ffffffffffffffffffffffffffffffffffffffff166113f86118b4565b73ffffffffffffffffffffffffffffffffffffffff161461144e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611445906147ee565b60405180910390fd5b80600f9080519060200190611464929190613cdb565b5050565b60156020528060005260406000206000915054906101000a900460ff1681565b6000611493826132f1565b600001519050919050565b600e60009054906101000a900460ff1681565b6114b9612d1f565b73ffffffffffffffffffffffffffffffffffffffff166114d76118b4565b73ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611524906147ee565b60405180910390fd5b600e60019054906101000a900460ff1615600e60016101000a81548160ff021916908315150217905550565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115c1576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611641612d1f565b73ffffffffffffffffffffffffffffffffffffffff1661165f6118b4565b73ffffffffffffffffffffffffffffffffffffffff16146116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac906147ee565b60405180910390fd5b6116bf6000613479565b565b6116c9612d1f565b73ffffffffffffffffffffffffffffffffffffffff166116e76118b4565b73ffffffffffffffffffffffffffffffffffffffff161461173d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611734906147ee565b60405180910390fd5b60095460085461174d9190614ad4565b81611756610fb8565b61176091906149f3565b11156117a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117989061484e565b60405180910390fd5b60005b818110156117c9576117b6338361353f565b80806117c190614c2b565b9150506117a4565b5050565b6117d5612d1f565b73ffffffffffffffffffffffffffffffffffffffff166117f36118b4565b73ffffffffffffffffffffffffffffffffffffffff1614611849576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611840906147ee565b60405180910390fd5b60095481111561188e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118859061486e565b60405180910390fd5b80600960008282546118a09190614ad4565b925050819055506118b1338261353f565b50565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546118ed90614bc8565b80601f016020809104026020016040519081016040528092919081815260200182805461191990614bc8565b80156119665780601f1061193b57610100808354040283529160200191611966565b820191906000526020600020905b81548152906001019060200180831161194957829003601f168201915b5050505050905090565b600a5481565b6000600b54826119869190614a7a565b9050919050565b60001515601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611afe5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515600e60029054906101000a900460ff16151514611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b9061476e565b60405180910390fd5b60008111611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8e906147ae565b60405180910390fd5b600d5481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154611be891906149f3565b1115611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c20906148ce565b60405180910390fd5b600954600854611c399190614ad4565b81611c42610fb8565b611c4c91906149f3565b1115611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c84906147ce565b60405180910390fd5b3481600a54611c9c9190614a7a565b14611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd3906148ae565b60405180910390fd5b611ce6338261353f565b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254611d3891906149f3565b9250508190555050565b611d4a612d1f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611daf576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060066000611dbc612d1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611e69612d1f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611eae91906146f1565b60405180910390a35050565b611ec2612d1f565b73ffffffffffffffffffffffffffffffffffffffff16611ee06118b4565b73ffffffffffffffffffffffffffffffffffffffff1614611f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2d906147ee565b60405180910390fd5b600e60029054906101000a900460ff1615600e60026101000a81548160ff021916908315150217905550565b611f6d848484612dd9565b611f798484848461355d565b611faf576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b611fbd612d1f565b73ffffffffffffffffffffffffffffffffffffffff16611fdb6118b4565b73ffffffffffffffffffffffffffffffffffffffff1614612031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612028906147ee565b60405180910390fd5b8060108190555050565b60001515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156121ac5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515600e60019054906101000a900460ff16151514612202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f99061478e565b60405180910390fd5b60008111612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c906147ae565b60405180910390fd5b600c5481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461229691906149f3565b11156122d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ce906148ee565b60405180910390fd5b600d5481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461232891906149f3565b1115612369576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612360906148ce565b60405180910390fd5b6009546008546123799190614ad4565b81612382610fb8565b61238c91906149f3565b11156123cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c49061482e565b60405180910390fd5b6000336040516020016123e09190614617565b604051602081830303815290604052805190602001209050612446848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050601054836136eb565b612485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247c9061488e565b60405180910390fd5b3482600b546124949190614a7a565b146124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb906148ae565b60405180910390fd5b6124de338361353f565b81601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825461253091906149f3565b9250508190555050505050565b606061254882612d12565b61257e576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612588613702565b90506000815114156125a957604051806020016040528060008152506125d4565b806125b384613794565b6040516020016125c4929190614632565b6040516020818303038152906040525b915050919050565b60001515601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561274d5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515600e60009054906101000a900460ff161515146127a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279a9061480e565b60405180910390fd5b600082116127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd906147ae565b60405180910390fd5b8082601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461283591906149f3565b1115612876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286d9061472e565b60405180910390fd5b6009546008546128869190614ad4565b8261288f610fb8565b61289991906149f3565b11156128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d19061482e565b60405180910390fd5b6000336040516020016128ed9190614617565b604051602081830303815290604052805190602001209050612953858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050601054836136eb565b612992576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129899061488e565b60405180910390fd5b61299c338461353f565b82601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546129ee91906149f3565b925050819055505050505050565b60085481565b60166020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60146020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b600b5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612b2c612d1f565b73ffffffffffffffffffffffffffffffffffffffff16612b4a6118b4565b73ffffffffffffffffffffffffffffffffffffffff1614612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b97906147ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c079061474e565b60405180910390fd5b612c1981613479565b50565b612c24612d1f565b73ffffffffffffffffffffffffffffffffffffffff16612c426118b4565b73ffffffffffffffffffffffffffffffffffffffff1614612c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8f906147ee565b60405180910390fd5b8060118190555050565b60095481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000612de4826132f1565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612e0b612d1f565b73ffffffffffffffffffffffffffffffffffffffff161480612e675750612e30612d1f565b73ffffffffffffffffffffffffffffffffffffffff16612e4f84610d7d565b73ffffffffffffffffffffffffffffffffffffffff16145b80612e835750612e828260000151612e7d612d1f565b612a90565b5b905080612ebc576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612f25576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612f8c576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f9c6000848460000151612d27565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613281576131e081612d12565b156132805782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46132ea85858560016138f5565b5050505050565b6132f9613d61565b61330282612d12565b613338576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290505b60008110613441576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614613432578092505050613474565b5080806001900391505061333e565b506040517fe7c0edfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6135598282604051806020016040528060008152506138fb565b5050565b600061357e8473ffffffffffffffffffffffffffffffffffffffff1661390d565b156136de578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026135a7612d1f565b8786866040518563ffffffff1660e01b81526004016135c9949392919061467c565b602060405180830381600087803b1580156135e357600080fd5b505af192505050801561361457506040513d601f19601f82011682018060405250810190613611919061425d565b60015b61368e573d8060008114613644576040519150601f19603f3d011682016040523d82523d6000602084013e613649565b606091505b50600081511415613686576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506136e3565b600190505b949350505050565b6000826136f88584613930565b1490509392505050565b6060600f805461371190614bc8565b80601f016020809104026020016040519081016040528092919081815260200182805461373d90614bc8565b801561378a5780601f1061375f5761010080835404028352916020019161378a565b820191906000526020600020905b81548152906001019060200180831161376d57829003601f168201915b5050505050905090565b606060008214156137dc576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506138f0565b600082905060005b6000821461380e5780806137f790614c2b565b915050600a826138079190614a49565b91506137e4565b60008167ffffffffffffffff81111561382a57613829614db4565b5b6040519080825280601f01601f19166020018201604052801561385c5781602001600182028036833780820191505090505b5090505b600085146138e9576001826138759190614ad4565b9150600a856138849190614c98565b603061389091906149f3565b60f81b8183815181106138a6576138a5614d85565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856138e29190614a49565b9450613860565b8093505050505b919050565b50505050565b61390883838360016139a5565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008082905060005b845181101561399a57600085828151811061395757613956614d85565b5b60200260200101519050808311613979576139728382613cc4565b9250613986565b6139838184613cc4565b92505b50808061399290614c2b565b915050613939565b508091505092915050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613a12576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b85811015613ca757818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4838015613c5b5750613c59600088848861355d565b155b15613c92576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81806001019250508080600101915050613be0565b508060008190555050613cbd60008683876138f5565b5050505050565b600082600052816020526040600020905092915050565b828054613ce790614bc8565b90600052602060002090601f016020900481019282613d095760008555613d50565b82601f10613d2257805160ff1916838001178555613d50565b82800160010185558215613d50579182015b82811115613d4f578251825591602001919060010190613d34565b5b509050613d5d9190613d9b565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115613db4576000816000905550600101613d9c565b5090565b6000613dcb613dc68461494e565b614929565b905082815260208101848484011115613de757613de6614df2565b5b613df2848285614b86565b509392505050565b6000613e0d613e088461497f565b614929565b905082815260208101848484011115613e2957613e28614df2565b5b613e34848285614b86565b509392505050565b600081359050613e4b816151df565b92915050565b60008083601f840112613e6757613e66614de8565b5b8235905067ffffffffffffffff811115613e8457613e83614de3565b5b602083019150836020820283011115613ea057613e9f614ded565b5b9250929050565b600081359050613eb6816151f6565b92915050565b600081359050613ecb8161520d565b92915050565b600081359050613ee081615224565b92915050565b600081519050613ef581615224565b92915050565b600082601f830112613f1057613f0f614de8565b5b8135613f20848260208601613db8565b91505092915050565b600082601f830112613f3e57613f3d614de8565b5b8135613f4e848260208601613dfa565b91505092915050565b600081359050613f668161523b565b92915050565b600060208284031215613f8257613f81614dfc565b5b6000613f9084828501613e3c565b91505092915050565b60008060408385031215613fb057613faf614dfc565b5b6000613fbe85828601613e3c565b9250506020613fcf85828601613e3c565b9150509250929050565b600080600060608486031215613ff257613ff1614dfc565b5b600061400086828701613e3c565b935050602061401186828701613e3c565b925050604061402286828701613f57565b9150509250925092565b6000806000806080858703121561404657614045614dfc565b5b600061405487828801613e3c565b945050602061406587828801613e3c565b935050604061407687828801613f57565b925050606085013567ffffffffffffffff81111561409757614096614df7565b5b6140a387828801613efb565b91505092959194509250565b600080604083850312156140c6576140c5614dfc565b5b60006140d485828601613e3c565b92505060206140e585828601613ea7565b9150509250929050565b6000806040838503121561410657614105614dfc565b5b600061411485828601613e3c565b925050602061412585828601613f57565b9150509250929050565b60008060006040848603121561414857614147614dfc565b5b600084013567ffffffffffffffff81111561416657614165614df7565b5b61417286828701613e51565b9350935050602061418586828701613f57565b9150509250925092565b600080600080606085870312156141a9576141a8614dfc565b5b600085013567ffffffffffffffff8111156141c7576141c6614df7565b5b6141d387828801613e51565b945094505060206141e687828801613f57565b92505060406141f787828801613f57565b91505092959194509250565b60006020828403121561421957614218614dfc565b5b600061422784828501613ebc565b91505092915050565b60006020828403121561424657614245614dfc565b5b600061425484828501613ed1565b91505092915050565b60006020828403121561427357614272614dfc565b5b600061428184828501613ee6565b91505092915050565b6000602082840312156142a05761429f614dfc565b5b600082013567ffffffffffffffff8111156142be576142bd614df7565b5b6142ca84828501613f29565b91505092915050565b6000602082840312156142e9576142e8614dfc565b5b60006142f784828501613f57565b91505092915050565b61430981614b08565b82525050565b61432061431b82614b08565b614c74565b82525050565b61432f81614b1a565b82525050565b6000614340826149b0565b61434a81856149c6565b935061435a818560208601614b95565b61436381614e01565b840191505092915050565b6000614379826149bb565b61438381856149d7565b9350614393818560208601614b95565b61439c81614e01565b840191505092915050565b60006143b2826149bb565b6143bc81856149e8565b93506143cc818560208601614b95565b80840191505092915050565b60006143e5602a836149d7565b91506143f082614e1f565b604082019050919050565b60006144086026836149d7565b915061441382614e6e565b604082019050919050565b600061442b6023836149d7565b915061443682614ebd565b604082019050919050565b600061444e6026836149d7565b915061445982614f0c565b604082019050919050565b60006144716033836149d7565b915061447c82614f5b565b604082019050919050565b6000614494601b836149d7565b915061449f82614faa565b602082019050919050565b60006144b76020836149d7565b91506144c282614fd3565b602082019050919050565b60006144da6030836149d7565b91506144e582614ffc565b604082019050919050565b60006144fd6015836149d7565b91506145088261504b565b602082019050919050565b60006145206025836149d7565b915061452b82615074565b604082019050919050565b60006145436000836149e8565b915061454e826150c3565b600082019050919050565b60006145666023836149d7565b9150614571826150c6565b604082019050919050565b6000614589600d836149d7565b915061459482615115565b602082019050919050565b60006145ac601d836149d7565b91506145b78261513e565b602082019050919050565b60006145cf601c836149d7565b91506145da82615167565b602082019050919050565b60006145f2602f836149d7565b91506145fd82615190565b604082019050919050565b61461181614b7c565b82525050565b6000614623828461430f565b60148201915081905092915050565b600061463e82856143a7565b915061464a82846143a7565b915061465582614536565b91508190509392505050565b60006020820190506146766000830184614300565b92915050565b60006080820190506146916000830187614300565b61469e6020830186614300565b6146ab6040830185614608565b81810360608301526146bd8184614335565b905095945050505050565b60006040820190506146dd6000830185614300565b6146ea6020830184614608565b9392505050565b60006020820190506147066000830184614326565b92915050565b60006020820190508181036000830152614726818461436e565b905092915050565b60006020820190508181036000830152614747816143d8565b9050919050565b60006020820190508181036000830152614767816143fb565b9050919050565b600060208201905081810360008301526147878161441e565b9050919050565b600060208201905081810360008301526147a781614441565b9050919050565b600060208201905081810360008301526147c781614464565b9050919050565b600060208201905081810360008301526147e781614487565b9050919050565b60006020820190508181036000830152614807816144aa565b9050919050565b60006020820190508181036000830152614827816144cd565b9050919050565b60006020820190508181036000830152614847816144f0565b9050919050565b6000602082019050818103600083015261486781614513565b9050919050565b6000602082019050818103600083015261488781614559565b9050919050565b600060208201905081810360008301526148a78161457c565b9050919050565b600060208201905081810360008301526148c78161459f565b9050919050565b600060208201905081810360008301526148e7816145c2565b9050919050565b60006020820190508181036000830152614907816145e5565b9050919050565b60006020820190506149236000830184614608565b92915050565b6000614933614944565b905061493f8282614bfa565b919050565b6000604051905090565b600067ffffffffffffffff82111561496957614968614db4565b5b61497282614e01565b9050602081019050919050565b600067ffffffffffffffff82111561499a57614999614db4565b5b6149a382614e01565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006149fe82614b7c565b9150614a0983614b7c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a3e57614a3d614cf8565b5b828201905092915050565b6000614a5482614b7c565b9150614a5f83614b7c565b925082614a6f57614a6e614d27565b5b828204905092915050565b6000614a8582614b7c565b9150614a9083614b7c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ac957614ac8614cf8565b5b828202905092915050565b6000614adf82614b7c565b9150614aea83614b7c565b925082821015614afd57614afc614cf8565b5b828203905092915050565b6000614b1382614b5c565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614bb3578082015181840152602081019050614b98565b83811115614bc2576000848401525b50505050565b60006002820490506001821680614be057607f821691505b60208210811415614bf457614bf3614d56565b5b50919050565b614c0382614e01565b810181811067ffffffffffffffff82111715614c2257614c21614db4565b5b80604052505050565b6000614c3682614b7c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c6957614c68614cf8565b5b600182019050919050565b6000614c7f82614c86565b9050919050565b6000614c9182614e12565b9050919050565b6000614ca382614b7c565b9150614cae83614b7c565b925082614cbe57614cbd614d27565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4d61782050726576696f757320436f6c6c656374696f6e204d696e74204c696d60008201527f6974207265616368656400000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5075626c6963204d696e74204973204e6f74204143746976652052696768742060008201527f4e6f770000000000000000000000000000000000000000000000000000000000602082015250565b7f57686974656c697374204d696e74204973204e6f74204163746976652052696760008201527f6874204e6f770000000000000000000000000000000000000000000000000000602082015250565b7f4e756d626572204f6620546f6b656e732043616e204e6f74204265204c65737360008201527f205468616e204f7220457175616c20546f203000000000000000000000000000602082015250565b7f416c6c20546f6b656e732048617665204265656e204d696e7465640000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f50726576696f757320436f6c6c656374696f6e204d696e74204973204e6f742060008201527f414374697665205269676874204e6f7700000000000000000000000000000000602082015250565b7f50726573616c65204c696d697420526561636865640000000000000000000000600082015250565b7f5155414e54495459204d555354204245204c455353205448454e204d4158205360008201527f5550504c59000000000000000000000000000000000000000000000000000000602082015250565b50565b7f416c6c207265736572766520746f6b656e7320686176652062656e65206d696e60008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b7f53656e742045746865722056616c756520497320496e636f7272656374000000600082015250565b7f4d6178206c696d6974207065722077616c6c6574207265616368656400000000600082015250565b7f5175616e74697479204d757374204265204c6573736572205468616e204d617860008201527f2050726573616c6520537570706c790000000000000000000000000000000000602082015250565b6151e881614b08565b81146151f357600080fd5b50565b6151ff81614b1a565b811461520a57600080fd5b50565b61521681614b26565b811461522157600080fd5b50565b61522d81614b30565b811461523857600080fd5b50565b61524481614b7c565b811461524f57600080fd5b5056fea26469706673582212201045b669100e8d6b02f5c2ea63fedc7435745ee85e6424191d5f1eff6073b14864736f6c634300080700330000000000000000000000000000000000000000000000000000000000000060f9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57f9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57000000000000000000000000000000000000000000000000000000000000003d68747470733a2f2f7361746f7368692d6769726c732d6261636b656e642e6865726f6b756170702e636f6d2f6170692f7361746f7368694769726c732f000000

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

0000000000000000000000000000000000000000000000000000000000000060f9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57f9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57000000000000000000000000000000000000000000000000000000000000003d68747470733a2f2f7361746f7368692d6769726c732d6261636b656e642e6865726f6b756170702e636f6d2f6170692f7361746f7368694769726c732f000000

-----Decoded View---------------
Arg [0] : baseuri (string): https://satoshi-girls-backend.herokuapp.com/api/satoshiGirls/
Arg [1] : finalPreviousCollectionRootHash (bytes32): 0xf9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57
Arg [2] : finalPreSaleRootHash (bytes32): 0xf9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : f9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57
Arg [2] : f9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57
Arg [3] : 000000000000000000000000000000000000000000000000000000000000003d
Arg [4] : 68747470733a2f2f7361746f7368692d6769726c732d6261636b656e642e6865
Arg [5] : 726f6b756170702e636f6d2f6170692f7361746f7368694769726c732f000000


Deployed ByteCode Sourcemap

21193:7098:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10699:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12226:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22354:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;13314:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12950:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21850:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22142:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22420:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9491:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22828:137;;;;;;;;;;;;;:::i;:::-;;14093:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22022:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9821:872;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23807:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28136:152;;;;;;;;;;;;;:::i;:::-;;14269:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21909:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22079:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22682:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9598:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23538:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22547:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12096:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21965:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22971:104;;;;;;;;;;;;;:::i;:::-;;11127:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20644:103;;;;;;;;;;;;;:::i;:::-;;27821:281;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24151:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20425:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12332:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21722:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23939:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26862:953;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13565:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23081:113;;;;;;;;;;;;;:::i;:::-;;14460:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23237:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25585:1271;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12442:402;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24380:1199;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21603:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22608:67;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;22484:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;21785;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13873:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20753:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23353:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21660:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10699:422;10846:4;10903:25;10888:40;;;:11;:40;;;;:105;;;;10960:33;10945:48;;;:11;:48;;;;10888:105;:172;;;;11025:35;11010:50;;;:11;:50;;;;10888:172;:225;;;;11077:36;11101:11;11077:23;:36::i;:::-;10888:225;10868:245;;10699:422;;;:::o;12226:100::-;12280:13;12313:5;12306:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12226:100;:::o;22354:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13314:245::-;13418:7;13448:16;13456:7;13448;:16::i;:::-;13443:64;;13473:34;;;;;;;;;;;;;;13443:64;13527:15;:24;13543:7;13527:24;;;;;;;;;;;;;;;;;;;;;13520:31;;13314:245;;;:::o;12950:358::-;13023:13;13039:24;13055:7;13039:15;:24::i;:::-;13023:40;;13084:5;13078:11;;:2;:11;;;13074:48;;;13098:24;;;;;;;;;;;;;;13074:48;13155:5;13139:21;;:12;:10;:12::i;:::-;:21;;;;:63;;;;;13165:37;13182:5;13189:12;:10;:12::i;:::-;13165:16;:37::i;:::-;13164:38;13139:63;13135:124;;;13224:35;;;;;;;;;;;;;;13135:124;13272:28;13281:2;13285:7;13294:5;13272:8;:28::i;:::-;13012:296;12950:358;;:::o;21850:50::-;;;;:::o;22142:25::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22420:55::-;;;;;;;;;;;;;;;;;;;;;;:::o;9491:101::-;9544:7;9571:13;;9564:20;;9491:101;:::o;22828:137::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22931:26:::1;;;;;;;;;;;22930:27;22901:26;;:56;;;;;;;;;;;;;;;;;;22828:137::o:0;14093:170::-;14227:28;14237:4;14243:2;14247:7;14227:9;:28::i;:::-;14093:170;;;:::o;22022:50::-;;;;;;;;;;;;;:::o;9821:872::-;9946:9;9986:16;9996:5;9986:9;:16::i;:::-;9977:5;:25;9973:61;;10011:23;;;;;;;;;;;;;;9973:61;10045:22;10070:13;:11;:13::i;:::-;10045:38;;10094:19;10124:25;10190:9;10185:466;10205:14;10201:1;:18;10185:466;;;10245:31;10279:11;:14;10291:1;10279:14;;;;;;;;;;;10245:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10342:1;10316:28;;:9;:14;;;:28;;;10312:111;;10389:9;:14;;;10369:34;;10312:111;10466:5;10445:26;;:17;:26;;;10441:195;;;10515:5;10500:11;:20;10496:85;;;10556:1;10549:8;;;;;;;;;10496:85;10603:13;;;;;;;10441:195;10226:425;10221:3;;;;;;;10185:466;;;;10679:5;10672:13;;;;:::i;:::-;;9962:731;;;9821:872;;;;;:::o;23807:126::-;23871:7;23910:15;;23898:9;:27;;;;:::i;:::-;23891:34;;23807:126;;;:::o;28136:152::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28184:17:::1;28206:21;28184:43;;28246:10;28238:28;;:42;28267:12;28238:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28173:115;28136:152::o:0;14269:185::-;14407:39;14424:4;14430:2;14434:7;14407:39;;;;;;;;;;;;:16;:39::i;:::-;14269:185;;;:::o;21909:47::-;;;;:::o;22079:50::-;;;;;;;;;;;;;:::o;22682:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;9598:217::-;9701:7;9739:13;:11;:13::i;:::-;9730:5;:22;9726:58;;9761:23;;;;;;;;;;;;;;9726:58;9802:5;9795:12;;9598:217;;;:::o;23538:106::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23625:11:::1;23613:9;:23;;;;;;;;;;;;:::i;:::-;;23538:106:::0;:::o;22547:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;12096:124::-;12160:7;12187:20;12199:7;12187:11;:20::i;:::-;:25;;;12180:32;;12096:124;;;:::o;21965:50::-;;;;;;;;;;;;;:::o;22971:104::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23052:15:::1;;;;;;;;;;;23051:16;23033:15;;:34;;;;;;;;;;;;;;;;;;22971:104::o:0;11127:206::-;11191:7;11232:1;11215:19;;:5;:19;;;11211:60;;;11243:28;;;;;;;;;;;;;;11211:60;11297:12;:19;11310:5;11297:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;11289:36;;11282:43;;11127:206;;;:::o;20644:103::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20709:30:::1;20736:1;20709:18;:30::i;:::-;20644:103::o:0;27821:281::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27939:8:::1;;27927:9;;:20;;;;:::i;:::-;27914:8;27898:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:50;;27890:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;28006:6;28001:94;28022:8;28018:1;:12;28001:94;;;28052:31;28062:10;28074:8;28052:9;:31::i;:::-;28032:3;;;;;:::i;:::-;;;;28001:94;;;;27821:281:::0;:::o;24151:223::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24245:8:::1;;24233;:20;;24225:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24316:8;24304;;:20;;;;;;;:::i;:::-;;;;;;;;24335:31;24345:10;24357:8;24335:9;:31::i;:::-;24151:223:::0;:::o;20425:87::-;20471:7;20498:6;;;;;;;;;;;20491:13;;20425:87;:::o;12332:104::-;12388:13;12421:7;12414:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12332:104;:::o;21722:56::-;;;;:::o;23939:124::-;24004:7;24043:12;;24031:9;:24;;;;:::i;:::-;24024:31;;23939:124;;;:::o;26862:953::-;26967:5;26928:44;;:23;:35;26952:10;26928:35;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;26924:268;;;27024:99;;;;;;;;27068:10;27024:99;;;;;;27106:1;27024:99;;;26989:20;:32;27010:10;26989:32;;;;;;;;;;;;;;;:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27176:4;27138:23;:35;27162:10;27138:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;26924:268;27233:5;27211:27;;:18;;;;;;;;;;;:27;;;27202:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;27314:1;27299:12;:16;27290:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;27446:12;;27430;27390:17;:29;27408:10;27390:29;;;;;;;;;;;;;;;:37;;;:52;;;;:::i;:::-;:68;;27382:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;27555:8;;27543:9;;:20;;;;:::i;:::-;27527:12;27511:13;:11;:13::i;:::-;:28;;;;:::i;:::-;:52;;27502:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;27650:9;27634:12;27616:15;;:30;;;;:::i;:::-;:43;27607:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;27705:35;27715:10;27727:12;27705:9;:35::i;:::-;27795:12;27751:20;:32;27772:10;27751:32;;;;;;;;;;;;;;;:40;;;:56;;;;;;;:::i;:::-;;;;;;;;26862:953;:::o;13565:302::-;13691:12;:10;:12::i;:::-;13679:24;;:8;:24;;;13675:54;;;13712:17;;;;;;;;;;;;;;13675:54;13787:8;13742:18;:32;13761:12;:10;:12::i;:::-;13742:32;;;;;;;;;;;;;;;:42;13775:8;13742:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;13840:8;13811:48;;13826:12;:10;:12::i;:::-;13811:48;;;13850:8;13811:48;;;;;;:::i;:::-;;;;;;;;13565:302;;:::o;23081:113::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23168:18:::1;;;;;;;;;;;23167:19;23146:18;;:40;;;;;;;;;;;;;;;;;;23081:113::o:0;14460:321::-;14619:28;14629:4;14635:2;14639:7;14619:9;:28::i;:::-;14663:48;14686:4;14692:2;14696:7;14705:5;14663:22;:48::i;:::-;14658:115;;14733:40;;;;;;;;;;;;;;14658:115;14460:321;;;;:::o;23237:110::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23330:9:::1;23312:15;:27;;;;23237:110:::0;:::o;25585:1271::-;25729:5;25693:41;;:20;:32;25714:10;25693:32;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;25689:259;;;25783:99;;;;;;;;25827:10;25783:99;;;;;;25865:1;25783:99;;;25751:17;:29;25769:10;25751:29;;;;;;;;;;;;;;;:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25932:4;25897:20;:32;25918:10;25897:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25689:259;25985:5;25966:24;;:15;;;;;;;;;;;:24;;;25958:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;26067:1;26052:12;:16;26044:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;26199:18;;26183:12;26143:17;:29;26161:10;26143:29;;;;;;;;;;;;;;;:37;;;:52;;;;:::i;:::-;:74;;26135:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;26344:12;;26328;26288:17;:29;26306:10;26288:29;;;;;;;;;;;;;;;:37;;;:52;;;;:::i;:::-;:68;;26280:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;26452:8;;26440:9;;:20;;;;:::i;:::-;26424:12;26408:13;:11;:13::i;:::-;:28;;;;:::i;:::-;:52;;26400:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;26497:12;26539:10;26522:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;26512:39;;;;;;26497:54;;26570:55;26589:12;;26570:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26603:15;;26620:4;26570:18;:55::i;:::-;26562:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;26693:9;26677:12;26662;;:27;;;;:::i;:::-;:40;26654:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;26749:35;26759:10;26771:12;26749:9;:35::i;:::-;26836:12;26795:17;:29;26813:10;26795:29;;;;;;;;;;;;;;;:37;;;:53;;;;;;;:::i;:::-;;;;;;;;25678:1178;25585:1271;;;:::o;12442:402::-;12543:13;12579:16;12587:7;12579;:16::i;:::-;12574:59;;12604:29;;;;;;;;;;;;;;12574:59;12646:21;12670:10;:8;:10::i;:::-;12646:34;;12736:1;12717:7;12711:21;:26;;:125;;;;;;;;;;;;;;;;;12781:7;12790:18;:7;:16;:18::i;:::-;12764:49;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12711:125;12691:145;;;12442:402;;;:::o;24380:1199::-;24593:5;24546:52;;:31;:43;24578:10;24546:43;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;24542:292;;;24658:99;;;;;;;;24702:10;24658:99;;;;;;24740:1;24658:99;;;24615:28;:40;24644:10;24615:40;;;;;;;;;;;;;;;:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24818:4;24772:31;:43;24804:10;24772:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;24542:292;24882:5;24852:35;;:26;;;;;;;;;;;:35;;;24844:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;24974:1;24959:12;:16;24951:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;25117:30;25101:12;25050:28;:40;25079:10;25050:40;;;;;;;;;;;;;;;:48;;;:63;;;;:::i;:::-;:97;;25042:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;25257:8;;25245:9;;:20;;;;:::i;:::-;25229:12;25213:13;:11;:13::i;:::-;:28;;;;:::i;:::-;:52;;25205:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;25302:12;25344:10;25327:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;25317:39;;;;;;25302:54;;25375:55;25394:12;;25375:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25408:15;;25425:4;25375:18;:55::i;:::-;25367:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;25461:35;25471:10;25483:12;25461:9;:35::i;:::-;25559:12;25507:28;:40;25536:10;25507:40;;;;;;;;;;;;;;;:48;;;:64;;;;;;;:::i;:::-;;;;;;;;24531:1048;24380:1199;;;;:::o;21603:50::-;;;;:::o;22608:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22484:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21785:::-;;;;:::o;13873:214::-;14015:4;14044:18;:25;14063:5;14044:25;;;;;;;;;;;;;;;:35;14070:8;14044:35;;;;;;;;;;;;;;;;;;;;;;;;;14037:42;;13873:214;;;;:::o;20753:238::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20876:1:::1;20856:22;;:8;:22;;;;20834:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;20955:28;20974:8;20955:18;:28::i;:::-;20753:238:::0;:::o;23353:132::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23468:9:::1;23439:26;:38;;;;23353:132:::0;:::o;21660:49::-;;;;:::o;5783:207::-;5913:4;5957:25;5942:40;;;:11;:40;;;;5935:47;;5783:207;;;:::o;14787:112::-;14844:4;14878:13;;14868:7;:23;14861:30;;14787:112;;;:::o;1521:98::-;1574:7;1601:10;1594:17;;1521:98;:::o;17670:196::-;17812:2;17785:15;:24;17801:7;17785:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;17850:7;17846:2;17830:28;;17839:5;17830:28;;;;;;;;;;;;17670:196;;;:::o;16291:1373::-;16406:35;16444:20;16456:7;16444:11;:20::i;:::-;16406:58;;16475:22;16517:13;:18;;;16501:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;16576:12;:10;:12::i;:::-;16552:36;;:20;16564:7;16552:11;:20::i;:::-;:36;;;16501:87;:154;;;;16605:50;16622:13;:18;;;16642:12;:10;:12::i;:::-;16605:16;:50::i;:::-;16501:154;16475:181;;16672:17;16667:66;;16698:35;;;;;;;;;;;;;;16667:66;16770:4;16748:26;;:13;:18;;;:26;;;16744:67;;16783:28;;;;;;;;;;;;;;16744:67;16840:1;16826:16;;:2;:16;;;16822:52;;;16851:23;;;;;;;;;;;;;;16822:52;16885:49;16902:1;16906:7;16915:13;:18;;;16885:8;:49::i;:::-;17000:1;16970:12;:18;16983:4;16970:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17044:1;17016:12;:16;17029:2;17016:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17088:2;17060:11;:20;17072:7;17060:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;17150:15;17105:11;:20;17117:7;17105:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;17181:19;17213:1;17203:7;:11;17181:33;;17274:1;17233:43;;:11;:24;17245:11;17233:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;17229:321;;;17301:20;17309:11;17301:7;:20::i;:::-;17297:238;;;17378:13;:18;;;17346:11;:24;17358:11;17346:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;17461:13;:54;;;17419:11;:24;17431:11;17419:24;;;;;;;;;;;:39;;;:96;;;;;;;;;;;;;;;;;;17297:238;17229:321;16945:616;17595:7;17591:2;17576:27;;17585:4;17576:27;;;;;;;;;;;;17614:42;17635:4;17641:2;17645:7;17654:1;17614:20;:42::i;:::-;16395:1269;;16291:1373;;;:::o;11554:536::-;11642:21;;:::i;:::-;11686:16;11694:7;11686;:16::i;:::-;11681:61;;11711:31;;;;;;;;;;;;;;11681:61;11785:12;11800:7;11785:22;;11780:245;11817:1;11809:4;:9;11780:245;;11847:31;11881:11;:17;11893:4;11881:17;;;;;;;;;;;11847:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11947:1;11921:28;;:9;:14;;;:28;;;11917:93;;11981:9;11974:16;;;;;;11917:93;11828:197;11820:6;;;;;;;;11780:245;;;;12055:27;;;;;;;;;;;;;;11554:536;;;;:::o;20997:191::-;21071:16;21090:6;;;;;;;;;;;21071:25;;21116:8;21107:6;;:17;;;;;;;;;;;;;;;;;;21171:8;21140:40;;21161:8;21140:40;;;;;;;;;;;;21060:128;20997:191;:::o;14907:104::-;14976:27;14986:2;14990:8;14976:27;;;;;;;;;;;;:9;:27::i;:::-;14907:104;;:::o;17872:919::-;18027:4;18048:15;:2;:13;;;:15::i;:::-;18044:740;;;18117:2;18101:36;;;18160:12;:10;:12::i;:::-;18195:4;18222:7;18252:5;18101:175;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;18080:649;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18480:1;18463:6;:13;:18;18459:255;;;18511:40;;;;;;;;;;;;;;18459:255;18664:6;18658:13;18649:6;18645:2;18641:15;18634:38;18080:649;18350:45;;;18340:55;;;:6;:55;;;;18333:62;;;;;18044:740;18768:4;18761:11;;17872:919;;;;;;;:::o;19152:190::-;19277:4;19330;19301:25;19314:5;19321:4;19301:12;:25::i;:::-;:33;19294:40;;19152:190;;;;;:::o;23650:110::-;23710:13;23743:9;23736:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23650:110;:::o;116:532::-;172:13;211:1;202:5;:10;198:53;;;229:10;;;;;;;;;;;;;;;;;;;;;198:53;261:12;276:5;261:20;;292:14;317:78;332:1;324:4;:9;317:78;;350:8;;;;;:::i;:::-;;;;381:2;373:10;;;;;:::i;:::-;;;317:78;;;405:19;437:6;427:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;405:39;;455:154;471:1;462:5;:10;455:154;;499:1;489:11;;;;;:::i;:::-;;;566:2;558:5;:10;;;;:::i;:::-;545:2;:24;;;;:::i;:::-;532:39;;515:6;522;515:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;595:2;586:11;;;;;:::i;:::-;;;455:154;;;633:6;619:21;;;;;116:532;;;;:::o;18962:158::-;;;;;:::o;15017:163::-;15140:32;15146:2;15150:8;15160:5;15167:4;15140:5;:32::i;:::-;15017:163;;;:::o;1756:115::-;1816:4;1862:1;1840:7;:19;;;:23;1833:30;;1756:115;;;:::o;19348:549::-;19458:7;19483:20;19506:4;19483:27;;19526:9;19521:339;19545:5;:12;19541:1;:16;19521:339;;;19579:20;19602:5;19608:1;19602:8;;;;;;;;:::i;:::-;;;;;;;;19579:31;;19645:12;19629;:28;19625:224;;19693:42;19708:12;19722;19693:14;:42::i;:::-;19678:57;;19625:224;;;19791:42;19806:12;19820;19791:14;:42::i;:::-;19776:57;;19625:224;19564:296;19559:3;;;;;:::i;:::-;;;;19521:339;;;;19877:12;19870:19;;;19348:549;;;;:::o;15186:1099::-;15325:20;15348:13;;15325:36;;15390:1;15376:16;;:2;:16;;;15372:48;;;15401:19;;;;;;;;;;;;;;15372:48;15492:8;15456:12;:16;15469:2;15456:16;;;;;;;;;;;;;;;:24;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15557:8;15516:12;:16;15529:2;15516:16;;;;;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15614:2;15581:11;:25;15593:12;15581:25;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;15681:15;15631:11;:25;15643:12;15631:25;;;;;;;;;;;:40;;;:66;;;;;;;;;;;;;;;;;;15712:20;15735:12;15712:35;;15767:9;15762:389;15782:8;15778:1;:12;15762:389;;;15846:12;15842:2;15821:38;;15838:1;15821:38;;;;;;;;;;;;15904:4;:89;;;;;15934:59;15965:1;15969:2;15973:12;15987:5;15934:22;:59::i;:::-;15933:60;15904:89;15878:225;;;16043:40;;;;;;;;;;;;;;15878:225;16121:14;;;;;;;15792:3;;;;;;;15762:389;;;;16181:12;16165:13;:28;;;;15431:774;16217:60;16246:1;16250:2;16254:12;16268:8;16217:20;:60::i;:::-;15314:971;15186:1099;;;;:::o;19905:256::-;20000:13;20068:1;20062:4;20055:15;20097:1;20091:4;20084:15;20138:4;20132;20122:21;20113:30;;19905:256;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410: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:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;1003:568::-;1076:8;1086:6;1136:3;1129:4;1121:6;1117:17;1113:27;1103:122;;1144:79;;:::i;:::-;1103:122;1257:6;1244:20;1234:30;;1287:18;1279:6;1276:30;1273:117;;;1309:79;;:::i;:::-;1273:117;1423:4;1415:6;1411:17;1399:29;;1477:3;1469:4;1461:6;1457:17;1447:8;1443:32;1440:41;1437:128;;;1484:79;;:::i;:::-;1437:128;1003:568;;;;;:::o;1577:133::-;1620:5;1658:6;1645:20;1636:29;;1674:30;1698:5;1674:30;:::i;:::-;1577:133;;;;:::o;1716:139::-;1762:5;1800:6;1787:20;1778:29;;1816:33;1843:5;1816:33;:::i;:::-;1716:139;;;;:::o;1861:137::-;1906:5;1944:6;1931:20;1922:29;;1960:32;1986:5;1960:32;:::i;:::-;1861:137;;;;:::o;2004:141::-;2060:5;2091:6;2085:13;2076:22;;2107:32;2133:5;2107:32;:::i;:::-;2004:141;;;;:::o;2164:338::-;2219:5;2268:3;2261:4;2253:6;2249:17;2245:27;2235:122;;2276:79;;:::i;:::-;2235:122;2393:6;2380:20;2418:78;2492:3;2484:6;2477:4;2469:6;2465:17;2418:78;:::i;:::-;2409:87;;2225:277;2164:338;;;;:::o;2522:340::-;2578:5;2627:3;2620:4;2612:6;2608:17;2604:27;2594:122;;2635:79;;:::i;:::-;2594:122;2752:6;2739:20;2777:79;2852:3;2844:6;2837:4;2829:6;2825:17;2777:79;:::i;:::-;2768:88;;2584:278;2522:340;;;;:::o;2868:139::-;2914:5;2952:6;2939:20;2930:29;;2968:33;2995:5;2968:33;:::i;:::-;2868:139;;;;:::o;3013:329::-;3072:6;3121:2;3109:9;3100:7;3096:23;3092:32;3089:119;;;3127:79;;:::i;:::-;3089:119;3247:1;3272:53;3317:7;3308:6;3297:9;3293:22;3272:53;:::i;:::-;3262:63;;3218:117;3013:329;;;;:::o;3348:474::-;3416:6;3424;3473:2;3461:9;3452:7;3448:23;3444:32;3441:119;;;3479:79;;:::i;:::-;3441:119;3599:1;3624:53;3669:7;3660:6;3649:9;3645:22;3624:53;:::i;:::-;3614:63;;3570:117;3726:2;3752:53;3797:7;3788:6;3777:9;3773:22;3752:53;:::i;:::-;3742:63;;3697:118;3348:474;;;;;:::o;3828:619::-;3905:6;3913;3921;3970:2;3958:9;3949:7;3945:23;3941:32;3938:119;;;3976:79;;:::i;:::-;3938:119;4096:1;4121:53;4166:7;4157:6;4146:9;4142:22;4121:53;:::i;:::-;4111:63;;4067:117;4223:2;4249:53;4294:7;4285:6;4274:9;4270:22;4249:53;:::i;:::-;4239:63;;4194:118;4351:2;4377:53;4422:7;4413:6;4402:9;4398:22;4377:53;:::i;:::-;4367:63;;4322:118;3828:619;;;;;:::o;4453:943::-;4548:6;4556;4564;4572;4621:3;4609:9;4600:7;4596:23;4592:33;4589:120;;;4628:79;;:::i;:::-;4589:120;4748:1;4773:53;4818:7;4809:6;4798:9;4794:22;4773:53;:::i;:::-;4763:63;;4719:117;4875:2;4901:53;4946:7;4937:6;4926:9;4922:22;4901:53;:::i;:::-;4891:63;;4846:118;5003:2;5029:53;5074:7;5065:6;5054:9;5050:22;5029:53;:::i;:::-;5019:63;;4974:118;5159:2;5148:9;5144:18;5131:32;5190:18;5182:6;5179:30;5176:117;;;5212:79;;:::i;:::-;5176:117;5317:62;5371:7;5362:6;5351:9;5347:22;5317:62;:::i;:::-;5307:72;;5102:287;4453:943;;;;;;;:::o;5402:468::-;5467:6;5475;5524:2;5512:9;5503:7;5499:23;5495:32;5492:119;;;5530:79;;:::i;:::-;5492:119;5650:1;5675:53;5720:7;5711:6;5700:9;5696:22;5675:53;:::i;:::-;5665:63;;5621:117;5777:2;5803:50;5845:7;5836:6;5825:9;5821:22;5803:50;:::i;:::-;5793:60;;5748:115;5402:468;;;;;:::o;5876:474::-;5944:6;5952;6001:2;5989:9;5980:7;5976:23;5972:32;5969:119;;;6007:79;;:::i;:::-;5969:119;6127:1;6152:53;6197:7;6188:6;6177:9;6173:22;6152:53;:::i;:::-;6142:63;;6098:117;6254:2;6280:53;6325:7;6316:6;6305:9;6301:22;6280:53;:::i;:::-;6270:63;;6225:118;5876:474;;;;;:::o;6356:704::-;6451:6;6459;6467;6516:2;6504:9;6495:7;6491:23;6487:32;6484:119;;;6522:79;;:::i;:::-;6484:119;6670:1;6659:9;6655:17;6642:31;6700:18;6692:6;6689:30;6686:117;;;6722:79;;:::i;:::-;6686:117;6835:80;6907:7;6898:6;6887:9;6883:22;6835:80;:::i;:::-;6817:98;;;;6613:312;6964:2;6990:53;7035:7;7026:6;7015:9;7011:22;6990:53;:::i;:::-;6980:63;;6935:118;6356:704;;;;;:::o;7066:849::-;7170:6;7178;7186;7194;7243:2;7231:9;7222:7;7218:23;7214:32;7211:119;;;7249:79;;:::i;:::-;7211:119;7397:1;7386:9;7382:17;7369:31;7427:18;7419:6;7416:30;7413:117;;;7449:79;;:::i;:::-;7413:117;7562:80;7634:7;7625:6;7614:9;7610:22;7562:80;:::i;:::-;7544:98;;;;7340:312;7691:2;7717:53;7762:7;7753:6;7742:9;7738:22;7717:53;:::i;:::-;7707:63;;7662:118;7819:2;7845:53;7890:7;7881:6;7870:9;7866:22;7845:53;:::i;:::-;7835:63;;7790:118;7066:849;;;;;;;:::o;7921:329::-;7980:6;8029:2;8017:9;8008:7;8004:23;8000:32;7997:119;;;8035:79;;:::i;:::-;7997:119;8155:1;8180:53;8225:7;8216:6;8205:9;8201:22;8180:53;:::i;:::-;8170:63;;8126:117;7921:329;;;;:::o;8256:327::-;8314:6;8363:2;8351:9;8342:7;8338:23;8334:32;8331:119;;;8369:79;;:::i;:::-;8331:119;8489:1;8514:52;8558:7;8549:6;8538:9;8534:22;8514:52;:::i;:::-;8504:62;;8460:116;8256:327;;;;:::o;8589:349::-;8658:6;8707:2;8695:9;8686:7;8682:23;8678:32;8675:119;;;8713:79;;:::i;:::-;8675:119;8833:1;8858:63;8913:7;8904:6;8893:9;8889:22;8858:63;:::i;:::-;8848:73;;8804:127;8589:349;;;;:::o;8944:509::-;9013:6;9062:2;9050:9;9041:7;9037:23;9033:32;9030:119;;;9068:79;;:::i;:::-;9030:119;9216:1;9205:9;9201:17;9188:31;9246:18;9238:6;9235:30;9232:117;;;9268:79;;:::i;:::-;9232:117;9373:63;9428:7;9419:6;9408:9;9404:22;9373:63;:::i;:::-;9363:73;;9159:287;8944:509;;;;:::o;9459:329::-;9518:6;9567:2;9555:9;9546:7;9542:23;9538:32;9535:119;;;9573:79;;:::i;:::-;9535:119;9693:1;9718:53;9763:7;9754:6;9743:9;9739:22;9718:53;:::i;:::-;9708:63;;9664:117;9459:329;;;;:::o;9794:118::-;9881:24;9899:5;9881:24;:::i;:::-;9876:3;9869:37;9794:118;;:::o;9918:157::-;10023:45;10043:24;10061:5;10043:24;:::i;:::-;10023:45;:::i;:::-;10018:3;10011:58;9918:157;;:::o;10081:109::-;10162:21;10177:5;10162:21;:::i;:::-;10157:3;10150:34;10081:109;;:::o;10196:360::-;10282:3;10310:38;10342:5;10310:38;:::i;:::-;10364:70;10427:6;10422:3;10364:70;:::i;:::-;10357:77;;10443:52;10488:6;10483:3;10476:4;10469:5;10465:16;10443:52;:::i;:::-;10520:29;10542:6;10520:29;:::i;:::-;10515:3;10511:39;10504:46;;10286:270;10196:360;;;;:::o;10562:364::-;10650:3;10678:39;10711:5;10678:39;:::i;:::-;10733:71;10797:6;10792:3;10733:71;:::i;:::-;10726:78;;10813:52;10858:6;10853:3;10846:4;10839:5;10835:16;10813:52;:::i;:::-;10890:29;10912:6;10890:29;:::i;:::-;10885:3;10881:39;10874:46;;10654:272;10562:364;;;;:::o;10932:377::-;11038:3;11066:39;11099:5;11066:39;:::i;:::-;11121:89;11203:6;11198:3;11121:89;:::i;:::-;11114:96;;11219:52;11264:6;11259:3;11252:4;11245:5;11241:16;11219:52;:::i;:::-;11296:6;11291:3;11287:16;11280:23;;11042:267;10932:377;;;;:::o;11315:366::-;11457:3;11478:67;11542:2;11537:3;11478:67;:::i;:::-;11471:74;;11554:93;11643:3;11554:93;:::i;:::-;11672:2;11667:3;11663:12;11656:19;;11315:366;;;:::o;11687:::-;11829:3;11850:67;11914:2;11909:3;11850:67;:::i;:::-;11843:74;;11926:93;12015:3;11926:93;:::i;:::-;12044:2;12039:3;12035:12;12028:19;;11687:366;;;:::o;12059:::-;12201:3;12222:67;12286:2;12281:3;12222:67;:::i;:::-;12215:74;;12298:93;12387:3;12298:93;:::i;:::-;12416:2;12411:3;12407:12;12400:19;;12059:366;;;:::o;12431:::-;12573:3;12594:67;12658:2;12653:3;12594:67;:::i;:::-;12587:74;;12670:93;12759:3;12670:93;:::i;:::-;12788:2;12783:3;12779:12;12772:19;;12431:366;;;:::o;12803:::-;12945:3;12966:67;13030:2;13025:3;12966:67;:::i;:::-;12959:74;;13042:93;13131:3;13042:93;:::i;:::-;13160:2;13155:3;13151:12;13144:19;;12803:366;;;:::o;13175:::-;13317:3;13338:67;13402:2;13397:3;13338:67;:::i;:::-;13331:74;;13414:93;13503:3;13414:93;:::i;:::-;13532:2;13527:3;13523:12;13516:19;;13175:366;;;:::o;13547:::-;13689:3;13710:67;13774:2;13769:3;13710:67;:::i;:::-;13703:74;;13786:93;13875:3;13786:93;:::i;:::-;13904:2;13899:3;13895:12;13888:19;;13547:366;;;:::o;13919:::-;14061:3;14082:67;14146:2;14141:3;14082:67;:::i;:::-;14075:74;;14158:93;14247:3;14158:93;:::i;:::-;14276:2;14271:3;14267:12;14260:19;;13919:366;;;:::o;14291:::-;14433:3;14454:67;14518:2;14513:3;14454:67;:::i;:::-;14447:74;;14530:93;14619:3;14530:93;:::i;:::-;14648:2;14643:3;14639:12;14632:19;;14291:366;;;:::o;14663:::-;14805:3;14826:67;14890:2;14885:3;14826:67;:::i;:::-;14819:74;;14902:93;14991:3;14902:93;:::i;:::-;15020:2;15015:3;15011:12;15004:19;;14663:366;;;:::o;15035:400::-;15195:3;15216:84;15298:1;15293:3;15216:84;:::i;:::-;15209:91;;15309:93;15398:3;15309:93;:::i;:::-;15427:1;15422:3;15418:11;15411:18;;15035:400;;;:::o;15441:366::-;15583:3;15604:67;15668:2;15663:3;15604:67;:::i;:::-;15597:74;;15680:93;15769:3;15680:93;:::i;:::-;15798:2;15793:3;15789:12;15782:19;;15441:366;;;:::o;15813:::-;15955:3;15976:67;16040:2;16035:3;15976:67;:::i;:::-;15969:74;;16052:93;16141:3;16052:93;:::i;:::-;16170:2;16165:3;16161:12;16154:19;;15813:366;;;:::o;16185:::-;16327:3;16348:67;16412:2;16407:3;16348:67;:::i;:::-;16341:74;;16424:93;16513:3;16424:93;:::i;:::-;16542:2;16537:3;16533:12;16526:19;;16185:366;;;:::o;16557:::-;16699:3;16720:67;16784:2;16779:3;16720:67;:::i;:::-;16713:74;;16796:93;16885:3;16796:93;:::i;:::-;16914:2;16909:3;16905:12;16898:19;;16557:366;;;:::o;16929:::-;17071:3;17092:67;17156:2;17151:3;17092:67;:::i;:::-;17085:74;;17168:93;17257:3;17168:93;:::i;:::-;17286:2;17281:3;17277:12;17270:19;;16929:366;;;:::o;17301:118::-;17388:24;17406:5;17388:24;:::i;:::-;17383:3;17376:37;17301:118;;:::o;17425:256::-;17537:3;17552:75;17623:3;17614:6;17552:75;:::i;:::-;17652:2;17647:3;17643:12;17636:19;;17672:3;17665:10;;17425:256;;;;:::o;17687:701::-;17968:3;17990:95;18081:3;18072:6;17990:95;:::i;:::-;17983:102;;18102:95;18193:3;18184:6;18102:95;:::i;:::-;18095:102;;18214:148;18358:3;18214:148;:::i;:::-;18207:155;;18379:3;18372:10;;17687:701;;;;;:::o;18394:222::-;18487:4;18525:2;18514:9;18510:18;18502:26;;18538:71;18606:1;18595:9;18591:17;18582:6;18538:71;:::i;:::-;18394:222;;;;:::o;18622:640::-;18817:4;18855:3;18844:9;18840:19;18832:27;;18869:71;18937:1;18926:9;18922:17;18913:6;18869:71;:::i;:::-;18950:72;19018:2;19007:9;19003:18;18994:6;18950:72;:::i;:::-;19032;19100:2;19089:9;19085:18;19076:6;19032:72;:::i;:::-;19151:9;19145:4;19141:20;19136:2;19125:9;19121:18;19114:48;19179:76;19250:4;19241:6;19179:76;:::i;:::-;19171:84;;18622:640;;;;;;;:::o;19268:332::-;19389:4;19427:2;19416:9;19412:18;19404:26;;19440:71;19508:1;19497:9;19493:17;19484:6;19440:71;:::i;:::-;19521:72;19589:2;19578:9;19574:18;19565:6;19521:72;:::i;:::-;19268:332;;;;;:::o;19606:210::-;19693:4;19731:2;19720:9;19716:18;19708:26;;19744:65;19806:1;19795:9;19791:17;19782:6;19744:65;:::i;:::-;19606:210;;;;:::o;19822:313::-;19935:4;19973:2;19962:9;19958:18;19950:26;;20022:9;20016:4;20012:20;20008:1;19997:9;19993:17;19986:47;20050:78;20123:4;20114:6;20050:78;:::i;:::-;20042:86;;19822:313;;;;:::o;20141:419::-;20307:4;20345:2;20334:9;20330:18;20322:26;;20394:9;20388:4;20384:20;20380:1;20369:9;20365:17;20358:47;20422:131;20548:4;20422:131;:::i;:::-;20414:139;;20141:419;;;:::o;20566:::-;20732:4;20770:2;20759:9;20755:18;20747:26;;20819:9;20813:4;20809:20;20805:1;20794:9;20790:17;20783:47;20847:131;20973:4;20847:131;:::i;:::-;20839:139;;20566:419;;;:::o;20991:::-;21157:4;21195:2;21184:9;21180:18;21172:26;;21244:9;21238:4;21234:20;21230:1;21219:9;21215:17;21208:47;21272:131;21398:4;21272:131;:::i;:::-;21264:139;;20991:419;;;:::o;21416:::-;21582:4;21620:2;21609:9;21605:18;21597:26;;21669:9;21663:4;21659:20;21655:1;21644:9;21640:17;21633:47;21697:131;21823:4;21697:131;:::i;:::-;21689:139;;21416:419;;;:::o;21841:::-;22007:4;22045:2;22034:9;22030:18;22022:26;;22094:9;22088:4;22084:20;22080:1;22069:9;22065:17;22058:47;22122:131;22248:4;22122:131;:::i;:::-;22114:139;;21841:419;;;:::o;22266:::-;22432:4;22470:2;22459:9;22455:18;22447:26;;22519:9;22513:4;22509:20;22505:1;22494:9;22490:17;22483:47;22547:131;22673:4;22547:131;:::i;:::-;22539:139;;22266:419;;;:::o;22691:::-;22857:4;22895:2;22884:9;22880:18;22872:26;;22944:9;22938:4;22934:20;22930:1;22919:9;22915:17;22908:47;22972:131;23098:4;22972:131;:::i;:::-;22964:139;;22691:419;;;:::o;23116:::-;23282:4;23320:2;23309:9;23305:18;23297:26;;23369:9;23363:4;23359:20;23355:1;23344:9;23340:17;23333:47;23397:131;23523:4;23397:131;:::i;:::-;23389:139;;23116:419;;;:::o;23541:::-;23707:4;23745:2;23734:9;23730:18;23722:26;;23794:9;23788:4;23784:20;23780:1;23769:9;23765:17;23758:47;23822:131;23948:4;23822:131;:::i;:::-;23814:139;;23541:419;;;:::o;23966:::-;24132:4;24170:2;24159:9;24155:18;24147:26;;24219:9;24213:4;24209:20;24205:1;24194:9;24190:17;24183:47;24247:131;24373:4;24247:131;:::i;:::-;24239:139;;23966:419;;;:::o;24391:::-;24557:4;24595:2;24584:9;24580:18;24572:26;;24644:9;24638:4;24634:20;24630:1;24619:9;24615:17;24608:47;24672:131;24798:4;24672:131;:::i;:::-;24664:139;;24391:419;;;:::o;24816:::-;24982:4;25020:2;25009:9;25005:18;24997:26;;25069:9;25063:4;25059:20;25055:1;25044:9;25040:17;25033:47;25097:131;25223:4;25097:131;:::i;:::-;25089:139;;24816:419;;;:::o;25241:::-;25407:4;25445:2;25434:9;25430:18;25422:26;;25494:9;25488:4;25484:20;25480:1;25469:9;25465:17;25458:47;25522:131;25648:4;25522:131;:::i;:::-;25514:139;;25241:419;;;:::o;25666:::-;25832:4;25870:2;25859:9;25855:18;25847:26;;25919:9;25913:4;25909:20;25905:1;25894:9;25890:17;25883:47;25947:131;26073:4;25947:131;:::i;:::-;25939:139;;25666:419;;;:::o;26091:::-;26257:4;26295:2;26284:9;26280:18;26272:26;;26344:9;26338:4;26334:20;26330:1;26319:9;26315:17;26308:47;26372:131;26498:4;26372:131;:::i;:::-;26364:139;;26091:419;;;:::o;26516:222::-;26609:4;26647:2;26636:9;26632:18;26624:26;;26660:71;26728:1;26717:9;26713:17;26704:6;26660:71;:::i;:::-;26516:222;;;;:::o;26744:129::-;26778:6;26805:20;;:::i;:::-;26795:30;;26834:33;26862:4;26854:6;26834:33;:::i;:::-;26744:129;;;:::o;26879:75::-;26912:6;26945:2;26939:9;26929:19;;26879:75;:::o;26960:307::-;27021:4;27111:18;27103:6;27100:30;27097:56;;;27133:18;;:::i;:::-;27097:56;27171:29;27193:6;27171:29;:::i;:::-;27163:37;;27255:4;27249;27245:15;27237:23;;26960:307;;;:::o;27273:308::-;27335:4;27425:18;27417:6;27414:30;27411:56;;;27447:18;;:::i;:::-;27411:56;27485:29;27507:6;27485:29;:::i;:::-;27477:37;;27569:4;27563;27559:15;27551:23;;27273:308;;;:::o;27587:98::-;27638:6;27672:5;27666:12;27656:22;;27587:98;;;:::o;27691:99::-;27743:6;27777:5;27771:12;27761:22;;27691:99;;;:::o;27796:168::-;27879:11;27913:6;27908:3;27901:19;27953:4;27948:3;27944:14;27929:29;;27796:168;;;;:::o;27970:169::-;28054:11;28088:6;28083:3;28076:19;28128:4;28123:3;28119:14;28104:29;;27970:169;;;;:::o;28145:148::-;28247:11;28284:3;28269:18;;28145:148;;;;:::o;28299:305::-;28339:3;28358:20;28376:1;28358:20;:::i;:::-;28353:25;;28392:20;28410:1;28392:20;:::i;:::-;28387:25;;28546:1;28478:66;28474:74;28471:1;28468:81;28465:107;;;28552:18;;:::i;:::-;28465:107;28596:1;28593;28589:9;28582:16;;28299:305;;;;:::o;28610:185::-;28650:1;28667:20;28685:1;28667:20;:::i;:::-;28662:25;;28701:20;28719:1;28701:20;:::i;:::-;28696:25;;28740:1;28730:35;;28745:18;;:::i;:::-;28730:35;28787:1;28784;28780:9;28775:14;;28610:185;;;;:::o;28801:348::-;28841:7;28864:20;28882:1;28864:20;:::i;:::-;28859:25;;28898:20;28916:1;28898:20;:::i;:::-;28893:25;;29086:1;29018:66;29014:74;29011:1;29008:81;29003:1;28996:9;28989:17;28985:105;28982:131;;;29093:18;;:::i;:::-;28982:131;29141:1;29138;29134:9;29123:20;;28801:348;;;;:::o;29155:191::-;29195:4;29215:20;29233:1;29215:20;:::i;:::-;29210:25;;29249:20;29267:1;29249:20;:::i;:::-;29244:25;;29288:1;29285;29282:8;29279:34;;;29293:18;;:::i;:::-;29279:34;29338:1;29335;29331:9;29323:17;;29155:191;;;;:::o;29352:96::-;29389:7;29418:24;29436:5;29418:24;:::i;:::-;29407:35;;29352:96;;;:::o;29454:90::-;29488:7;29531:5;29524:13;29517:21;29506:32;;29454:90;;;:::o;29550:77::-;29587:7;29616:5;29605:16;;29550:77;;;:::o;29633:149::-;29669:7;29709:66;29702:5;29698:78;29687:89;;29633:149;;;:::o;29788:126::-;29825:7;29865:42;29858:5;29854:54;29843:65;;29788:126;;;:::o;29920:77::-;29957:7;29986:5;29975:16;;29920:77;;;:::o;30003:154::-;30087:6;30082:3;30077;30064:30;30149:1;30140:6;30135:3;30131:16;30124:27;30003:154;;;:::o;30163:307::-;30231:1;30241:113;30255:6;30252:1;30249:13;30241:113;;;30340:1;30335:3;30331:11;30325:18;30321:1;30316:3;30312:11;30305:39;30277:2;30274:1;30270:10;30265:15;;30241:113;;;30372:6;30369:1;30366:13;30363:101;;;30452:1;30443:6;30438:3;30434:16;30427:27;30363:101;30212:258;30163:307;;;:::o;30476:320::-;30520:6;30557:1;30551:4;30547:12;30537:22;;30604:1;30598:4;30594:12;30625:18;30615:81;;30681:4;30673:6;30669:17;30659:27;;30615:81;30743:2;30735:6;30732:14;30712:18;30709:38;30706:84;;;30762:18;;:::i;:::-;30706:84;30527:269;30476:320;;;:::o;30802:281::-;30885:27;30907:4;30885:27;:::i;:::-;30877:6;30873:40;31015:6;31003:10;31000:22;30979:18;30967:10;30964:34;30961:62;30958:88;;;31026:18;;:::i;:::-;30958:88;31066:10;31062:2;31055:22;30845:238;30802:281;;:::o;31089:233::-;31128:3;31151:24;31169:5;31151:24;:::i;:::-;31142:33;;31197:66;31190:5;31187:77;31184:103;;;31267:18;;:::i;:::-;31184:103;31314:1;31307:5;31303:13;31296:20;;31089:233;;;:::o;31328:100::-;31367:7;31396:26;31416:5;31396:26;:::i;:::-;31385:37;;31328:100;;;:::o;31434:94::-;31473:7;31502:20;31516:5;31502:20;:::i;:::-;31491:31;;31434:94;;;:::o;31534:176::-;31566:1;31583:20;31601:1;31583:20;:::i;:::-;31578:25;;31617:20;31635:1;31617:20;:::i;:::-;31612:25;;31656:1;31646:35;;31661:18;;:::i;:::-;31646:35;31702:1;31699;31695:9;31690:14;;31534:176;;;;:::o;31716:180::-;31764:77;31761:1;31754:88;31861:4;31858:1;31851:15;31885:4;31882:1;31875:15;31902:180;31950:77;31947:1;31940:88;32047:4;32044:1;32037:15;32071:4;32068:1;32061:15;32088:180;32136:77;32133:1;32126:88;32233:4;32230:1;32223:15;32257:4;32254:1;32247:15;32274:180;32322:77;32319:1;32312:88;32419:4;32416:1;32409:15;32443:4;32440:1;32433:15;32460:180;32508:77;32505:1;32498:88;32605:4;32602:1;32595:15;32629:4;32626:1;32619:15;32646:180;32694:77;32691:1;32684:88;32791:4;32788:1;32781:15;32815:4;32812:1;32805:15;32832:117;32941:1;32938;32931:12;32955:117;33064:1;33061;33054:12;33078:117;33187:1;33184;33177:12;33201:117;33310:1;33307;33300:12;33324:117;33433:1;33430;33423:12;33447:117;33556:1;33553;33546:12;33570:102;33611:6;33662:2;33658:7;33653:2;33646:5;33642:14;33638:28;33628:38;;33570:102;;;:::o;33678:94::-;33711:8;33759:5;33755:2;33751:14;33730:35;;33678:94;;;:::o;33778:229::-;33918:34;33914:1;33906:6;33902:14;33895:58;33987:12;33982:2;33974:6;33970:15;33963:37;33778:229;:::o;34013:225::-;34153:34;34149:1;34141:6;34137:14;34130:58;34222:8;34217:2;34209:6;34205:15;34198:33;34013:225;:::o;34244:222::-;34384:34;34380:1;34372:6;34368:14;34361:58;34453:5;34448:2;34440:6;34436:15;34429:30;34244:222;:::o;34472:225::-;34612:34;34608:1;34600:6;34596:14;34589:58;34681:8;34676:2;34668:6;34664:15;34657:33;34472:225;:::o;34703:238::-;34843:34;34839:1;34831:6;34827:14;34820:58;34912:21;34907:2;34899:6;34895:15;34888:46;34703:238;:::o;34947:177::-;35087:29;35083:1;35075:6;35071:14;35064:53;34947:177;:::o;35130:182::-;35270:34;35266:1;35258:6;35254:14;35247:58;35130:182;:::o;35318:235::-;35458:34;35454:1;35446:6;35442:14;35435:58;35527:18;35522:2;35514:6;35510:15;35503:43;35318:235;:::o;35559:171::-;35699:23;35695:1;35687:6;35683:14;35676:47;35559:171;:::o;35736:224::-;35876:34;35872:1;35864:6;35860:14;35853:58;35945:7;35940:2;35932:6;35928:15;35921:32;35736:224;:::o;35966:114::-;;:::o;36086:222::-;36226:34;36222:1;36214:6;36210:14;36203:58;36295:5;36290:2;36282:6;36278:15;36271:30;36086:222;:::o;36314:163::-;36454:15;36450:1;36442:6;36438:14;36431:39;36314:163;:::o;36483:179::-;36623:31;36619:1;36611:6;36607:14;36600:55;36483:179;:::o;36668:178::-;36808:30;36804:1;36796:6;36792:14;36785:54;36668:178;:::o;36852:234::-;36992:34;36988:1;36980:6;36976:14;36969:58;37061:17;37056:2;37048:6;37044:15;37037:42;36852:234;:::o;37092:122::-;37165:24;37183:5;37165:24;:::i;:::-;37158:5;37155:35;37145:63;;37204:1;37201;37194:12;37145:63;37092:122;:::o;37220:116::-;37290:21;37305:5;37290:21;:::i;:::-;37283:5;37280:32;37270:60;;37326:1;37323;37316:12;37270:60;37220:116;:::o;37342:122::-;37415:24;37433:5;37415:24;:::i;:::-;37408:5;37405:35;37395:63;;37454:1;37451;37444:12;37395:63;37342:122;:::o;37470:120::-;37542:23;37559:5;37542:23;:::i;:::-;37535:5;37532:34;37522:62;;37580:1;37577;37570:12;37522:62;37470:120;:::o;37596:122::-;37669:24;37687:5;37669:24;:::i;:::-;37662:5;37659:35;37649:63;;37708:1;37705;37698:12;37649:63;37596:122;:::o

Swarm Source

ipfs://1045b669100e8d6b02f5c2ea63fedc7435745ee85e6424191d5f1eff6073b148
Block Transaction Difficulty Gas Used Reward
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.

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