Polygon Sponsored slots available. Book your slot here!
Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
[ Download CSV Export ]
Contract Name:
TheCryptoPlayers
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-04-28 */ // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol 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); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ 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); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed 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); } } // File: @openzeppelin/contracts/access/IAccessControl.sol // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ 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"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ 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"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ 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); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ 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); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ 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); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/access/AccessControl.sol // OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControl.sol) pragma solidity ^0.8.0; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view virtual override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } // File: @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** * @dev Handles the receipt of a single ERC1155 token type. This function is * called at the end of a `safeTransferFrom` after the balance has been updated. * * NOTE: To accept the transfer, this must return * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * (i.e. 0xf23a6e61, or its own function selector). * * @param operator The address which initiated the transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param id The ID of the token being transferred * @param value The amount of tokens being transferred * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** * @dev Handles the receipt of a multiple ERC1155 token types. This function * is called at the end of a `safeBatchTransferFrom` after the balances have * been updated. * * NOTE: To accept the transfer(s), this must return * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * (i.e. 0xbc197c81, or its own function selector). * * @param operator The address which initiated the batch transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param ids An array containing ids of each token being transferred (order and length must match values array) * @param values An array containing amounts of each token being transferred (order and length must match ids array) * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol) pragma solidity ^0.8.0; /** * @dev Interface of the optional ERC1155MetadataExtension interface, as defined * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. * * _Available since v3.1._ */ interface IERC1155MetadataURI is IERC1155 { /** * @dev Returns the URI for token type `id`. * * If the `\{id\}` substring is present in the URI, it must be replaced by * clients with the actual token type ID. */ function uri(uint256 id) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC1155/ERC1155.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/ERC1155.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the basic standard multi-token. * See https://eips.ethereum.org/EIPS/eip-1155 * Originally based on code by Enjin: https://github.com/enjin/erc-1155 * * _Available since v3.1._ */ contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { using Address for address; // Mapping from token ID to account balances mapping(uint256 => mapping(address => uint256)) private _balances; // Mapping from account to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json string private _uri; /** * @dev See {_setURI}. */ constructor(string memory uri_) { _setURI(uri_); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155).interfaceId || interfaceId == type(IERC1155MetadataURI).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC1155MetadataURI-uri}. * * This implementation returns the same URI for *all* token types. It relies * on the token type ID substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * Clients calling this function must replace the `\{id\}` substring with the * actual token type ID. */ function uri(uint256) public view virtual override returns (string memory) { return _uri; } /** * @dev See {IERC1155-balanceOf}. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { require(account != address(0), "ERC1155: balance query for the zero address"); return _balances[id][account]; } /** * @dev See {IERC1155-balanceOfBatch}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view virtual override returns (uint256[] memory) { require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { batchBalances[i] = balanceOf(accounts[i], ids[i]); } return batchBalances; } /** * @dev See {IERC1155-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC1155-isApprovedForAll}. */ function isApprovedForAll(address account, address operator) public view virtual override returns (bool) { return _operatorApprovals[account][operator]; } /** * @dev See {IERC1155-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not owner nor approved" ); _safeTransferFrom(from, to, id, amount, data); } /** * @dev See {IERC1155-safeBatchTransferFrom}. */ function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: transfer caller is not owner nor approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, ids, amounts, data); for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; } emit TransferBatch(operator, from, to, ids, amounts); _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data); } /** * @dev Sets a new URI for all token types, by relying on the token type ID * substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * By this mechanism, any occurrence of the `\{id\}` substring in either the * URI or any of the amounts in the JSON file at said URI will be replaced by * clients with the token type ID. * * For example, the `https://token-cdn-domain/\{id\}.json` URI would be * interpreted by clients as * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json` * for token type ID 0x4cce0. * * See {uri}. * * Because these URIs cannot be meaningfully represented by the {URI} event, * this function emits no events. */ function _setURI(string memory newuri) internal virtual { _uri = newuri; } /** * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); for (uint256 i = 0; i < ids.length; i++) { _balances[ids[i]][to] += amounts[i]; } emit TransferBatch(operator, address(0), to, ids, amounts); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } /** * @dev Destroys `amount` tokens of token type `id` from `from` * * Requirements: * * - `from` cannot be the zero address. * - `from` must have at least `amount` tokens of token type `id`. */ function _burn( address from, uint256 id, uint256 amount ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), ""); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, address(0), id, amount); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}. * * Requirements: * * - `ids` and `amounts` must have the same length. */ function _burnBatch( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Hook that is called before any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `id` and `amount` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 id, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) { if (response != IERC1155Receiver.onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns ( bytes4 response ) { if (response != IERC1155Receiver.onERC1155BatchReceived.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } } // File: @openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/ERC1155Burnable.sol) pragma solidity ^0.8.0; /** * @dev Extension of {ERC1155} that allows token holders to destroy both their * own tokens and those that they have been approved to use. * * _Available since v3.1._ */ abstract contract ERC1155Burnable is ERC1155 { function burn( address account, uint256 id, uint256 value ) public virtual { require( account == _msgSender() || isApprovedForAll(account, _msgSender()), "ERC1155: caller is not owner nor approved" ); _burn(account, id, value); } function burnBatch( address account, uint256[] memory ids, uint256[] memory values ) public virtual { require( account == _msgSender() || isApprovedForAll(account, _msgSender()), "ERC1155: caller is not owner nor approved" ); _burnBatch(account, ids, values); } } // File: contracts/TheCryptoPlayers.sol pragma solidity >=0.4.22 <0.9.0; contract TheCryptoPlayers is ERC1155, AccessControl, Ownable, ERC1155Burnable { struct Exists { bool exists; } mapping(uint256 => Exists) public idExists; uint256 public highestId = 0; string private baseURI; string public name; mapping(address => bool) public preApprovedContracts; event permissionGranted(address _incoming, bool _isAllowed); bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE"); bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); constructor() ERC1155("ipfs://QmcRVFQwFq9kRKYbrXcgs2fErFC3bE9FtsJKgS94pjp6mR/{id}.json") { _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); _grantRole(URI_SETTER_ROLE, msg.sender); _grantRole(MINTER_ROLE, msg.sender); setName("The CryptoPlayers"); } /** * Override isApprovedForAll to auto-approve OS's proxy contract */ function isApprovedForAll(address _owner, address _operator) public view override returns (bool isOperator) { // if OpenSea's ERC1155 Proxy Address is detected, auto-return true if (_operator == address(0x207Fa8Df3a17D96Ca7EA4f2893fcdCb78a304101)) { return true; } if (preApprovedContracts[_operator]) { return true; } // otherwise, use the default ERC1155.isApprovedForAll() return ERC1155.isApprovedForAll(_owner, _operator); } function setIsApprovedForUs(address _incoming, bool _isAllowed) public onlyRole(DEFAULT_ADMIN_ROLE) { preApprovedContracts[_incoming] = _isAllowed; emit permissionGranted(_incoming, _isAllowed); } function setMinterRole(address newMinter) public onlyRole(DEFAULT_ADMIN_ROLE) { _grantRole(MINTER_ROLE, newMinter); } function setURIRole(address newUriSetter) public onlyRole(DEFAULT_ADMIN_ROLE) { _grantRole(URI_SETTER_ROLE, newUriSetter); } function setURI(string memory _newuri) public onlyRole(URI_SETTER_ROLE) { _setURI(_newuri); } function setName(string memory _name) public onlyRole(DEFAULT_ADMIN_ROLE) { name = _name; } function mintBatch(uint256[] memory ids, uint256[] memory amounts) public onlyRole(MINTER_ROLE) { for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; if (id > highestId) { highestId = id; } if (!idExists[id].exists) idExists[id].exists = true; } _mintBatch(msg.sender, ids, amounts, ""); } function mint(uint256 id, uint256 amount) public onlyRole(MINTER_ROLE) { if (id > highestId) { highestId = id; } if (!idExists[id].exists) idExists[id].exists = true; _mint(msg.sender, id, amount, ""); } function getAllMintedIds() public view returns (uint256[] memory) { uint256[] memory ids = new uint256[](highestId); uint256 currentId = 0; for (uint256 i = 0; i <= highestId; i++) { if (idExists[i].exists) { ids[currentId++] = i; } } uint256[] memory cleaned = new uint256[](currentId); for (uint256 i = 0; i < cleaned.length; i++) { cleaned[i] = ids[i]; } return cleaned; } function getMyBalances() public view returns (uint256[] memory, uint256[] memory) { uint256[] memory allMintedIds = this.getAllMintedIds(); address[] memory repeatedMyAddress = new address[](allMintedIds.length); for (uint256 i = 0; i < repeatedMyAddress.length; i++) { repeatedMyAddress[i] = msg.sender; } return (allMintedIds, this.balanceOfBatch(repeatedMyAddress, allMintedIds)); } function supportsInterface(bytes4 interfaceId) public view override(ERC1155, AccessControl) returns (bool) { return super.supportsInterface(interfaceId); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_incoming","type":"address"},{"indexed":false,"internalType":"bool","name":"_isAllowed","type":"bool"}],"name":"permissionGranted","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"URI_SETTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllMintedIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMyBalances","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"highestId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idExists","outputs":[{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"isOperator","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"mintBatch","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":"address","name":"","type":"address"}],"name":"preApprovedContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"address","name":"_incoming","type":"address"},{"internalType":"bool","name":"_isAllowed","type":"bool"}],"name":"setIsApprovedForUs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMinter","type":"address"}],"name":"setMinterRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"setName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newuri","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newUriSetter","type":"address"}],"name":"setURIRole","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405260006006553480156200001657600080fd5b506040518060600160405280603f815260200162005d3d603f913962000042816200012860201b60201c565b5062000063620000576200014460201b60201c565b6200014c60201b60201c565b620000786000801b336200021260201b60201c565b620000aa7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c336200021260201b60201c565b620000dc7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336200021260201b60201c565b620001226040518060400160405280601181526020017f5468652043727970746f506c61796572730000000000000000000000000000008152506200030460201b60201c565b62000bc7565b806002908051906020019062000140929190620006d0565b5050565b600033905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200022482826200034660201b60201c565b620003005760016003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002a56200014460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000801b62000329816200031d6200014460201b60201c565b620003b160201b60201c565b816008908051906020019062000341929190620006d0565b505050565b60006003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b620003c382826200034660201b60201c565b6200047157620003f68173ffffffffffffffffffffffffffffffffffffffff1660146200047560201b620017381760201c565b620004118360001c60206200047560201b620017381760201c565b604051602001620004249291906200086d565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004689190620008af565b60405180910390fd5b5050565b6060600060028360026200048a919062000979565b6200049691906200091c565b67ffffffffffffffff811115620004b257620004b162000b0c565b5b6040519080825280601f01601f191660200182016040528015620004e55781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811062000520576200051f62000add565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811062000587576200058662000add565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002620005c9919062000979565b620005d591906200091c565b90505b60018111156200067f577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106200061b576200061a62000add565b5b1a60f81b82828151811062000635576200063462000add565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080620006779062000a1a565b9050620005d8565b5060008414620006c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006bd90620008d3565b60405180910390fd5b8091505092915050565b828054620006de9062000a49565b90600052602060002090601f0160209004810192826200070257600085556200074e565b82601f106200071d57805160ff19168380011785556200074e565b828001600101855582156200074e579182015b828111156200074d57825182559160200191906001019062000730565b5b5090506200075d919062000761565b5090565b5b808211156200077c57600081600090555060010162000762565b5090565b60006200078d82620008f5565b62000799818562000900565b9350620007ab818560208601620009e4565b620007b68162000b3b565b840191505092915050565b6000620007ce82620008f5565b620007da818562000911565b9350620007ec818560208601620009e4565b80840191505092915050565b60006200080760208362000900565b9150620008148262000b4c565b602082019050919050565b60006200082e60178362000911565b91506200083b8262000b75565b601782019050919050565b60006200085560118362000911565b9150620008628262000b9e565b601182019050919050565b60006200087a826200081f565b9150620008888285620007c1565b9150620008958262000846565b9150620008a38284620007c1565b91508190509392505050565b60006020820190508181036000830152620008cb818462000780565b905092915050565b60006020820190508181036000830152620008ee81620007f8565b9050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006200092982620009da565b91506200093683620009da565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200096e576200096d62000a7f565b5b828201905092915050565b60006200098682620009da565b91506200099383620009da565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620009cf57620009ce62000a7f565b5b828202905092915050565b6000819050919050565b60005b8381101562000a04578082015181840152602081019050620009e7565b8381111562000a14576000848401525b50505050565b600062000a2782620009da565b9150600082141562000a3e5762000a3d62000a7f565b5b600182039050919050565b6000600282049050600182168062000a6257607f821691505b6020821081141562000a795762000a7862000aae565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6151668062000bd76000396000f3fe608060405234801561001057600080fd5b50600436106102055760003560e01c80637f3457101161011a578063c47f0027116100ad578063e1ec01bb1161007c578063e1ec01bb146105d5578063e985e9c5146105f1578063f242432a14610621578063f2fde38b1461063d578063f5298aca1461065957610205565b8063c47f002714610563578063d351cfdc1461057f578063d53913931461059b578063d547741f146105b957610205565b8063a217fddf116100e9578063a217fddf146104da578063a22cb465146104f8578063a98048df14610514578063b8dce83b1461053357610205565b80637f345710146104525780638da5cb5b1461047057806391d148541461048e578063945d1229146104be57610205565b8063248a9ca31161019d5780634a9a091a1161016c5780634a9a091a146103c05780634e1273f4146103de578063551a64b01461040e5780636b20c4541461042c578063715018a61461044857610205565b8063248a9ca31461033c5780632eb2c2d61461036c5780632f2ff15d1461038857806336568abe146103a457610205565b80630af7a0f8116101d95780630af7a0f8146102a45780630b8a295a146102c05780630e89341c146102f05780631b2ef1ca1461032057610205565b8062fdd58e1461020a57806301ffc9a71461023a57806302fe53051461026a57806306fdde0314610286575b600080fd5b610224600480360381019061021f919061399c565b610675565b60405161023191906145af565b60405180910390f35b610254600480360381019061024f9190613bd5565b61073e565b6040516102619190614337565b60405180910390f35b610284600480360381019061027f9190613c2f565b610750565b005b61028e61078f565b60405161029b919061436d565b60405180910390f35b6102be60048036038101906102b9919061395c565b61081d565b005b6102da60048036038101906102d59190613c78565b6108c7565b6040516102e79190614337565b60405180910390f35b61030a60048036038101906103059190613c78565b6108f2565b604051610317919061436d565b60405180910390f35b61033a60048036038101906103359190613ca5565b610986565b005b61035660048036038101906103519190613b68565b610a42565b6040516103639190614352565b60405180910390f35b6103866004803603810190610381919061376b565b610a62565b005b6103a2600480360381019061039d9190613b95565b610b03565b005b6103be60048036038101906103b99190613b95565b610b2c565b005b6103c8610baf565b6040516103d591906142de565b60405180910390f35b6103f860048036038101906103f39190613a2f565b610d27565b60405161040591906142de565b60405180910390f35b610416610e40565b60405161042391906145af565b60405180910390f35b610446600480360381019061044191906138d1565b610e46565b005b610450610ee3565b005b61045a610f6b565b6040516104679190614352565b60405180910390f35b610478610f8f565b60405161048591906141a1565b60405180910390f35b6104a860048036038101906104a39190613b95565b610fb9565b6040516104b59190614337565b60405180910390f35b6104d860048036038101906104d391906136fe565b611024565b005b6104e2611067565b6040516104ef9190614352565b60405180910390f35b610512600480360381019061050d919061395c565b61106e565b005b61051c611084565b60405161052a929190614300565b60405180910390f35b61054d600480360381019061054891906136fe565b611265565b60405161055a9190614337565b60405180910390f35b61057d60048036038101906105789190613c2f565b611285565b005b61059960048036038101906105949190613af0565b6112b5565b005b6105a36113b1565b6040516105b09190614352565b60405180910390f35b6105d360048036038101906105ce9190613b95565b6113d5565b005b6105ef60048036038101906105ea91906136fe565b6113fe565b005b61060b6004803603810190610606919061372b565b611441565b6040516106189190614337565b60405180910390f35b61063b6004803603810190610636919061383a565b611502565b005b610657600480360381019061065291906136fe565b6115a3565b005b610673600480360381019061066e91906139dc565b61169b565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156106e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106dd906143ef565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061074982611974565b9050919050565b7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c6107828161077d6119ee565b6119f6565b61078b82611a93565b5050565b6008805461079c90614921565b80601f01602080910402602001604051908101604052809291908181526020018280546107c890614921565b80156108155780601f106107ea57610100808354040283529160200191610815565b820191906000526020600020905b8154815290600101906020018083116107f857829003601f168201915b505050505081565b6000801b6108328161082d6119ee565b6119f6565b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa35bff2cbbc18ec355be4d6f8f3649d64b8eb4184247253d1733e9aef0f4710883836040516108ba92919061427e565b60405180910390a1505050565b60056020528060005260406000206000915090508060000160009054906101000a900460ff16905081565b60606002805461090190614921565b80601f016020809104026020016040519081016040528092919081815260200182805461092d90614921565b801561097a5780601f1061094f5761010080835404028352916020019161097a565b820191906000526020600020905b81548152906001019060200180831161095d57829003601f168201915b50505050509050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66109b8816109b36119ee565b6119f6565b6006548311156109ca57826006819055505b6005600084815260200190815260200160002060000160009054906101000a900460ff16610a225760016005600085815260200190815260200160002060000160006101000a81548160ff0219169083151502179055505b610a3d33848460405180602001604052806000815250611aad565b505050565b600060036000838152602001908152602001600020600101549050919050565b610a6a6119ee565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610ab05750610aaf85610aaa6119ee565b611441565b5b610aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae69061448f565b60405180910390fd5b610afc8585858585611c43565b5050505050565b610b0c82610a42565b610b1d81610b186119ee565b6119f6565b610b278383611f57565b505050565b610b346119ee565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b989061458f565b60405180910390fd5b610bab8282612038565b5050565b6060600060065467ffffffffffffffff811115610bcf57610bce614a5a565b5b604051908082528060200260200182016040528015610bfd5781602001602082028036833780820191505090505b5090506000805b6006548111610c76576005600082815260200190815260200160002060000160009054906101000a900460ff1615610c635780838380610c4390614984565b945081518110610c5657610c55614a2b565b5b6020026020010181815250505b8080610c6e90614984565b915050610c04565b5060008167ffffffffffffffff811115610c9357610c92614a5a565b5b604051908082528060200260200182016040528015610cc15781602001602082028036833780820191505090505b50905060005b8151811015610d1d57838181518110610ce357610ce2614a2b565b5b6020026020010151828281518110610cfe57610cfd614a2b565b5b6020026020010181815250508080610d1590614984565b915050610cc7565b5080935050505090565b60608151835114610d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d649061452f565b60405180910390fd5b6000835167ffffffffffffffff811115610d8a57610d89614a5a565b5b604051908082528060200260200182016040528015610db85781602001602082028036833780820191505090505b50905060005b8451811015610e3557610e05858281518110610ddd57610ddc614a2b565b5b6020026020010151858381518110610df857610df7614a2b565b5b6020026020010151610675565b828281518110610e1857610e17614a2b565b5b60200260200101818152505080610e2e90614984565b9050610dbe565b508091505092915050565b60065481565b610e4e6119ee565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610e945750610e9383610e8e6119ee565b611441565b5b610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca9061444f565b60405180910390fd5b610ede83838361211a565b505050565b610eeb6119ee565b73ffffffffffffffffffffffffffffffffffffffff16610f09610f8f565b73ffffffffffffffffffffffffffffffffffffffff1614610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f56906144ef565b60405180910390fd5b610f6960006123cb565b565b7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c81565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b611039816110346119ee565b6119f6565b6110637f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a683611f57565b5050565b6000801b81565b6110806110796119ee565b8383612491565b5050565b60608060003073ffffffffffffffffffffffffffffffffffffffff16634a9a091a6040518163ffffffff1660e01b815260040160006040518083038186803b1580156110cf57600080fd5b505afa1580156110e3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061110c9190613aa7565b90506000815167ffffffffffffffff81111561112b5761112a614a5a565b5b6040519080825280602002602001820160405280156111595781602001602082028036833780820191505090505b50905060005b81518110156111c9573382828151811061117c5761117b614a2b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806111c190614984565b91505061115f565b50813073ffffffffffffffffffffffffffffffffffffffff16634e1273f483856040518363ffffffff1660e01b81526004016112069291906142a7565b60006040518083038186803b15801561121e57600080fd5b505afa158015611232573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061125b9190613aa7565b9350935050509091565b60096020528060005260406000206000915054906101000a900460ff1681565b6000801b61129a816112956119ee565b6119f6565b81600890805190602001906112b092919061330e565b505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66112e7816112e26119ee565b6119f6565b60005b835181101561139057600084828151811061130857611307614a2b565b5b6020026020010151905060065481111561132457806006819055505b6005600082815260200190815260200160002060000160009054906101000a900460ff1661137c5760016005600083815260200190815260200160002060000160006101000a81548160ff0219169083151502179055505b50808061138890614984565b9150506112ea565b506113ac338484604051806020016040528060008152506125fe565b505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6113de82610a42565b6113ef816113ea6119ee565b6119f6565b6113f98383612038565b505050565b6000801b6114138161140e6119ee565b6119f6565b61143d7f7804d923f43a17d325d77e781528e0793b2edd9890ab45fc64efd7b4b427744c83611f57565b5050565b600073207fa8df3a17d96ca7ea4f2893fcdcb78a30410173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561149457600190506114fc565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114ef57600190506114fc565b6114f9838361281c565b90505b92915050565b61150a6119ee565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611550575061154f8561154a6119ee565b611441565b5b61158f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115869061444f565b60405180910390fd5b61159c85858585856128b0565b5050505050565b6115ab6119ee565b73ffffffffffffffffffffffffffffffffffffffff166115c9610f8f565b73ffffffffffffffffffffffffffffffffffffffff161461161f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611616906144ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561168f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116869061440f565b60405180910390fd5b611698816123cb565b50565b6116a36119ee565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806116e957506116e8836116e36119ee565b611441565b5b611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f9061444f565b60405180910390fd5b611733838383612b32565b505050565b60606000600283600261174b91906147dd565b6117559190614787565b67ffffffffffffffff81111561176e5761176d614a5a565b5b6040519080825280601f01601f1916602001820160405280156117a05781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106117d8576117d7614a2b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061183c5761183b614a2b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261187c91906147dd565b6118869190614787565b90505b6001811115611926577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106118c8576118c7614a2b565b5b1a60f81b8282815181106118df576118de614a2b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061191f906148f7565b9050611889565b506000841461196a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611961906143af565b60405180910390fd5b8091505092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119e757506119e682612d4f565b5b9050919050565b600033905090565b611a008282610fb9565b611a8f57611a258173ffffffffffffffffffffffffffffffffffffffff166014611738565b611a338360001c6020611738565b604051602001611a44929190614167565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a86919061436d565b60405180910390fd5b5050565b8060029080519060200190611aa992919061330e565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b149061456f565b60405180910390fd5b6000611b276119ee565b9050611b4881600087611b3988612e31565b611b4288612e31565b87612eab565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ba79190614787565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051611c259291906145ca565b60405180910390a4611c3c81600087878787612eb3565b5050505050565b8151835114611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e9061454f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee9061446f565b60405180910390fd5b6000611d016119ee565b9050611d11818787878787612eab565b60005b8451811015611ec2576000858281518110611d3257611d31614a2b565b5b602002602001015190506000858381518110611d5157611d50614a2b565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de9906144cf565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ea79190614787565b9250508190555050505080611ebb90614984565b9050611d14565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611f39929190614300565b60405180910390a4611f4f81878787878761309a565b505050505050565b611f618282610fb9565b6120345760016003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611fd96119ee565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6120428282610fb9565b156121165760006003600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506120bb6119ee565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561218a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612181906144af565b60405180910390fd5b80518251146121ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c59061454f565b60405180910390fd5b60006121d86119ee565b90506121f881856000868660405180602001604052806000815250612eab565b60005b835181101561234557600084828151811061221957612218614a2b565b5b60200260200101519050600084838151811061223857612237614a2b565b5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d09061442f565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050808061233d90614984565b9150506121fb565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516123bd929190614300565b60405180910390a450505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f79061450f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516125f19190614337565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561266e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126659061456f565b60405180910390fd5b81518351146126b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a99061454f565b60405180910390fd5b60006126bc6119ee565b90506126cd81600087878787612eab565b60005b8451811015612786578381815181106126ec576126eb614a2b565b5b602002602001015160008087848151811061270a57612709614a2b565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461276c9190614787565b92505081905550808061277e90614984565b9150506126d0565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516127fe929190614300565b60405180910390a46128158160008787878761309a565b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129179061446f565b60405180910390fd5b600061292a6119ee565b905061294a81878761293b88612e31565b61294488612e31565b87612eab565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156129e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d8906144cf565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a969190614787565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051612b139291906145ca565b60405180910390a4612b29828888888888612eb3565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b99906144af565b60405180910390fd5b6000612bac6119ee565b9050612bdc81856000612bbe87612e31565b612bc787612e31565b60405180602001604052806000815250612eab565b600080600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6a9061442f565b60405180910390fd5b82810360008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612d409291906145ca565b60405180910390a45050505050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612e1a57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612e2a5750612e2982613281565b5b9050919050565b60606000600167ffffffffffffffff811115612e5057612e4f614a5a565b5b604051908082528060200260200182016040528015612e7e5781602001602082028036833780820191505090505b5090508281600081518110612e9657612e95614a2b565b5b60200260200101818152505080915050919050565b505050505050565b612ed28473ffffffffffffffffffffffffffffffffffffffff166132eb565b15613092578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612f18959493929190614224565b602060405180830381600087803b158015612f3257600080fd5b505af1925050508015612f6357506040513d601f19601f82011682018060405250810190612f609190613c02565b60015b61300957612f6f614a89565b806308c379a01415612fcc5750612f84615027565b80612f8f5750612fce565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc3919061436d565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130009061438f565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614613090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613087906143cf565b60405180910390fd5b505b505050505050565b6130b98473ffffffffffffffffffffffffffffffffffffffff166132eb565b15613279578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016130ff9594939291906141bc565b602060405180830381600087803b15801561311957600080fd5b505af192505050801561314a57506040513d601f19601f820116820180604052508101906131479190613c02565b60015b6131f057613156614a89565b806308c379a014156131b3575061316b615027565b8061317657506131b5565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131aa919061436d565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e79061438f565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614613277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326e906143cf565b60405180910390fd5b505b505050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b82805461331a90614921565b90600052602060002090601f01602090048101928261333c5760008555613383565b82601f1061335557805160ff1916838001178555613383565b82800160010185558215613383579182015b82811115613382578251825591602001919060010190613367565b5b5090506133909190613394565b5090565b5b808211156133ad576000816000905550600101613395565b5090565b60006133c46133bf84614618565b6145f3565b905080838252602082019050828560208602820111156133e7576133e6614ab0565b5b60005b8581101561341757816133fd8882613585565b8452602084019350602083019250506001810190506133ea565b5050509392505050565b600061343461342f84614644565b6145f3565b9050808382526020820190508285602086028201111561345757613456614ab0565b5b60005b85811015613487578161346d88826136d4565b84526020840193506020830192505060018101905061345a565b5050509392505050565b60006134a461349f84614644565b6145f3565b905080838252602082019050828560208602820111156134c7576134c6614ab0565b5b60005b858110156134f757816134dd88826136e9565b8452602084019350602083019250506001810190506134ca565b5050509392505050565b600061351461350f84614670565b6145f3565b9050828152602081018484840111156135305761352f614ab5565b5b61353b8482856148b5565b509392505050565b6000613556613551846146a1565b6145f3565b90508281526020810184848401111561357257613571614ab5565b5b61357d8482856148b5565b509392505050565b600081359050613594816150bd565b92915050565b600082601f8301126135af576135ae614aab565b5b81356135bf8482602086016133b1565b91505092915050565b600082601f8301126135dd576135dc614aab565b5b81356135ed848260208601613421565b91505092915050565b600082601f83011261360b5761360a614aab565b5b815161361b848260208601613491565b91505092915050565b600081359050613633816150d4565b92915050565b600081359050613648816150eb565b92915050565b60008135905061365d81615102565b92915050565b60008151905061367281615102565b92915050565b600082601f83011261368d5761368c614aab565b5b813561369d848260208601613501565b91505092915050565b600082601f8301126136bb576136ba614aab565b5b81356136cb848260208601613543565b91505092915050565b6000813590506136e381615119565b92915050565b6000815190506136f881615119565b92915050565b60006020828403121561371457613713614abf565b5b600061372284828501613585565b91505092915050565b6000806040838503121561374257613741614abf565b5b600061375085828601613585565b925050602061376185828601613585565b9150509250929050565b600080600080600060a0868803121561378757613786614abf565b5b600061379588828901613585565b95505060206137a688828901613585565b945050604086013567ffffffffffffffff8111156137c7576137c6614aba565b5b6137d3888289016135c8565b935050606086013567ffffffffffffffff8111156137f4576137f3614aba565b5b613800888289016135c8565b925050608086013567ffffffffffffffff81111561382157613820614aba565b5b61382d88828901613678565b9150509295509295909350565b600080600080600060a0868803121561385657613855614abf565b5b600061386488828901613585565b955050602061387588828901613585565b9450506040613886888289016136d4565b9350506060613897888289016136d4565b925050608086013567ffffffffffffffff8111156138b8576138b7614aba565b5b6138c488828901613678565b9150509295509295909350565b6000806000606084860312156138ea576138e9614abf565b5b60006138f886828701613585565b935050602084013567ffffffffffffffff81111561391957613918614aba565b5b613925868287016135c8565b925050604084013567ffffffffffffffff81111561394657613945614aba565b5b613952868287016135c8565b9150509250925092565b6000806040838503121561397357613972614abf565b5b600061398185828601613585565b925050602061399285828601613624565b9150509250929050565b600080604083850312156139b3576139b2614abf565b5b60006139c185828601613585565b92505060206139d2858286016136d4565b9150509250929050565b6000806000606084860312156139f5576139f4614abf565b5b6000613a0386828701613585565b9350506020613a14868287016136d4565b9250506040613a25868287016136d4565b9150509250925092565b60008060408385031215613a4657613a45614abf565b5b600083013567ffffffffffffffff811115613a6457613a63614aba565b5b613a708582860161359a565b925050602083013567ffffffffffffffff811115613a9157613a90614aba565b5b613a9d858286016135c8565b9150509250929050565b600060208284031215613abd57613abc614abf565b5b600082015167ffffffffffffffff811115613adb57613ada614aba565b5b613ae7848285016135f6565b91505092915050565b60008060408385031215613b0757613b06614abf565b5b600083013567ffffffffffffffff811115613b2557613b24614aba565b5b613b31858286016135c8565b925050602083013567ffffffffffffffff811115613b5257613b51614aba565b5b613b5e858286016135c8565b9150509250929050565b600060208284031215613b7e57613b7d614abf565b5b6000613b8c84828501613639565b91505092915050565b60008060408385031215613bac57613bab614abf565b5b6000613bba85828601613639565b9250506020613bcb85828601613585565b9150509250929050565b600060208284031215613beb57613bea614abf565b5b6000613bf98482850161364e565b91505092915050565b600060208284031215613c1857613c17614abf565b5b6000613c2684828501613663565b91505092915050565b600060208284031215613c4557613c44614abf565b5b600082013567ffffffffffffffff811115613c6357613c62614aba565b5b613c6f848285016136a6565b91505092915050565b600060208284031215613c8e57613c8d614abf565b5b6000613c9c848285016136d4565b91505092915050565b60008060408385031215613cbc57613cbb614abf565b5b6000613cca858286016136d4565b9250506020613cdb858286016136d4565b9150509250929050565b6000613cf18383613d15565b60208301905092915050565b6000613d098383614149565b60208301905092915050565b613d1e81614837565b82525050565b613d2d81614837565b82525050565b6000613d3e826146f2565b613d488185614738565b9350613d53836146d2565b8060005b83811015613d84578151613d6b8882613ce5565b9750613d768361471e565b925050600181019050613d57565b5085935050505092915050565b6000613d9c826146fd565b613da68185614749565b9350613db1836146e2565b8060005b83811015613de2578151613dc98882613cfd565b9750613dd48361472b565b925050600181019050613db5565b5085935050505092915050565b613df881614849565b82525050565b613e0781614855565b82525050565b6000613e1882614708565b613e22818561475a565b9350613e328185602086016148c4565b613e3b81614ac4565b840191505092915050565b6000613e5182614713565b613e5b818561476b565b9350613e6b8185602086016148c4565b613e7481614ac4565b840191505092915050565b6000613e8a82614713565b613e94818561477c565b9350613ea48185602086016148c4565b80840191505092915050565b6000613ebd60348361476b565b9150613ec882614ae2565b604082019050919050565b6000613ee060208361476b565b9150613eeb82614b31565b602082019050919050565b6000613f0360288361476b565b9150613f0e82614b5a565b604082019050919050565b6000613f26602b8361476b565b9150613f3182614ba9565b604082019050919050565b6000613f4960268361476b565b9150613f5482614bf8565b604082019050919050565b6000613f6c60248361476b565b9150613f7782614c47565b604082019050919050565b6000613f8f60298361476b565b9150613f9a82614c96565b604082019050919050565b6000613fb260258361476b565b9150613fbd82614ce5565b604082019050919050565b6000613fd560328361476b565b9150613fe082614d34565b604082019050919050565b6000613ff860238361476b565b915061400382614d83565b604082019050919050565b600061401b602a8361476b565b915061402682614dd2565b604082019050919050565b600061403e60208361476b565b915061404982614e21565b602082019050919050565b600061406160178361477c565b915061406c82614e4a565b601782019050919050565b600061408460298361476b565b915061408f82614e73565b604082019050919050565b60006140a760298361476b565b91506140b282614ec2565b604082019050919050565b60006140ca60288361476b565b91506140d582614f11565b604082019050919050565b60006140ed60218361476b565b91506140f882614f60565b604082019050919050565b600061411060118361477c565b915061411b82614faf565b601182019050919050565b6000614133602f8361476b565b915061413e82614fd8565b604082019050919050565b614152816148ab565b82525050565b614161816148ab565b82525050565b600061417282614054565b915061417e8285613e7f565b915061418982614103565b91506141958284613e7f565b91508190509392505050565b60006020820190506141b66000830184613d24565b92915050565b600060a0820190506141d16000830188613d24565b6141de6020830187613d24565b81810360408301526141f08186613d91565b905081810360608301526142048185613d91565b905081810360808301526142188184613e0d565b90509695505050505050565b600060a0820190506142396000830188613d24565b6142466020830187613d24565b6142536040830186614158565b6142606060830185614158565b81810360808301526142728184613e0d565b90509695505050505050565b60006040820190506142936000830185613d24565b6142a06020830184613def565b9392505050565b600060408201905081810360008301526142c18185613d33565b905081810360208301526142d58184613d91565b90509392505050565b600060208201905081810360008301526142f88184613d91565b905092915050565b6000604082019050818103600083015261431a8185613d91565b9050818103602083015261432e8184613d91565b90509392505050565b600060208201905061434c6000830184613def565b92915050565b60006020820190506143676000830184613dfe565b92915050565b600060208201905081810360008301526143878184613e46565b905092915050565b600060208201905081810360008301526143a881613eb0565b9050919050565b600060208201905081810360008301526143c881613ed3565b9050919050565b600060208201905081810360008301526143e881613ef6565b9050919050565b6000602082019050818103600083015261440881613f19565b9050919050565b6000602082019050818103600083015261442881613f3c565b9050919050565b6000602082019050818103600083015261444881613f5f565b9050919050565b6000602082019050818103600083015261446881613f82565b9050919050565b6000602082019050818103600083015261448881613fa5565b9050919050565b600060208201905081810360008301526144a881613fc8565b9050919050565b600060208201905081810360008301526144c881613feb565b9050919050565b600060208201905081810360008301526144e88161400e565b9050919050565b6000602082019050818103600083015261450881614031565b9050919050565b6000602082019050818103600083015261452881614077565b9050919050565b600060208201905081810360008301526145488161409a565b9050919050565b60006020820190508181036000830152614568816140bd565b9050919050565b60006020820190508181036000830152614588816140e0565b9050919050565b600060208201905081810360008301526145a881614126565b9050919050565b60006020820190506145c46000830184614158565b92915050565b60006040820190506145df6000830185614158565b6145ec6020830184614158565b9392505050565b60006145fd61460e565b90506146098282614953565b919050565b6000604051905090565b600067ffffffffffffffff82111561463357614632614a5a565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561465f5761465e614a5a565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561468b5761468a614a5a565b5b61469482614ac4565b9050602081019050919050565b600067ffffffffffffffff8211156146bc576146bb614a5a565b5b6146c582614ac4565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614792826148ab565b915061479d836148ab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147d2576147d16149cd565b5b828201905092915050565b60006147e8826148ab565b91506147f3836148ab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561482c5761482b6149cd565b5b828202905092915050565b60006148428261488b565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156148e25780820151818401526020810190506148c7565b838111156148f1576000848401525b50505050565b6000614902826148ab565b91506000821415614916576149156149cd565b5b600182039050919050565b6000600282049050600182168061493957607f821691505b6020821081141561494d5761494c6149fc565b5b50919050565b61495c82614ac4565b810181811067ffffffffffffffff8211171561497b5761497a614a5a565b5b80604052505050565b600061498f826148ab565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156149c2576149c16149cd565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115614aa85760046000803e614aa5600051614ad5565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600060443d1015615037576150ba565b61503f61460e565b60043d036004823e80513d602482011167ffffffffffffffff821117156150675750506150ba565b808201805167ffffffffffffffff81111561508557505050506150ba565b80602083010160043d0385018111156150a25750505050506150ba565b6150b182602001850186614953565b82955050505050505b90565b6150c681614837565b81146150d157600080fd5b50565b6150dd81614849565b81146150e857600080fd5b50565b6150f481614855565b81146150ff57600080fd5b50565b61510b8161485f565b811461511657600080fd5b50565b615122816148ab565b811461512d57600080fd5b5056fea26469706673582212202df25bef13511d5fdc99deefa47896bc0aef5d5d0215c80c083b7dfbc7dbc32e64736f6c63430008070033697066733a2f2f516d6352564651774671396b524b59627258636773326645724643336245394674734a4b67533934706a70366d522f7b69647d2e6a736f6e
Deployed ByteCode Sourcemap
50830:3829:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36118:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;54470:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52746:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51062:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52223:222;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50955:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35862:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53333:233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23055:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38057:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23448:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24496:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53572:448;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36515:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51002:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50381:353;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7771:103;;;:::i;:::-;;51206:70;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7120:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21924:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52451:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21015:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37112:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;54026:438;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;51085:52;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52853:99;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52958:369;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51281:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23840:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52595:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51713:504;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37579:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8029:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50052:321;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36118:231;36204:7;36251:1;36232:21;;:7;:21;;;;36224:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;36319:9;:13;36329:2;36319:13;;;;;;;;;;;:22;36333:7;36319:22;;;;;;;;;;;;;;;;36312:29;;36118:231;;;;:::o;54470:186::-;54591:4;54614:36;54638:11;54614:23;:36::i;:::-;54607:43;;54470:186;;;:::o;52746:101::-;51248:28;21506:30;21517:4;21523:12;:10;:12::i;:::-;21506:10;:30::i;:::-;52825:16:::1;52833:7;52825;:16::i;:::-;52746:101:::0;;:::o;51062:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;52223:222::-;21060:4;52313:18;;21506:30;21517:4;21523:12;:10;:12::i;:::-;21506:10;:30::i;:::-;52377:10:::1;52343:20;:31;52364:9;52343:31;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;52399:40;52417:9;52428:10;52399:40;;;;;;;:::i;:::-;;;;;;;;52223:222:::0;;;:::o;50955:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;35862:105::-;35922:13;35955:4;35948:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35862:105;;;:::o;53333:233::-;51319:24;21506:30;21517:4;21523:12;:10;:12::i;:::-;21506:10;:30::i;:::-;53420:9:::1;;53415:2;:14;53411:51;;;53452:2;53440:9;:14;;;;53411:51;53473:8;:12;53482:2;53473:12;;;;;;;;;;;:19;;;;;;;;;;;;53468:52;;53516:4;53494:8;:12;53503:2;53494:12;;;;;;;;;;;:19;;;:26;;;;;;;;;;;;;;;;;;53468:52;53527:33;53533:10;53545:2;53549:6;53527:33;;;;;;;;;;;::::0;:5:::1;:33::i;:::-;53333:233:::0;;;:::o;23055:131::-;23129:7;23156:6;:12;23163:4;23156:12;;;;;;;;;;;:22;;;23149:29;;23055:131;;;:::o;38057:442::-;38298:12;:10;:12::i;:::-;38290:20;;:4;:20;;;:60;;;;38314:36;38331:4;38337:12;:10;:12::i;:::-;38314:16;:36::i;:::-;38290:60;38268:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;38439:52;38462:4;38468:2;38472:3;38477:7;38486:4;38439:22;:52::i;:::-;38057:442;;;;;:::o;23448:147::-;23531:18;23544:4;23531:12;:18::i;:::-;21506:30;21517:4;21523:12;:10;:12::i;:::-;21506:10;:30::i;:::-;23562:25:::1;23573:4;23579:7;23562:10;:25::i;:::-;23448:147:::0;;;:::o;24496:218::-;24603:12;:10;:12::i;:::-;24592:23;;:7;:23;;;24584:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;24680:26;24692:4;24698:7;24680:11;:26::i;:::-;24496:218;;:::o;53572:448::-;53620:16;53645:20;53682:9;;53668:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53645:47;;53699:17;53732:9;53727:122;53752:9;;53747:1;:14;53727:122;;53781:8;:11;53790:1;53781:11;;;;;;;;;;;:18;;;;;;;;;;;;53777:65;;;53831:1;53812:3;53816:11;;;;;:::i;:::-;;;53812:16;;;;;;;;:::i;:::-;;;;;;;:20;;;;;53777:65;53763:3;;;;;:::i;:::-;;;;53727:122;;;;53855:24;53896:9;53882:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53855:51;;53918:9;53913:81;53937:7;:14;53933:1;:18;53913:81;;;53980:3;53984:1;53980:6;;;;;;;;:::i;:::-;;;;;;;;53967:7;53975:1;53967:10;;;;;;;;:::i;:::-;;;;;;;:19;;;;;53953:3;;;;;:::i;:::-;;;;53913:81;;;;54007:7;54000:14;;;;;53572:448;:::o;36515:524::-;36671:16;36732:3;:10;36713:8;:15;:29;36705:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;36801:30;36848:8;:15;36834:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36801:63;;36882:9;36877:122;36901:8;:15;36897:1;:19;36877:122;;;36957:30;36967:8;36976:1;36967:11;;;;;;;;:::i;:::-;;;;;;;;36980:3;36984:1;36980:6;;;;;;;;:::i;:::-;;;;;;;;36957:9;:30::i;:::-;36938:13;36952:1;36938:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;36918:3;;;;:::i;:::-;;;36877:122;;;;37018:13;37011:20;;;36515:524;;;;:::o;51002:28::-;;;;:::o;50381:353::-;50557:12;:10;:12::i;:::-;50546:23;;:7;:23;;;:66;;;;50573:39;50590:7;50599:12;:10;:12::i;:::-;50573:16;:39::i;:::-;50546:66;50524:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;50694:32;50705:7;50714:3;50719:6;50694:10;:32::i;:::-;50381:353;;;:::o;7771:103::-;7351:12;:10;:12::i;:::-;7340:23;;:7;:5;:7::i;:::-;:23;;;7332:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7836:30:::1;7863:1;7836:18;:30::i;:::-;7771:103::o:0;51206:70::-;51248:28;51206:70;:::o;7120:87::-;7166:7;7193:6;;;;;;;;;;;7186:13;;7120:87;:::o;21924:147::-;22010:4;22034:6;:12;22041:4;22034:12;;;;;;;;;;;:20;;:29;22055:7;22034:29;;;;;;;;;;;;;;;;;;;;;;;;;22027:36;;21924:147;;;;:::o;52451:138::-;21060:4;52519:18;;21506:30;21517:4;21523:12;:10;:12::i;:::-;21506:10;:30::i;:::-;52549:34:::1;51319:24;52573:9;52549:10;:34::i;:::-;52451:138:::0;;:::o;21015:49::-;21060:4;21015:49;;;:::o;37112:155::-;37207:52;37226:12;:10;:12::i;:::-;37240:8;37250;37207:18;:52::i;:::-;37112:155;;:::o;54026:438::-;54087:16;54105;54133:29;54165:4;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54133:54;;54194:34;54245:12;:19;54231:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54194:71;;54277:9;54272:105;54296:17;:24;54292:1;:28;54272:105;;;54359:10;54336:17;54354:1;54336:20;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;54322:3;;;;;:::i;:::-;;;;54272:105;;;;54391:12;54405:4;:19;;;54425:17;54444:12;54405:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54383:75;;;;;;54026:438;;:::o;51085:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;52853:99::-;21060:4;52907:18;;21506:30;21517:4;21523:12;:10;:12::i;:::-;21506:10;:30::i;:::-;52941:5:::1;52934:4;:12;;;;;;;;;;;;:::i;:::-;;52853:99:::0;;:::o;52958:369::-;51319:24;21506:30;21517:4;21523:12;:10;:12::i;:::-;21506:10;:30::i;:::-;53079:9:::1;53074:201;53098:3;:10;53094:1;:14;53074:201;;;53124:10;53137:3;53141:1;53137:6;;;;;;;;:::i;:::-;;;;;;;;53124:19;;53161:9;;53156:2;:14;53152:55;;;53195:2;53183:9;:14;;;;53152:55;53220:8;:12;53229:2;53220:12;;;;;;;;;;;:19;;;;;;;;;;;;53215:52;;53263:4;53241:8;:12;53250:2;53241:12;;;;;;;;;;;:19;;;:26;;;;;;;;;;;;;;;;;;53215:52;53115:160;53110:3;;;;;:::i;:::-;;;;53074:201;;;;53281:40;53292:10;53304:3;53309:7;53281:40;;;;;;;;;;;::::0;:10:::1;:40::i;:::-;52958:369:::0;;;:::o;51281:62::-;51319:24;51281:62;:::o;23840:149::-;23924:18;23937:4;23924:12;:18::i;:::-;21506:30;21517:4;21523:12;:10;:12::i;:::-;21506:10;:30::i;:::-;23955:26:::1;23967:4;23973:7;23955:11;:26::i;:::-;23840:149:::0;;;:::o;52595:145::-;21060:4;52663:18;;21506:30;21517:4;21523:12;:10;:12::i;:::-;21506:10;:30::i;:::-;52693:41:::1;51248:28;52721:12;52693:10;:41::i;:::-;52595:145:::0;;:::o;51713:504::-;51824:15;51949:42;51928:64;;:9;:64;;;51924:98;;;52010:4;52003:11;;;;51924:98;52032:20;:31;52053:9;52032:31;;;;;;;;;;;;;;;;;;;;;;;;;52028:65;;;52081:4;52074:11;;;;52028:65;52168:43;52193:6;52201:9;52168:24;:43::i;:::-;52161:50;;51713:504;;;;;:::o;37579:401::-;37795:12;:10;:12::i;:::-;37787:20;;:4;:20;;;:60;;;;37811:36;37828:4;37834:12;:10;:12::i;:::-;37811:16;:36::i;:::-;37787:60;37765:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;37927:45;37945:4;37951:2;37955;37959:6;37967:4;37927:17;:45::i;:::-;37579:401;;;;;:::o;8029:201::-;7351:12;:10;:12::i;:::-;7340:23;;:7;:5;:7::i;:::-;:23;;;7332:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8138:1:::1;8118:22;;:8;:22;;;;8110:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8194:28;8213:8;8194:18;:28::i;:::-;8029:201:::0;:::o;50052:321::-;50203:12;:10;:12::i;:::-;50192:23;;:7;:23;;;:66;;;;50219:39;50236:7;50245:12;:10;:12::i;:::-;50219:16;:39::i;:::-;50192:66;50170:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;50340:25;50346:7;50355:2;50359:5;50340;:25::i;:::-;50052:321;;;:::o;1666:451::-;1741:13;1767:19;1812:1;1803:6;1799:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1789:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1767:47;;1825:15;:6;1832:1;1825:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1851;:6;1858:1;1851:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1882:9;1907:1;1898:6;1894:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1882:26;;1877:135;1914:1;1910;:5;1877:135;;;1949:12;1970:3;1962:5;:11;1949:25;;;;;;;:::i;:::-;;;;;1937:6;1944:1;1937:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;1999:1;1989:11;;;;;1917:3;;;;:::i;:::-;;;1877:135;;;;2039:1;2030:5;:10;2022:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2102:6;2088:21;;;1666:451;;;;:::o;21628:204::-;21713:4;21752:32;21737:47;;;:11;:47;;;;:87;;;;21788:36;21812:11;21788:23;:36::i;:::-;21737:87;21730:94;;21628:204;;;:::o;5844:98::-;5897:7;5924:10;5917:17;;5844:98;:::o;22361:505::-;22450:22;22458:4;22464:7;22450;:22::i;:::-;22445:414;;22638:41;22666:7;22638:41;;22676:2;22638:19;:41::i;:::-;22752:38;22780:4;22772:13;;22787:2;22752:19;:38::i;:::-;22543:270;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22489:358;;;;;;;;;;;:::i;:::-;;;;;;;;22445:414;22361:505;;:::o;42059:88::-;42133:6;42126:4;:13;;;;;;;;;;;;:::i;:::-;;42059:88;:::o;42533:569::-;42700:1;42686:16;;:2;:16;;;;42678:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;42753:16;42772:12;:10;:12::i;:::-;42753:31;;42797:102;42818:8;42836:1;42840:2;42844:21;42862:2;42844:17;:21::i;:::-;42867:25;42885:6;42867:17;:25::i;:::-;42894:4;42797:20;:102::i;:::-;42933:6;42912:9;:13;42922:2;42912:13;;;;;;;;;;;:17;42926:2;42912:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;42992:2;42955:52;;42988:1;42955:52;;42970:8;42955:52;;;42996:2;43000:6;42955:52;;;;;;;:::i;:::-;;;;;;;;43020:74;43051:8;43069:1;43073:2;43077;43081:6;43089:4;43020:30;:74::i;:::-;42667:435;42533:569;;;;:::o;40141:1074::-;40368:7;:14;40354:3;:10;:28;40346:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;40460:1;40446:16;;:2;:16;;;;40438:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;40517:16;40536:12;:10;:12::i;:::-;40517:31;;40561:60;40582:8;40592:4;40598:2;40602:3;40607:7;40616:4;40561:20;:60::i;:::-;40639:9;40634:421;40658:3;:10;40654:1;:14;40634:421;;;40690:10;40703:3;40707:1;40703:6;;;;;;;;:::i;:::-;;;;;;;;40690:19;;40724:14;40741:7;40749:1;40741:10;;;;;;;;:::i;:::-;;;;;;;;40724:27;;40768:19;40790:9;:13;40800:2;40790:13;;;;;;;;;;;:19;40804:4;40790:19;;;;;;;;;;;;;;;;40768:41;;40847:6;40832:11;:21;;40824:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;40980:6;40966:11;:20;40944:9;:13;40954:2;40944:13;;;;;;;;;;;:19;40958:4;40944:19;;;;;;;;;;;;;;;:42;;;;41037:6;41016:9;:13;41026:2;41016:13;;;;;;;;;;;:17;41030:2;41016:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;40675:380;;;40670:3;;;;:::i;:::-;;;40634:421;;;;41102:2;41072:47;;41096:4;41072:47;;41086:8;41072:47;;;41106:3;41111:7;41072:47;;;;;;;:::i;:::-;;;;;;;;41132:75;41168:8;41178:4;41184:2;41188:3;41193:7;41202:4;41132:35;:75::i;:::-;40335:880;40141:1074;;;;;:::o;25997:238::-;26081:22;26089:4;26095:7;26081;:22::i;:::-;26076:152;;26152:4;26120:6;:12;26127:4;26120:12;;;;;;;;;;;:20;;:29;26141:7;26120:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;26203:12;:10;:12::i;:::-;26176:40;;26194:7;26176:40;;26188:4;26176:40;;;;;;;;;;26076:152;25997:238;;:::o;26367:239::-;26451:22;26459:4;26465:7;26451;:22::i;:::-;26447:152;;;26522:5;26490:6;:12;26497:4;26490:12;;;;;;;;;;;:20;;:29;26511:7;26490:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;26574:12;:10;:12::i;:::-;26547:40;;26565:7;26547:40;;26559:4;26547:40;;;;;;;;;;26447:152;26367:239;;:::o;45294:891::-;45462:1;45446:18;;:4;:18;;;;45438:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;45537:7;:14;45523:3;:10;:28;45515:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;45609:16;45628:12;:10;:12::i;:::-;45609:31;;45653:66;45674:8;45684:4;45698:1;45702:3;45707:7;45653:66;;;;;;;;;;;;:20;:66::i;:::-;45737:9;45732:373;45756:3;:10;45752:1;:14;45732:373;;;45788:10;45801:3;45805:1;45801:6;;;;;;;;:::i;:::-;;;;;;;;45788:19;;45822:14;45839:7;45847:1;45839:10;;;;;;;;:::i;:::-;;;;;;;;45822:27;;45866:19;45888:9;:13;45898:2;45888:13;;;;;;;;;;;:19;45902:4;45888:19;;;;;;;;;;;;;;;;45866:41;;45945:6;45930:11;:21;;45922:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;46072:6;46058:11;:20;46036:9;:13;46046:2;46036:13;;;;;;;;;;;:19;46050:4;46036:19;;;;;;;;;;;;;;;:42;;;;45773:332;;;45768:3;;;;;:::i;:::-;;;;45732:373;;;;46160:1;46122:55;;46146:4;46122:55;;46136:8;46122:55;;;46164:3;46169:7;46122:55;;;;;;;:::i;:::-;;;;;;;;45427:758;45294:891;;;:::o;8390:191::-;8464:16;8483:6;;;;;;;;;;;8464:25;;8509:8;8500:6;;:17;;;;;;;;;;;;;;;;;;8564:8;8533:40;;8554:8;8533:40;;;;;;;;;;;;8453:128;8390:191;:::o;46327:331::-;46482:8;46473:17;;:5;:17;;;;46465:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;46585:8;46547:18;:25;46566:5;46547:25;;;;;;;;;;;;;;;:35;46573:8;46547:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;46631:8;46609:41;;46624:5;46609:41;;;46641:8;46609:41;;;;;;:::i;:::-;;;;;;;;46327:331;;;:::o;43458:735::-;43650:1;43636:16;;:2;:16;;;;43628:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;43723:7;:14;43709:3;:10;:28;43701:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;43795:16;43814:12;:10;:12::i;:::-;43795:31;;43839:66;43860:8;43878:1;43882:2;43886:3;43891:7;43900:4;43839:20;:66::i;:::-;43923:9;43918:103;43942:3;:10;43938:1;:14;43918:103;;;43999:7;44007:1;43999:10;;;;;;;;:::i;:::-;;;;;;;;43974:9;:17;43984:3;43988:1;43984:6;;;;;;;;:::i;:::-;;;;;;;;43974:17;;;;;;;;;;;:21;43992:2;43974:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;43954:3;;;;;:::i;:::-;;;;43918:103;;;;44074:2;44038:53;;44070:1;44038:53;;44052:8;44038:53;;;44078:3;44083:7;44038:53;;;;;;;:::i;:::-;;;;;;;;44104:81;44140:8;44158:1;44162:2;44166:3;44171:7;44180:4;44104:35;:81::i;:::-;43617:576;43458:735;;;;:::o;37339:168::-;37438:4;37462:18;:27;37481:7;37462:27;;;;;;;;;;;;;;;:37;37490:8;37462:37;;;;;;;;;;;;;;;;;;;;;;;;;37455:44;;37339:168;;;;:::o;38963:820::-;39165:1;39151:16;;:2;:16;;;;39143:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;39222:16;39241:12;:10;:12::i;:::-;39222:31;;39266:96;39287:8;39297:4;39303:2;39307:21;39325:2;39307:17;:21::i;:::-;39330:25;39348:6;39330:17;:25::i;:::-;39357:4;39266:20;:96::i;:::-;39375:19;39397:9;:13;39407:2;39397:13;;;;;;;;;;;:19;39411:4;39397:19;;;;;;;;;;;;;;;;39375:41;;39450:6;39435:11;:21;;39427:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;39575:6;39561:11;:20;39539:9;:13;39549:2;39539:13;;;;;;;;;;;:19;39553:4;39539:19;;;;;;;;;;;;;;;:42;;;;39624:6;39603:9;:13;39613:2;39603:13;;;;;;;;;;;:17;39617:2;39603:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;39679:2;39648:46;;39673:4;39648:46;;39663:8;39648:46;;;39683:2;39687:6;39648:46;;;;;;;:::i;:::-;;;;;;;;39707:68;39738:8;39748:4;39754:2;39758;39762:6;39770:4;39707:30;:68::i;:::-;39132:651;;38963:820;;;;;:::o;44443:648::-;44586:1;44570:18;;:4;:18;;;;44562:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;44641:16;44660:12;:10;:12::i;:::-;44641:31;;44685:102;44706:8;44716:4;44730:1;44734:21;44752:2;44734:17;:21::i;:::-;44757:25;44775:6;44757:17;:25::i;:::-;44685:102;;;;;;;;;;;;:20;:102::i;:::-;44800:19;44822:9;:13;44832:2;44822:13;;;;;;;;;;;:19;44836:4;44822:19;;;;;;;;;;;;;;;;44800:41;;44875:6;44860:11;:21;;44852:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;44994:6;44980:11;:20;44958:9;:13;44968:2;44958:13;;;;;;;;;;;:19;44972:4;44958:19;;;;;;;;;;;;;;;:42;;;;45068:1;45029:54;;45054:4;45029:54;;45044:8;45029:54;;;45072:2;45076:6;45029:54;;;;;;;:::i;:::-;;;;;;;;44551:540;;44443:648;;;:::o;35141:310::-;35243:4;35295:26;35280:41;;;:11;:41;;;;:110;;;;35353:37;35338:52;;;:11;:52;;;;35280:110;:163;;;;35407:36;35431:11;35407:23;:36::i;:::-;35280:163;35260:183;;35141:310;;;:::o;49416:198::-;49482:16;49511:22;49550:1;49536:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49511:41;;49574:7;49563:5;49569:1;49563:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;49601:5;49594:12;;;49416:198;;;:::o;47614:221::-;;;;;;;:::o;47843:744::-;48058:15;:2;:13;;;:15::i;:::-;48054:526;;;48111:2;48094:38;;;48133:8;48143:4;48149:2;48153:6;48161:4;48094:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;48090:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;48442:6;48435:14;;;;;;;;;;;:::i;:::-;;;;;;;;48090:479;;;48491:62;;;;;;;;;;:::i;:::-;;;;;;;;48090:479;48228:43;;;48216:55;;;:8;:55;;;;48212:154;;48296:50;;;;;;;;;;:::i;:::-;;;;;;;;48212:154;48167:214;48054:526;47843:744;;;;;;:::o;48595:813::-;48835:15;:2;:13;;;:15::i;:::-;48831:570;;;48888:2;48871:43;;;48915:8;48925:4;48931:3;48936:7;48945:4;48871:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;48867:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;49263:6;49256:14;;;;;;;;;;;:::i;:::-;;;;;;;;48867:523;;;49312:62;;;;;;;;;;:::i;:::-;;;;;;;;48867:523;49044:48;;;49032:60;;;:8;:60;;;;49028:159;;49117:50;;;;;;;;;;:::i;:::-;;;;;;;;49028:159;48951:251;48831:570;48595:813;;;;;;:::o;18873:157::-;18958:4;18997:25;18982:40;;;:11;:40;;;;18975:47;;18873:157;;;:::o;9821:326::-;9881:4;10138:1;10116:7;:19;;;:23;10109:30;;9821:326;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1514:744::-;1621:5;1646:81;1662:64;1719:6;1662:64;:::i;:::-;1646:81;:::i;:::-;1637:90;;1747:5;1776:6;1769:5;1762:21;1810:4;1803:5;1799:16;1792:23;;1836:6;1886:3;1878:4;1870:6;1866:17;1861:3;1857:27;1854:36;1851:143;;;1905:79;;:::i;:::-;1851:143;2018:1;2003:249;2028:6;2025:1;2022:13;2003:249;;;2096:3;2125:48;2169:3;2157:10;2125:48;:::i;:::-;2120:3;2113:61;2203:4;2198:3;2194:14;2187:21;;2237:4;2232:3;2228:14;2221:21;;2063:189;2050:1;2047;2043:9;2038:14;;2003:249;;;2007:14;1627:631;;1514:744;;;;;:::o;2264:410::-;2341:5;2366:65;2382:48;2423:6;2382:48;:::i;:::-;2366:65;:::i;:::-;2357:74;;2454:6;2447:5;2440:21;2492:4;2485:5;2481:16;2530:3;2521:6;2516:3;2512:16;2509:25;2506:112;;;2537:79;;:::i;:::-;2506:112;2627:41;2661:6;2656:3;2651;2627:41;:::i;:::-;2347:327;2264:410;;;;;:::o;2680:412::-;2758:5;2783:66;2799:49;2841:6;2799:49;:::i;:::-;2783:66;:::i;:::-;2774:75;;2872:6;2865:5;2858:21;2910:4;2903:5;2899:16;2948:3;2939:6;2934:3;2930:16;2927:25;2924:112;;;2955:79;;:::i;:::-;2924:112;3045:41;3079:6;3074:3;3069;3045:41;:::i;:::-;2764:328;2680:412;;;;;:::o;3098:139::-;3144:5;3182:6;3169:20;3160:29;;3198:33;3225:5;3198:33;:::i;:::-;3098:139;;;;:::o;3260:370::-;3331:5;3380:3;3373:4;3365:6;3361:17;3357:27;3347:122;;3388:79;;:::i;:::-;3347:122;3505:6;3492:20;3530:94;3620:3;3612:6;3605:4;3597:6;3593:17;3530:94;:::i;:::-;3521:103;;3337:293;3260:370;;;;:::o;3653:::-;3724:5;3773:3;3766:4;3758:6;3754:17;3750:27;3740:122;;3781:79;;:::i;:::-;3740:122;3898:6;3885:20;3923:94;4013:3;4005:6;3998:4;3990:6;3986:17;3923:94;:::i;:::-;3914:103;;3730:293;3653:370;;;;:::o;4046:385::-;4128:5;4177:3;4170:4;4162:6;4158:17;4154:27;4144:122;;4185:79;;:::i;:::-;4144:122;4295:6;4289:13;4320:105;4421:3;4413:6;4406:4;4398:6;4394:17;4320:105;:::i;:::-;4311:114;;4134:297;4046:385;;;;:::o;4437:133::-;4480:5;4518:6;4505:20;4496:29;;4534:30;4558:5;4534:30;:::i;:::-;4437:133;;;;:::o;4576:139::-;4622:5;4660:6;4647:20;4638:29;;4676:33;4703:5;4676:33;:::i;:::-;4576:139;;;;:::o;4721:137::-;4766:5;4804:6;4791:20;4782:29;;4820:32;4846:5;4820:32;:::i;:::-;4721:137;;;;:::o;4864:141::-;4920:5;4951:6;4945:13;4936:22;;4967:32;4993:5;4967:32;:::i;:::-;4864:141;;;;:::o;5024:338::-;5079:5;5128:3;5121:4;5113:6;5109:17;5105:27;5095:122;;5136:79;;:::i;:::-;5095:122;5253:6;5240:20;5278:78;5352:3;5344:6;5337:4;5329:6;5325:17;5278:78;:::i;:::-;5269:87;;5085:277;5024:338;;;;:::o;5382:340::-;5438:5;5487:3;5480:4;5472:6;5468:17;5464:27;5454:122;;5495:79;;:::i;:::-;5454:122;5612:6;5599:20;5637:79;5712:3;5704:6;5697:4;5689:6;5685:17;5637:79;:::i;:::-;5628:88;;5444:278;5382:340;;;;:::o;5728:139::-;5774:5;5812:6;5799:20;5790:29;;5828:33;5855:5;5828:33;:::i;:::-;5728:139;;;;:::o;5873:143::-;5930:5;5961:6;5955:13;5946:22;;5977:33;6004:5;5977:33;:::i;:::-;5873:143;;;;:::o;6022:329::-;6081:6;6130:2;6118:9;6109:7;6105:23;6101:32;6098:119;;;6136:79;;:::i;:::-;6098:119;6256:1;6281:53;6326:7;6317:6;6306:9;6302:22;6281:53;:::i;:::-;6271:63;;6227:117;6022:329;;;;:::o;6357:474::-;6425:6;6433;6482:2;6470:9;6461:7;6457:23;6453:32;6450:119;;;6488:79;;:::i;:::-;6450:119;6608:1;6633:53;6678:7;6669:6;6658:9;6654:22;6633:53;:::i;:::-;6623:63;;6579:117;6735:2;6761:53;6806:7;6797:6;6786:9;6782:22;6761:53;:::i;:::-;6751:63;;6706:118;6357:474;;;;;:::o;6837:1509::-;6991:6;6999;7007;7015;7023;7072:3;7060:9;7051:7;7047:23;7043:33;7040:120;;;7079:79;;:::i;:::-;7040:120;7199:1;7224:53;7269:7;7260:6;7249:9;7245:22;7224:53;:::i;:::-;7214:63;;7170:117;7326:2;7352:53;7397:7;7388:6;7377:9;7373:22;7352:53;:::i;:::-;7342:63;;7297:118;7482:2;7471:9;7467:18;7454:32;7513:18;7505:6;7502:30;7499:117;;;7535:79;;:::i;:::-;7499:117;7640:78;7710:7;7701:6;7690:9;7686:22;7640:78;:::i;:::-;7630:88;;7425:303;7795:2;7784:9;7780:18;7767:32;7826:18;7818:6;7815:30;7812:117;;;7848:79;;:::i;:::-;7812:117;7953:78;8023:7;8014:6;8003:9;7999:22;7953:78;:::i;:::-;7943:88;;7738:303;8108:3;8097:9;8093:19;8080:33;8140:18;8132:6;8129:30;8126:117;;;8162:79;;:::i;:::-;8126:117;8267:62;8321:7;8312:6;8301:9;8297:22;8267:62;:::i;:::-;8257:72;;8051:288;6837:1509;;;;;;;;:::o;8352:1089::-;8456:6;8464;8472;8480;8488;8537:3;8525:9;8516:7;8512:23;8508:33;8505:120;;;8544:79;;:::i;:::-;8505:120;8664:1;8689:53;8734:7;8725:6;8714:9;8710:22;8689:53;:::i;:::-;8679:63;;8635:117;8791:2;8817:53;8862:7;8853:6;8842:9;8838:22;8817:53;:::i;:::-;8807:63;;8762:118;8919:2;8945:53;8990:7;8981:6;8970:9;8966:22;8945:53;:::i;:::-;8935:63;;8890:118;9047:2;9073:53;9118:7;9109:6;9098:9;9094:22;9073:53;:::i;:::-;9063:63;;9018:118;9203:3;9192:9;9188:19;9175:33;9235:18;9227:6;9224:30;9221:117;;;9257:79;;:::i;:::-;9221:117;9362:62;9416:7;9407:6;9396:9;9392:22;9362:62;:::i;:::-;9352:72;;9146:288;8352:1089;;;;;;;;:::o;9447:1039::-;9574:6;9582;9590;9639:2;9627:9;9618:7;9614:23;9610:32;9607:119;;;9645:79;;:::i;:::-;9607:119;9765:1;9790:53;9835:7;9826:6;9815:9;9811:22;9790:53;:::i;:::-;9780:63;;9736:117;9920:2;9909:9;9905:18;9892:32;9951:18;9943:6;9940:30;9937:117;;;9973:79;;:::i;:::-;9937:117;10078:78;10148:7;10139:6;10128:9;10124:22;10078:78;:::i;:::-;10068:88;;9863:303;10233:2;10222:9;10218:18;10205:32;10264:18;10256:6;10253:30;10250:117;;;10286:79;;:::i;:::-;10250:117;10391:78;10461:7;10452:6;10441:9;10437:22;10391:78;:::i;:::-;10381:88;;10176:303;9447:1039;;;;;:::o;10492:468::-;10557:6;10565;10614:2;10602:9;10593:7;10589:23;10585:32;10582:119;;;10620:79;;:::i;:::-;10582:119;10740:1;10765:53;10810:7;10801:6;10790:9;10786:22;10765:53;:::i;:::-;10755:63;;10711:117;10867:2;10893:50;10935:7;10926:6;10915:9;10911:22;10893:50;:::i;:::-;10883:60;;10838:115;10492:468;;;;;:::o;10966:474::-;11034:6;11042;11091:2;11079:9;11070:7;11066:23;11062:32;11059:119;;;11097:79;;:::i;:::-;11059:119;11217:1;11242:53;11287:7;11278:6;11267:9;11263:22;11242:53;:::i;:::-;11232:63;;11188:117;11344:2;11370:53;11415:7;11406:6;11395:9;11391:22;11370:53;:::i;:::-;11360:63;;11315:118;10966:474;;;;;:::o;11446:619::-;11523:6;11531;11539;11588:2;11576:9;11567:7;11563:23;11559:32;11556:119;;;11594:79;;:::i;:::-;11556:119;11714:1;11739:53;11784:7;11775:6;11764:9;11760:22;11739:53;:::i;:::-;11729:63;;11685:117;11841:2;11867:53;11912:7;11903:6;11892:9;11888:22;11867:53;:::i;:::-;11857:63;;11812:118;11969:2;11995:53;12040:7;12031:6;12020:9;12016:22;11995:53;:::i;:::-;11985:63;;11940:118;11446:619;;;;;:::o;12071:894::-;12189:6;12197;12246:2;12234:9;12225:7;12221:23;12217:32;12214:119;;;12252:79;;:::i;:::-;12214:119;12400:1;12389:9;12385:17;12372:31;12430:18;12422:6;12419:30;12416:117;;;12452:79;;:::i;:::-;12416:117;12557:78;12627:7;12618:6;12607:9;12603:22;12557:78;:::i;:::-;12547:88;;12343:302;12712:2;12701:9;12697:18;12684:32;12743:18;12735:6;12732:30;12729:117;;;12765:79;;:::i;:::-;12729:117;12870:78;12940:7;12931:6;12920:9;12916:22;12870:78;:::i;:::-;12860:88;;12655:303;12071:894;;;;;:::o;12971:554::-;13066:6;13115:2;13103:9;13094:7;13090:23;13086:32;13083:119;;;13121:79;;:::i;:::-;13083:119;13262:1;13251:9;13247:17;13241:24;13292:18;13284:6;13281:30;13278:117;;;13314:79;;:::i;:::-;13278:117;13419:89;13500:7;13491:6;13480:9;13476:22;13419:89;:::i;:::-;13409:99;;13212:306;12971:554;;;;:::o;13531:894::-;13649:6;13657;13706:2;13694:9;13685:7;13681:23;13677:32;13674:119;;;13712:79;;:::i;:::-;13674:119;13860:1;13849:9;13845:17;13832:31;13890:18;13882:6;13879:30;13876:117;;;13912:79;;:::i;:::-;13876:117;14017:78;14087:7;14078:6;14067:9;14063:22;14017:78;:::i;:::-;14007:88;;13803:302;14172:2;14161:9;14157:18;14144:32;14203:18;14195:6;14192:30;14189:117;;;14225:79;;:::i;:::-;14189:117;14330:78;14400:7;14391:6;14380:9;14376:22;14330:78;:::i;:::-;14320:88;;14115:303;13531:894;;;;;:::o;14431:329::-;14490:6;14539:2;14527:9;14518:7;14514:23;14510:32;14507:119;;;14545:79;;:::i;:::-;14507:119;14665:1;14690:53;14735:7;14726:6;14715:9;14711:22;14690:53;:::i;:::-;14680:63;;14636:117;14431:329;;;;:::o;14766:474::-;14834:6;14842;14891:2;14879:9;14870:7;14866:23;14862:32;14859:119;;;14897:79;;:::i;:::-;14859:119;15017:1;15042:53;15087:7;15078:6;15067:9;15063:22;15042:53;:::i;:::-;15032:63;;14988:117;15144:2;15170:53;15215:7;15206:6;15195:9;15191:22;15170:53;:::i;:::-;15160:63;;15115:118;14766:474;;;;;:::o;15246:327::-;15304:6;15353:2;15341:9;15332:7;15328:23;15324:32;15321:119;;;15359:79;;:::i;:::-;15321:119;15479:1;15504:52;15548:7;15539:6;15528:9;15524:22;15504:52;:::i;:::-;15494:62;;15450:116;15246:327;;;;:::o;15579:349::-;15648:6;15697:2;15685:9;15676:7;15672:23;15668:32;15665:119;;;15703:79;;:::i;:::-;15665:119;15823:1;15848:63;15903:7;15894:6;15883:9;15879:22;15848:63;:::i;:::-;15838:73;;15794:127;15579:349;;;;:::o;15934:509::-;16003:6;16052:2;16040:9;16031:7;16027:23;16023:32;16020:119;;;16058:79;;:::i;:::-;16020:119;16206:1;16195:9;16191:17;16178:31;16236:18;16228:6;16225:30;16222:117;;;16258:79;;:::i;:::-;16222:117;16363:63;16418:7;16409:6;16398:9;16394:22;16363:63;:::i;:::-;16353:73;;16149:287;15934:509;;;;:::o;16449:329::-;16508:6;16557:2;16545:9;16536:7;16532:23;16528:32;16525:119;;;16563:79;;:::i;:::-;16525:119;16683:1;16708:53;16753:7;16744:6;16733:9;16729:22;16708:53;:::i;:::-;16698:63;;16654:117;16449:329;;;;:::o;16784:474::-;16852:6;16860;16909:2;16897:9;16888:7;16884:23;16880:32;16877:119;;;16915:79;;:::i;:::-;16877:119;17035:1;17060:53;17105:7;17096:6;17085:9;17081:22;17060:53;:::i;:::-;17050:63;;17006:117;17162:2;17188:53;17233:7;17224:6;17213:9;17209:22;17188:53;:::i;:::-;17178:63;;17133:118;16784:474;;;;;:::o;17264:179::-;17333:10;17354:46;17396:3;17388:6;17354:46;:::i;:::-;17432:4;17427:3;17423:14;17409:28;;17264:179;;;;:::o;17449:::-;17518:10;17539:46;17581:3;17573:6;17539:46;:::i;:::-;17617:4;17612:3;17608:14;17594:28;;17449:179;;;;:::o;17634:108::-;17711:24;17729:5;17711:24;:::i;:::-;17706:3;17699:37;17634:108;;:::o;17748:118::-;17835:24;17853:5;17835:24;:::i;:::-;17830:3;17823:37;17748:118;;:::o;17902:732::-;18021:3;18050:54;18098:5;18050:54;:::i;:::-;18120:86;18199:6;18194:3;18120:86;:::i;:::-;18113:93;;18230:56;18280:5;18230:56;:::i;:::-;18309:7;18340:1;18325:284;18350:6;18347:1;18344:13;18325:284;;;18426:6;18420:13;18453:63;18512:3;18497:13;18453:63;:::i;:::-;18446:70;;18539:60;18592:6;18539:60;:::i;:::-;18529:70;;18385:224;18372:1;18369;18365:9;18360:14;;18325:284;;;18329:14;18625:3;18618:10;;18026:608;;;17902:732;;;;:::o;18670:::-;18789:3;18818:54;18866:5;18818:54;:::i;:::-;18888:86;18967:6;18962:3;18888:86;:::i;:::-;18881:93;;18998:56;19048:5;18998:56;:::i;:::-;19077:7;19108:1;19093:284;19118:6;19115:1;19112:13;19093:284;;;19194:6;19188:13;19221:63;19280:3;19265:13;19221:63;:::i;:::-;19214:70;;19307:60;19360:6;19307:60;:::i;:::-;19297:70;;19153:224;19140:1;19137;19133:9;19128:14;;19093:284;;;19097:14;19393:3;19386:10;;18794:608;;;18670:732;;;;:::o;19408:109::-;19489:21;19504:5;19489:21;:::i;:::-;19484:3;19477:34;19408:109;;:::o;19523:118::-;19610:24;19628:5;19610:24;:::i;:::-;19605:3;19598:37;19523:118;;:::o;19647:360::-;19733:3;19761:38;19793:5;19761:38;:::i;:::-;19815:70;19878:6;19873:3;19815:70;:::i;:::-;19808:77;;19894:52;19939:6;19934:3;19927:4;19920:5;19916:16;19894:52;:::i;:::-;19971:29;19993:6;19971:29;:::i;:::-;19966:3;19962:39;19955:46;;19737:270;19647:360;;;;:::o;20013:364::-;20101:3;20129:39;20162:5;20129:39;:::i;:::-;20184:71;20248:6;20243:3;20184:71;:::i;:::-;20177:78;;20264:52;20309:6;20304:3;20297:4;20290:5;20286:16;20264:52;:::i;:::-;20341:29;20363:6;20341:29;:::i;:::-;20336:3;20332:39;20325:46;;20105:272;20013:364;;;;:::o;20383:377::-;20489:3;20517:39;20550:5;20517:39;:::i;:::-;20572:89;20654:6;20649:3;20572:89;:::i;:::-;20565:96;;20670:52;20715:6;20710:3;20703:4;20696:5;20692:16;20670:52;:::i;:::-;20747:6;20742:3;20738:16;20731:23;;20493:267;20383:377;;;;:::o;20766:366::-;20908:3;20929:67;20993:2;20988:3;20929:67;:::i;:::-;20922:74;;21005:93;21094:3;21005:93;:::i;:::-;21123:2;21118:3;21114:12;21107:19;;20766:366;;;:::o;21138:::-;21280:3;21301:67;21365:2;21360:3;21301:67;:::i;:::-;21294:74;;21377:93;21466:3;21377:93;:::i;:::-;21495:2;21490:3;21486:12;21479:19;;21138:366;;;:::o;21510:::-;21652:3;21673:67;21737:2;21732:3;21673:67;:::i;:::-;21666:74;;21749:93;21838:3;21749:93;:::i;:::-;21867:2;21862:3;21858:12;21851:19;;21510:366;;;:::o;21882:::-;22024:3;22045:67;22109:2;22104:3;22045:67;:::i;:::-;22038:74;;22121:93;22210:3;22121:93;:::i;:::-;22239:2;22234:3;22230:12;22223:19;;21882:366;;;:::o;22254:::-;22396:3;22417:67;22481:2;22476:3;22417:67;:::i;:::-;22410:74;;22493:93;22582:3;22493:93;:::i;:::-;22611:2;22606:3;22602:12;22595:19;;22254:366;;;:::o;22626:::-;22768:3;22789:67;22853:2;22848:3;22789:67;:::i;:::-;22782:74;;22865:93;22954:3;22865:93;:::i;:::-;22983:2;22978:3;22974:12;22967:19;;22626:366;;;:::o;22998:::-;23140:3;23161:67;23225:2;23220:3;23161:67;:::i;:::-;23154:74;;23237:93;23326:3;23237:93;:::i;:::-;23355:2;23350:3;23346:12;23339:19;;22998:366;;;:::o;23370:::-;23512:3;23533:67;23597:2;23592:3;23533:67;:::i;:::-;23526:74;;23609:93;23698:3;23609:93;:::i;:::-;23727:2;23722:3;23718:12;23711:19;;23370:366;;;:::o;23742:::-;23884:3;23905:67;23969:2;23964:3;23905:67;:::i;:::-;23898:74;;23981:93;24070:3;23981:93;:::i;:::-;24099:2;24094:3;24090:12;24083:19;;23742:366;;;:::o;24114:::-;24256:3;24277:67;24341:2;24336:3;24277:67;:::i;:::-;24270:74;;24353:93;24442:3;24353:93;:::i;:::-;24471:2;24466:3;24462:12;24455:19;;24114:366;;;:::o;24486:::-;24628:3;24649:67;24713:2;24708:3;24649:67;:::i;:::-;24642:74;;24725:93;24814:3;24725:93;:::i;:::-;24843:2;24838:3;24834:12;24827:19;;24486:366;;;:::o;24858:::-;25000:3;25021:67;25085:2;25080:3;25021:67;:::i;:::-;25014:74;;25097:93;25186:3;25097:93;:::i;:::-;25215:2;25210:3;25206:12;25199:19;;24858:366;;;:::o;25230:402::-;25390:3;25411:85;25493:2;25488:3;25411:85;:::i;:::-;25404:92;;25505:93;25594:3;25505:93;:::i;:::-;25623:2;25618:3;25614:12;25607:19;;25230:402;;;:::o;25638:366::-;25780:3;25801:67;25865:2;25860:3;25801:67;:::i;:::-;25794:74;;25877:93;25966:3;25877:93;:::i;:::-;25995:2;25990:3;25986:12;25979:19;;25638:366;;;:::o;26010:::-;26152:3;26173:67;26237:2;26232:3;26173:67;:::i;:::-;26166:74;;26249:93;26338:3;26249:93;:::i;:::-;26367:2;26362:3;26358:12;26351:19;;26010:366;;;:::o;26382:::-;26524:3;26545:67;26609:2;26604:3;26545:67;:::i;:::-;26538:74;;26621:93;26710:3;26621:93;:::i;:::-;26739:2;26734:3;26730:12;26723:19;;26382:366;;;:::o;26754:::-;26896:3;26917:67;26981:2;26976:3;26917:67;:::i;:::-;26910:74;;26993:93;27082:3;26993:93;:::i;:::-;27111:2;27106:3;27102:12;27095:19;;26754:366;;;:::o;27126:402::-;27286:3;27307:85;27389:2;27384:3;27307:85;:::i;:::-;27300:92;;27401:93;27490:3;27401:93;:::i;:::-;27519:2;27514:3;27510:12;27503:19;;27126:402;;;:::o;27534:366::-;27676:3;27697:67;27761:2;27756:3;27697:67;:::i;:::-;27690:74;;27773:93;27862:3;27773:93;:::i;:::-;27891:2;27886:3;27882:12;27875:19;;27534:366;;;:::o;27906:108::-;27983:24;28001:5;27983:24;:::i;:::-;27978:3;27971:37;27906:108;;:::o;28020:118::-;28107:24;28125:5;28107:24;:::i;:::-;28102:3;28095:37;28020:118;;:::o;28144:967::-;28526:3;28548:148;28692:3;28548:148;:::i;:::-;28541:155;;28713:95;28804:3;28795:6;28713:95;:::i;:::-;28706:102;;28825:148;28969:3;28825:148;:::i;:::-;28818:155;;28990:95;29081:3;29072:6;28990:95;:::i;:::-;28983:102;;29102:3;29095:10;;28144:967;;;;;:::o;29117:222::-;29210:4;29248:2;29237:9;29233:18;29225:26;;29261:71;29329:1;29318:9;29314:17;29305:6;29261:71;:::i;:::-;29117:222;;;;:::o;29345:1053::-;29668:4;29706:3;29695:9;29691:19;29683:27;;29720:71;29788:1;29777:9;29773:17;29764:6;29720:71;:::i;:::-;29801:72;29869:2;29858:9;29854:18;29845:6;29801:72;:::i;:::-;29920:9;29914:4;29910:20;29905:2;29894:9;29890:18;29883:48;29948:108;30051:4;30042:6;29948:108;:::i;:::-;29940:116;;30103:9;30097:4;30093:20;30088:2;30077:9;30073:18;30066:48;30131:108;30234:4;30225:6;30131:108;:::i;:::-;30123:116;;30287:9;30281:4;30277:20;30271:3;30260:9;30256:19;30249:49;30315:76;30386:4;30377:6;30315:76;:::i;:::-;30307:84;;29345:1053;;;;;;;;:::o;30404:751::-;30627:4;30665:3;30654:9;30650:19;30642:27;;30679:71;30747:1;30736:9;30732:17;30723:6;30679:71;:::i;:::-;30760:72;30828:2;30817:9;30813:18;30804:6;30760:72;:::i;:::-;30842;30910:2;30899:9;30895:18;30886:6;30842:72;:::i;:::-;30924;30992:2;30981:9;30977:18;30968:6;30924:72;:::i;:::-;31044:9;31038:4;31034:20;31028:3;31017:9;31013:19;31006:49;31072:76;31143:4;31134:6;31072:76;:::i;:::-;31064:84;;30404:751;;;;;;;;:::o;31161:320::-;31276:4;31314:2;31303:9;31299:18;31291:26;;31327:71;31395:1;31384:9;31380:17;31371:6;31327:71;:::i;:::-;31408:66;31470:2;31459:9;31455:18;31446:6;31408:66;:::i;:::-;31161:320;;;;;:::o;31487:634::-;31708:4;31746:2;31735:9;31731:18;31723:26;;31795:9;31789:4;31785:20;31781:1;31770:9;31766:17;31759:47;31823:108;31926:4;31917:6;31823:108;:::i;:::-;31815:116;;31978:9;31972:4;31968:20;31963:2;31952:9;31948:18;31941:48;32006:108;32109:4;32100:6;32006:108;:::i;:::-;31998:116;;31487:634;;;;;:::o;32127:373::-;32270:4;32308:2;32297:9;32293:18;32285:26;;32357:9;32351:4;32347:20;32343:1;32332:9;32328:17;32321:47;32385:108;32488:4;32479:6;32385:108;:::i;:::-;32377:116;;32127:373;;;;:::o;32506:634::-;32727:4;32765:2;32754:9;32750:18;32742:26;;32814:9;32808:4;32804:20;32800:1;32789:9;32785:17;32778:47;32842:108;32945:4;32936:6;32842:108;:::i;:::-;32834:116;;32997:9;32991:4;32987:20;32982:2;32971:9;32967:18;32960:48;33025:108;33128:4;33119:6;33025:108;:::i;:::-;33017:116;;32506:634;;;;;:::o;33146:210::-;33233:4;33271:2;33260:9;33256:18;33248:26;;33284:65;33346:1;33335:9;33331:17;33322:6;33284:65;:::i;:::-;33146:210;;;;:::o;33362:222::-;33455:4;33493:2;33482:9;33478:18;33470:26;;33506:71;33574:1;33563:9;33559:17;33550:6;33506:71;:::i;:::-;33362:222;;;;:::o;33590:313::-;33703:4;33741:2;33730:9;33726:18;33718:26;;33790:9;33784:4;33780:20;33776:1;33765:9;33761:17;33754:47;33818:78;33891:4;33882:6;33818:78;:::i;:::-;33810:86;;33590:313;;;;:::o;33909:419::-;34075:4;34113:2;34102:9;34098:18;34090:26;;34162:9;34156:4;34152:20;34148:1;34137:9;34133:17;34126:47;34190:131;34316:4;34190:131;:::i;:::-;34182:139;;33909:419;;;:::o;34334:::-;34500:4;34538:2;34527:9;34523:18;34515:26;;34587:9;34581:4;34577:20;34573:1;34562:9;34558:17;34551:47;34615:131;34741:4;34615:131;:::i;:::-;34607:139;;34334:419;;;:::o;34759:::-;34925:4;34963:2;34952:9;34948:18;34940:26;;35012:9;35006:4;35002:20;34998:1;34987:9;34983:17;34976:47;35040:131;35166:4;35040:131;:::i;:::-;35032:139;;34759:419;;;:::o;35184:::-;35350:4;35388:2;35377:9;35373:18;35365:26;;35437:9;35431:4;35427:20;35423:1;35412:9;35408:17;35401:47;35465:131;35591:4;35465:131;:::i;:::-;35457:139;;35184:419;;;:::o;35609:::-;35775:4;35813:2;35802:9;35798:18;35790:26;;35862:9;35856:4;35852:20;35848:1;35837:9;35833:17;35826:47;35890:131;36016:4;35890:131;:::i;:::-;35882:139;;35609:419;;;:::o;36034:::-;36200:4;36238:2;36227:9;36223:18;36215:26;;36287:9;36281:4;36277:20;36273:1;36262:9;36258:17;36251:47;36315:131;36441:4;36315:131;:::i;:::-;36307:139;;36034:419;;;:::o;36459:::-;36625:4;36663:2;36652:9;36648:18;36640:26;;36712:9;36706:4;36702:20;36698:1;36687:9;36683:17;36676:47;36740:131;36866:4;36740:131;:::i;:::-;36732:139;;36459:419;;;:::o;36884:::-;37050:4;37088:2;37077:9;37073:18;37065:26;;37137:9;37131:4;37127:20;37123:1;37112:9;37108:17;37101:47;37165:131;37291:4;37165:131;:::i;:::-;37157:139;;36884:419;;;:::o;37309:::-;37475:4;37513:2;37502:9;37498:18;37490:26;;37562:9;37556:4;37552:20;37548:1;37537:9;37533:17;37526:47;37590:131;37716:4;37590:131;:::i;:::-;37582:139;;37309:419;;;:::o;37734:::-;37900:4;37938:2;37927:9;37923:18;37915:26;;37987:9;37981:4;37977:20;37973:1;37962:9;37958:17;37951:47;38015:131;38141:4;38015:131;:::i;:::-;38007:139;;37734:419;;;:::o;38159:::-;38325:4;38363:2;38352:9;38348:18;38340:26;;38412:9;38406:4;38402:20;38398:1;38387:9;38383:17;38376:47;38440:131;38566:4;38440:131;:::i;:::-;38432:139;;38159:419;;;:::o;38584:::-;38750:4;38788:2;38777:9;38773:18;38765:26;;38837:9;38831:4;38827:20;38823:1;38812:9;38808:17;38801:47;38865:131;38991:4;38865:131;:::i;:::-;38857:139;;38584:419;;;:::o;39009:::-;39175:4;39213:2;39202:9;39198:18;39190:26;;39262:9;39256:4;39252:20;39248:1;39237:9;39233:17;39226:47;39290:131;39416:4;39290:131;:::i;:::-;39282:139;;39009:419;;;:::o;39434:::-;39600:4;39638:2;39627:9;39623:18;39615:26;;39687:9;39681:4;39677:20;39673:1;39662:9;39658:17;39651:47;39715:131;39841:4;39715:131;:::i;:::-;39707:139;;39434:419;;;:::o;39859:::-;40025:4;40063:2;40052:9;40048:18;40040:26;;40112:9;40106:4;40102:20;40098:1;40087:9;40083:17;40076:47;40140:131;40266:4;40140:131;:::i;:::-;40132:139;;39859:419;;;:::o;40284:::-;40450:4;40488:2;40477:9;40473:18;40465:26;;40537:9;40531:4;40527:20;40523:1;40512:9;40508:17;40501:47;40565:131;40691:4;40565:131;:::i;:::-;40557:139;;40284:419;;;:::o;40709:::-;40875:4;40913:2;40902:9;40898:18;40890:26;;40962:9;40956:4;40952:20;40948:1;40937:9;40933:17;40926:47;40990:131;41116:4;40990:131;:::i;:::-;40982:139;;40709:419;;;:::o;41134:222::-;41227:4;41265:2;41254:9;41250:18;41242:26;;41278:71;41346:1;41335:9;41331:17;41322:6;41278:71;:::i;:::-;41134:222;;;;:::o;41362:332::-;41483:4;41521:2;41510:9;41506:18;41498:26;;41534:71;41602:1;41591:9;41587:17;41578:6;41534:71;:::i;:::-;41615:72;41683:2;41672:9;41668:18;41659:6;41615:72;:::i;:::-;41362:332;;;;;:::o;41700:129::-;41734:6;41761:20;;:::i;:::-;41751:30;;41790:33;41818:4;41810:6;41790:33;:::i;:::-;41700:129;;;:::o;41835:75::-;41868:6;41901:2;41895:9;41885:19;;41835:75;:::o;41916:311::-;41993:4;42083:18;42075:6;42072:30;42069:56;;;42105:18;;:::i;:::-;42069:56;42155:4;42147:6;42143:17;42135:25;;42215:4;42209;42205:15;42197:23;;41916:311;;;:::o;42233:::-;42310:4;42400:18;42392:6;42389:30;42386:56;;;42422:18;;:::i;:::-;42386:56;42472:4;42464:6;42460:17;42452:25;;42532:4;42526;42522:15;42514:23;;42233:311;;;:::o;42550:307::-;42611:4;42701:18;42693:6;42690:30;42687:56;;;42723:18;;:::i;:::-;42687:56;42761:29;42783:6;42761:29;:::i;:::-;42753:37;;42845:4;42839;42835:15;42827:23;;42550:307;;;:::o;42863:308::-;42925:4;43015:18;43007:6;43004:30;43001:56;;;43037:18;;:::i;:::-;43001:56;43075:29;43097:6;43075:29;:::i;:::-;43067:37;;43159:4;43153;43149:15;43141:23;;42863:308;;;:::o;43177:132::-;43244:4;43267:3;43259:11;;43297:4;43292:3;43288:14;43280:22;;43177:132;;;:::o;43315:::-;43382:4;43405:3;43397:11;;43435:4;43430:3;43426:14;43418:22;;43315:132;;;:::o;43453:114::-;43520:6;43554:5;43548:12;43538:22;;43453:114;;;:::o;43573:::-;43640:6;43674:5;43668:12;43658:22;;43573:114;;;:::o;43693:98::-;43744:6;43778:5;43772:12;43762:22;;43693:98;;;:::o;43797:99::-;43849:6;43883:5;43877:12;43867:22;;43797:99;;;:::o;43902:113::-;43972:4;44004;43999:3;43995:14;43987:22;;43902:113;;;:::o;44021:::-;44091:4;44123;44118:3;44114:14;44106:22;;44021:113;;;:::o;44140:184::-;44239:11;44273:6;44268:3;44261:19;44313:4;44308:3;44304:14;44289:29;;44140:184;;;;:::o;44330:::-;44429:11;44463:6;44458:3;44451:19;44503:4;44498:3;44494:14;44479:29;;44330:184;;;;:::o;44520:168::-;44603:11;44637:6;44632:3;44625:19;44677:4;44672:3;44668:14;44653:29;;44520:168;;;;:::o;44694:169::-;44778:11;44812:6;44807:3;44800:19;44852:4;44847:3;44843:14;44828:29;;44694:169;;;;:::o;44869:148::-;44971:11;45008:3;44993:18;;44869:148;;;;:::o;45023:305::-;45063:3;45082:20;45100:1;45082:20;:::i;:::-;45077:25;;45116:20;45134:1;45116:20;:::i;:::-;45111:25;;45270:1;45202:66;45198:74;45195:1;45192:81;45189:107;;;45276:18;;:::i;:::-;45189:107;45320:1;45317;45313:9;45306:16;;45023:305;;;;:::o;45334:348::-;45374:7;45397:20;45415:1;45397:20;:::i;:::-;45392:25;;45431:20;45449:1;45431:20;:::i;:::-;45426:25;;45619:1;45551:66;45547:74;45544:1;45541:81;45536:1;45529:9;45522:17;45518:105;45515:131;;;45626:18;;:::i;:::-;45515:131;45674:1;45671;45667:9;45656:20;;45334:348;;;;:::o;45688:96::-;45725:7;45754:24;45772:5;45754:24;:::i;:::-;45743:35;;45688:96;;;:::o;45790:90::-;45824:7;45867:5;45860:13;45853:21;45842:32;;45790:90;;;:::o;45886:77::-;45923:7;45952:5;45941:16;;45886:77;;;:::o;45969:149::-;46005:7;46045:66;46038:5;46034:78;46023:89;;45969:149;;;:::o;46124:126::-;46161:7;46201:42;46194:5;46190:54;46179:65;;46124:126;;;:::o;46256:77::-;46293:7;46322:5;46311:16;;46256:77;;;:::o;46339:154::-;46423:6;46418:3;46413;46400:30;46485:1;46476:6;46471:3;46467:16;46460:27;46339:154;;;:::o;46499:307::-;46567:1;46577:113;46591:6;46588:1;46585:13;46577:113;;;46676:1;46671:3;46667:11;46661:18;46657:1;46652:3;46648:11;46641:39;46613:2;46610:1;46606:10;46601:15;;46577:113;;;46708:6;46705:1;46702:13;46699:101;;;46788:1;46779:6;46774:3;46770:16;46763:27;46699:101;46548:258;46499:307;;;:::o;46812:171::-;46851:3;46874:24;46892:5;46874:24;:::i;:::-;46865:33;;46920:4;46913:5;46910:15;46907:41;;;46928:18;;:::i;:::-;46907:41;46975:1;46968:5;46964:13;46957:20;;46812:171;;;:::o;46989:320::-;47033:6;47070:1;47064:4;47060:12;47050:22;;47117:1;47111:4;47107:12;47138:18;47128:81;;47194:4;47186:6;47182:17;47172:27;;47128:81;47256:2;47248:6;47245:14;47225:18;47222:38;47219:84;;;47275:18;;:::i;:::-;47219:84;47040:269;46989:320;;;:::o;47315:281::-;47398:27;47420:4;47398:27;:::i;:::-;47390:6;47386:40;47528:6;47516:10;47513:22;47492:18;47480:10;47477:34;47474:62;47471:88;;;47539:18;;:::i;:::-;47471:88;47579:10;47575:2;47568:22;47358:238;47315:281;;:::o;47602:233::-;47641:3;47664:24;47682:5;47664:24;:::i;:::-;47655:33;;47710:66;47703:5;47700:77;47697:103;;;47780:18;;:::i;:::-;47697:103;47827:1;47820:5;47816:13;47809:20;;47602:233;;;:::o;47841:180::-;47889:77;47886:1;47879:88;47986:4;47983:1;47976:15;48010:4;48007:1;48000:15;48027:180;48075:77;48072:1;48065:88;48172:4;48169:1;48162:15;48196:4;48193:1;48186:15;48213:180;48261:77;48258:1;48251:88;48358:4;48355:1;48348:15;48382:4;48379:1;48372:15;48399:180;48447:77;48444:1;48437:88;48544:4;48541:1;48534:15;48568:4;48565:1;48558:15;48585:183;48620:3;48658:1;48640:16;48637:23;48634:128;;;48696:1;48693;48690;48675:23;48718:34;48749:1;48743:8;48718:34;:::i;:::-;48711:41;;48634:128;48585:183;:::o;48774:117::-;48883:1;48880;48873:12;48897:117;49006:1;49003;48996:12;49020:117;49129:1;49126;49119:12;49143:117;49252:1;49249;49242:12;49266:117;49375:1;49372;49365:12;49389:102;49430:6;49481:2;49477:7;49472:2;49465:5;49461:14;49457:28;49447:38;;49389:102;;;:::o;49497:106::-;49541:8;49590:5;49585:3;49581:15;49560:36;;49497:106;;;:::o;49609:239::-;49749:34;49745:1;49737:6;49733:14;49726:58;49818:22;49813:2;49805:6;49801:15;49794:47;49609:239;:::o;49854:182::-;49994:34;49990:1;49982:6;49978:14;49971:58;49854:182;:::o;50042:227::-;50182:34;50178:1;50170:6;50166:14;50159:58;50251:10;50246:2;50238:6;50234:15;50227:35;50042:227;:::o;50275:230::-;50415:34;50411:1;50403:6;50399:14;50392:58;50484:13;50479:2;50471:6;50467:15;50460:38;50275:230;:::o;50511:225::-;50651:34;50647:1;50639:6;50635:14;50628:58;50720:8;50715:2;50707:6;50703:15;50696:33;50511:225;:::o;50742:223::-;50882:34;50878:1;50870:6;50866:14;50859:58;50951:6;50946:2;50938:6;50934:15;50927:31;50742:223;:::o;50971:228::-;51111:34;51107:1;51099:6;51095:14;51088:58;51180:11;51175:2;51167:6;51163:15;51156:36;50971:228;:::o;51205:224::-;51345:34;51341:1;51333:6;51329:14;51322:58;51414:7;51409:2;51401:6;51397:15;51390:32;51205:224;:::o;51435:237::-;51575:34;51571:1;51563:6;51559:14;51552:58;51644:20;51639:2;51631:6;51627:15;51620:45;51435:237;:::o;51678:222::-;51818:34;51814:1;51806:6;51802:14;51795:58;51887:5;51882:2;51874:6;51870:15;51863:30;51678:222;:::o;51906:229::-;52046:34;52042:1;52034:6;52030:14;52023:58;52115:12;52110:2;52102:6;52098:15;52091:37;51906:229;:::o;52141:182::-;52281:34;52277:1;52269:6;52265:14;52258:58;52141:182;:::o;52329:173::-;52469:25;52465:1;52457:6;52453:14;52446:49;52329:173;:::o;52508:228::-;52648:34;52644:1;52636:6;52632:14;52625:58;52717:11;52712:2;52704:6;52700:15;52693:36;52508:228;:::o;52742:::-;52882:34;52878:1;52870:6;52866:14;52859:58;52951:11;52946:2;52938:6;52934:15;52927:36;52742:228;:::o;52976:227::-;53116:34;53112:1;53104:6;53100:14;53093:58;53185:10;53180:2;53172:6;53168:15;53161:35;52976:227;:::o;53209:220::-;53349:34;53345:1;53337:6;53333:14;53326:58;53418:3;53413:2;53405:6;53401:15;53394:28;53209:220;:::o;53435:167::-;53575:19;53571:1;53563:6;53559:14;53552:43;53435:167;:::o;53608:234::-;53748:34;53744:1;53736:6;53732:14;53725:58;53817:17;53812:2;53804:6;53800:15;53793:42;53608:234;:::o;53848:711::-;53887:3;53925:4;53907:16;53904:26;53901:39;;;53933:5;;53901:39;53962:20;;:::i;:::-;54037:1;54019:16;54015:24;54012:1;54006:4;53991:49;54070:4;54064:11;54169:16;54162:4;54154:6;54150:17;54147:39;54114:18;54106:6;54103:30;54087:113;54084:146;;;54215:5;;;;54084:146;54261:6;54255:4;54251:17;54297:3;54291:10;54324:18;54316:6;54313:30;54310:43;;;54346:5;;;;;;54310:43;54394:6;54387:4;54382:3;54378:14;54374:27;54453:1;54435:16;54431:24;54425:4;54421:35;54416:3;54413:44;54410:57;;;54460:5;;;;;;;54410:57;54477;54525:6;54519:4;54515:17;54507:6;54503:30;54497:4;54477:57;:::i;:::-;54550:3;54543:10;;53891:668;;;;;53848:711;;:::o;54565:122::-;54638:24;54656:5;54638:24;:::i;:::-;54631:5;54628:35;54618:63;;54677:1;54674;54667:12;54618:63;54565:122;:::o;54693:116::-;54763:21;54778:5;54763:21;:::i;:::-;54756:5;54753:32;54743:60;;54799:1;54796;54789:12;54743:60;54693:116;:::o;54815:122::-;54888:24;54906:5;54888:24;:::i;:::-;54881:5;54878:35;54868:63;;54927:1;54924;54917:12;54868:63;54815:122;:::o;54943:120::-;55015:23;55032:5;55015:23;:::i;:::-;55008:5;55005:34;54995:62;;55053:1;55050;55043:12;54995:62;54943:120;:::o;55069:122::-;55142:24;55160:5;55142:24;:::i;:::-;55135:5;55132:35;55122:63;;55181:1;55178;55171:12;55122:63;55069:122;:::o
Swarm Source
ipfs://2df25bef13511d5fdc99deefa47896bc0aef5d5d0215c80c083b7dfbc7dbc32e
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.