- Contract name:
- AccessControlConditions
- Optimization enabled
- false
- Compiler version
- v0.8.17+commit.8df45f5f
- Verified at
- 2023-07-13T20:09:53.558270Z
contracts/lit-node/AccessControlConditions.sol
//SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity ^0.8.17;import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";import { ReentrancyGuard } from "@openzeppelin/contracts/security/ReentrancyGuard.sol";import "hardhat/console.sol";contract AccessControlConditions is Ownable, ReentrancyGuard {/* ========== STRUCTS ========== */struct StoredCondition {uint256 value;uint256 securityHash;uint256 chainId;bool permanent;address creator;}/* ========== STATE VARIABLES ========== */mapping(uint256 => StoredCondition) public storedConditions;address public signer;/* ========== CONSTRUCTOR ========== */constructor() {signer = msg.sender;}/* ========== VIEWS ========== */function getCondition(uint256 key) external view returns (StoredCondition memory) {return storedConditions[key];}/* ========== MUTATIVE FUNCTIONS ========== */function storeCondition(uint256 key,uint256 value,
@openzeppelin/contracts/access/Ownable.sol
// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)pragma solidity ^0.8.0;import "../utils/Context.sol";/*** @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 Throws if called by any account other than the owner.*/modifier onlyOwner() {_checkOwner();_;}/*** @dev Returns the address of the current owner.
@openzeppelin/contracts/security/ReentrancyGuard.sol
// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)pragma solidity ^0.8.0;/*** @dev Contract module that helps prevent reentrant calls to a function.** Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier* available, which can be applied to functions to make sure there are no nested* (reentrant) calls to them.** Note that because there is a single `nonReentrant` guard, functions marked as* `nonReentrant` may not call one another. This can be worked around by making* those functions `private`, and then adding `external` `nonReentrant` entry* points to them.** TIP: If you would like to learn more about reentrancy and alternative ways* to protect against it, check out our blog post* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].*/abstract contract ReentrancyGuard {// Booleans are more expensive than uint256 or any type that takes up a full// word because each write operation emits an extra SLOAD to first read the// slot's contents, replace the bits taken up by the boolean, and then write// back. This is the compiler's defense against contract upgrades and// pointer aliasing, and it cannot be disabled.// The values being non-zero value makes deployment a bit more expensive,// but in exchange the refund on every call to nonReentrant will be lower in// amount. Since refunds are capped to a percentage of the total// transaction's gas, it is best to keep them low in cases like this one, to// increase the likelihood of the full refund coming into effect.uint256 private constant _NOT_ENTERED = 1;uint256 private constant _ENTERED = 2;uint256 private _status;constructor() {_status = _NOT_ENTERED;}
@openzeppelin/contracts/utils/Context.sol
// SPDX-License-Identifier: MIT// 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;}}
hardhat/console.sol
// SPDX-License-Identifier: MITpragma solidity >= 0.4.22 <0.9.0;library console {address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);function _sendLogPayload(bytes memory payload) private view {uint256 payloadLength = payload.length;address consoleAddress = CONSOLE_ADDRESS;assembly {let payloadStart := add(payload, 32)let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)}}function log() internal view {_sendLogPayload(abi.encodeWithSignature("log()"));}function logInt(int256 p0) internal view {_sendLogPayload(abi.encodeWithSignature("log(int256)", p0));}function logUint(uint256 p0) internal view {_sendLogPayload(abi.encodeWithSignature("log(uint256)", p0));}function logString(string memory p0) internal view {_sendLogPayload(abi.encodeWithSignature("log(string)", p0));}function logBool(bool p0) internal view {_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));}function logAddress(address p0) internal view {_sendLogPayload(abi.encodeWithSignature("log(address)", p0));}function logBytes(bytes memory p0) internal view {_sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"ConditionStored","inputs":[{"type":"uint256","name":"key","internalType":"uint256","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false},{"type":"uint256","name":"chainId","internalType":"uint256","indexed":false},{"type":"bool","name":"permanent","internalType":"bool","indexed":false},{"type":"address","name":"creator","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"tuple","name":"","internalType":"struct AccessControlConditions.StoredCondition","components":[{"type":"uint256","name":"value","internalType":"uint256"},{"type":"uint256","name":"securityHash","internalType":"uint256"},{"type":"uint256","name":"chainId","internalType":"uint256"},{"type":"bool","name":"permanent","internalType":"bool"},{"type":"address","name":"creator","internalType":"address"}]}],"name":"getCondition","inputs":[{"type":"uint256","name":"key","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSigner","inputs":[{"type":"address","name":"newSigner","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"signer","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"storeCondition","inputs":[{"type":"uint256","name":"key","internalType":"uint256"},{"type":"uint256","name":"value","internalType":"uint256"},{"type":"uint256","name":"securityHash","internalType":"uint256"},{"type":"uint256","name":"chainId","internalType":"uint256"},{"type":"bool","name":"permanent","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"storeConditionWithSigner","inputs":[{"type":"uint256","name":"key","internalType":"uint256"},{"type":"uint256","name":"value","internalType":"uint256"},{"type":"uint256","name":"securityHash","internalType":"uint256"},{"type":"uint256","name":"chainId","internalType":"uint256"},{"type":"bool","name":"permanent","internalType":"bool"},{"type":"address","name":"creatorAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"value","internalType":"uint256"},{"type":"uint256","name":"securityHash","internalType":"uint256"},{"type":"uint256","name":"chainId","internalType":"uint256"},{"type":"bool","name":"permanent","internalType":"bool"},{"type":"address","name":"creator","internalType":"address"}],"name":"storedConditions","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
Contract Creation Code
0x608060405234801561001057600080fd5b5061002d61002261007a60201b60201c565b61008260201b60201c565b6001808190555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610146565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61125b806101556000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637bf212f8116100665780637bf212f8146100f85780638da5cb5b146101285780639fd040da14610146578063f2fde38b1461017a578063ff27f2df1461019657610093565b8063238ac933146100985780636c19e783146100b6578063715018a6146100d25780637265434f146100dc575b600080fd5b6100a06101b2565b6040516100ad9190610a74565b60405180910390f35b6100d060048036038101906100cb9190610ac0565b6101d8565b005b6100da610224565b005b6100f660048036038101906100f19190610b5b565b610238565b005b610112600480360381019061010d9190610be8565b6102ee565b60405161011f9190610caa565b60405180910390f35b6101306103aa565b60405161013d9190610a74565b60405180910390f35b610160600480360381019061015b9190610be8565b6103d3565b604051610171959493929190610ce3565b60405180910390f35b610194600480360381019061018f9190610ac0565b610436565b005b6101b060048036038101906101ab9190610d36565b6104b9565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6101e06104de565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61022c6104de565b610236600061055c565b565b610240610620565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c790610e34565b60405180910390fd5b6102de86868686868661066f565b6102e66109db565b505050505050565b6102f66109ec565b600260008381526020019081526020016000206040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60026020528060005260406000206000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16908060030160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b61043e6104de565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a490610ec6565b60405180910390fd5b6104b68161055c565b50565b6104c1610620565b6104cf85858585853361066f565b6104d76109db565b5050505050565b6104e66109e4565b73ffffffffffffffffffffffffffffffffffffffff166105046103aa565b73ffffffffffffffffffffffffffffffffffffffff161461055a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055190610f32565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403610665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065c90610f9e565b60405180910390fd5b6002600181905550565b600086036106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a99061100a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600088815260200190815260200160002060030160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bb578073ffffffffffffffffffffffffffffffffffffffff166002600088815260200190815260200160002060030160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b79061109c565b60405180910390fd5b600015156002600088815260200190815260200160002060030160009054906101000a900460ff1615151461082a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082190611154565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036108ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b1906111c0565b60405180910390fd5b5b6040518060a0016040528086815260200185815260200184815260200183151581526020018273ffffffffffffffffffffffffffffffffffffffff168152506002600088815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050857ffb2c1b4938e3cf2dc95120a73dce224dfc1108057906403d419bc7a1748f2cd0868585856040516109cb94939291906111e0565b60405180910390a2505050505050565b60018081905550565b600033905090565b6040518060a00160405280600081526020016000815260200160008152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610a5e82610a33565b9050919050565b610a6e81610a53565b82525050565b6000602082019050610a896000830184610a65565b92915050565b600080fd5b610a9d81610a53565b8114610aa857600080fd5b50565b600081359050610aba81610a94565b92915050565b600060208284031215610ad657610ad5610a8f565b5b6000610ae484828501610aab565b91505092915050565b6000819050919050565b610b0081610aed565b8114610b0b57600080fd5b50565b600081359050610b1d81610af7565b92915050565b60008115159050919050565b610b3881610b23565b8114610b4357600080fd5b50565b600081359050610b5581610b2f565b92915050565b60008060008060008060c08789031215610b7857610b77610a8f565b5b6000610b8689828a01610b0e565b9650506020610b9789828a01610b0e565b9550506040610ba889828a01610b0e565b9450506060610bb989828a01610b0e565b9350506080610bca89828a01610b46565b92505060a0610bdb89828a01610aab565b9150509295509295509295565b600060208284031215610bfe57610bfd610a8f565b5b6000610c0c84828501610b0e565b91505092915050565b610c1e81610aed565b82525050565b610c2d81610b23565b82525050565b610c3c81610a53565b82525050565b60a082016000820151610c586000850182610c15565b506020820151610c6b6020850182610c15565b506040820151610c7e6040850182610c15565b506060820151610c916060850182610c24565b506080820151610ca46080850182610c33565b50505050565b600060a082019050610cbf6000830184610c42565b92915050565b610cce81610aed565b82525050565b610cdd81610b23565b82525050565b600060a082019050610cf86000830188610cc5565b610d056020830187610cc5565b610d126040830186610cc5565b610d1f6060830185610cd4565b610d2c6080830184610a65565b9695505050505050565b600080600080600060a08688031215610d5257610d51610a8f565b5b6000610d6088828901610b0e565b9550506020610d7188828901610b0e565b9450506040610d8288828901610b0e565b9350506060610d9388828901610b0e565b9250506080610da488828901610b46565b9150509295509295909350565b600082825260208201905092915050565b7f4f6e6c79207369676e65722063616e2063616c6c2073746f7265436f6e64697460008201527f696f6e73576974685369676e65722e0000000000000000000000000000000000602082015250565b6000610e1e602f83610db1565b9150610e2982610dc2565b604082019050919050565b60006020820190508181036000830152610e4d81610e11565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610eb0602683610db1565b9150610ebb82610e54565b604082019050919050565b60006020820190508181036000830152610edf81610ea3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610f1c602083610db1565b9150610f2782610ee6565b602082019050919050565b60006020820190508181036000830152610f4b81610f0f565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000610f88601f83610db1565b9150610f9382610f52565b602082019050919050565b60006020820190508181036000830152610fb781610f7b565b9050919050565b7f4b6579206d757374206e6f74206265207a65726f000000000000000000000000600082015250565b6000610ff4601483610db1565b9150610fff82610fbe565b602082019050919050565b6000602082019050818103600083015261102381610fe7565b9050919050565b7f4f6e6c792074686520636f6e646974696f6e2063726561746f722063616e207560008201527f7064617465206974000000000000000000000000000000000000000000000000602082015250565b6000611086602883610db1565b91506110918261102a565b604082019050919050565b600060208201905081810360008301526110b581611079565b9050919050565b7f5468697320636f6e646974696f6e207761732073746f7265642077697468207460008201527f6865205065726d616e656e7420666c616720616e642063616e6e6f742062652060208201527f7570646174656400000000000000000000000000000000000000000000000000604082015250565b600061113e604783610db1565b9150611149826110bc565b606082019050919050565b6000602082019050818103600083015261116d81611131565b9050919050565b7f5369676e65722063616e6e6f742075706461746520636f6e646974696f6e7300600082015250565b60006111aa601f83610db1565b91506111b582611174565b602082019050919050565b600060208201905081810360008301526111d98161119d565b9050919050565b60006080820190506111f56000830187610cc5565b6112026020830186610cc5565b61120f6040830185610cd4565b61121c6060830184610a65565b9594505050505056fea26469706673582212205dc0222eb46d53f63b47b46b5e61ae07b39b61220b6d2aa5bb1df7a705eae70464736f6c63430008110033
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c80637bf212f8116100665780637bf212f8146100f85780638da5cb5b146101285780639fd040da14610146578063f2fde38b1461017a578063ff27f2df1461019657610093565b8063238ac933146100985780636c19e783146100b6578063715018a6146100d25780637265434f146100dc575b600080fd5b6100a06101b2565b6040516100ad9190610a74565b60405180910390f35b6100d060048036038101906100cb9190610ac0565b6101d8565b005b6100da610224565b005b6100f660048036038101906100f19190610b5b565b610238565b005b610112600480360381019061010d9190610be8565b6102ee565b60405161011f9190610caa565b60405180910390f35b6101306103aa565b60405161013d9190610a74565b60405180910390f35b610160600480360381019061015b9190610be8565b6103d3565b604051610171959493929190610ce3565b60405180910390f35b610194600480360381019061018f9190610ac0565b610436565b005b6101b060048036038101906101ab9190610d36565b6104b9565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6101e06104de565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61022c6104de565b610236600061055c565b565b610240610620565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c790610e34565b60405180910390fd5b6102de86868686868661066f565b6102e66109db565b505050505050565b6102f66109ec565b600260008381526020019081526020016000206040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60026020528060005260406000206000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16908060030160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b61043e6104de565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a490610ec6565b60405180910390fd5b6104b68161055c565b50565b6104c1610620565b6104cf85858585853361066f565b6104d76109db565b5050505050565b6104e66109e4565b73ffffffffffffffffffffffffffffffffffffffff166105046103aa565b73ffffffffffffffffffffffffffffffffffffffff161461055a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055190610f32565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403610665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065c90610f9e565b60405180910390fd5b6002600181905550565b600086036106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a99061100a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600088815260200190815260200160002060030160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bb578073ffffffffffffffffffffffffffffffffffffffff166002600088815260200190815260200160002060030160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b79061109c565b60405180910390fd5b600015156002600088815260200190815260200160002060030160009054906101000a900460ff1615151461082a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082190611154565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036108ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b1906111c0565b60405180910390fd5b5b6040518060a0016040528086815260200185815260200184815260200183151581526020018273ffffffffffffffffffffffffffffffffffffffff168152506002600088815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050857ffb2c1b4938e3cf2dc95120a73dce224dfc1108057906403d419bc7a1748f2cd0868585856040516109cb94939291906111e0565b60405180910390a2505050505050565b60018081905550565b600033905090565b6040518060a00160405280600081526020016000815260200160008152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610a5e82610a33565b9050919050565b610a6e81610a53565b82525050565b6000602082019050610a896000830184610a65565b92915050565b600080fd5b610a9d81610a53565b8114610aa857600080fd5b50565b600081359050610aba81610a94565b92915050565b600060208284031215610ad657610ad5610a8f565b5b6000610ae484828501610aab565b91505092915050565b6000819050919050565b610b0081610aed565b8114610b0b57600080fd5b50565b600081359050610b1d81610af7565b92915050565b60008115159050919050565b610b3881610b23565b8114610b4357600080fd5b50565b600081359050610b5581610b2f565b92915050565b60008060008060008060c08789031215610b7857610b77610a8f565b5b6000610b8689828a01610b0e565b9650506020610b9789828a01610b0e565b9550506040610ba889828a01610b0e565b9450506060610bb989828a01610b0e565b9350506080610bca89828a01610b46565b92505060a0610bdb89828a01610aab565b9150509295509295509295565b600060208284031215610bfe57610bfd610a8f565b5b6000610c0c84828501610b0e565b91505092915050565b610c1e81610aed565b82525050565b610c2d81610b23565b82525050565b610c3c81610a53565b82525050565b60a082016000820151610c586000850182610c15565b506020820151610c6b6020850182610c15565b506040820151610c7e6040850182610c15565b506060820151610c916060850182610c24565b506080820151610ca46080850182610c33565b50505050565b600060a082019050610cbf6000830184610c42565b92915050565b610cce81610aed565b82525050565b610cdd81610b23565b82525050565b600060a082019050610cf86000830188610cc5565b610d056020830187610cc5565b610d126040830186610cc5565b610d1f6060830185610cd4565b610d2c6080830184610a65565b9695505050505050565b600080600080600060a08688031215610d5257610d51610a8f565b5b6000610d6088828901610b0e565b9550506020610d7188828901610b0e565b9450506040610d8288828901610b0e565b9350506060610d9388828901610b0e565b9250506080610da488828901610b46565b9150509295509295909350565b600082825260208201905092915050565b7f4f6e6c79207369676e65722063616e2063616c6c2073746f7265436f6e64697460008201527f696f6e73576974685369676e65722e0000000000000000000000000000000000602082015250565b6000610e1e602f83610db1565b9150610e2982610dc2565b604082019050919050565b60006020820190508181036000830152610e4d81610e11565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610eb0602683610db1565b9150610ebb82610e54565b604082019050919050565b60006020820190508181036000830152610edf81610ea3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610f1c602083610db1565b9150610f2782610ee6565b602082019050919050565b60006020820190508181036000830152610f4b81610f0f565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000610f88601f83610db1565b9150610f9382610f52565b602082019050919050565b60006020820190508181036000830152610fb781610f7b565b9050919050565b7f4b6579206d757374206e6f74206265207a65726f000000000000000000000000600082015250565b6000610ff4601483610db1565b9150610fff82610fbe565b602082019050919050565b6000602082019050818103600083015261102381610fe7565b9050919050565b7f4f6e6c792074686520636f6e646974696f6e2063726561746f722063616e207560008201527f7064617465206974000000000000000000000000000000000000000000000000602082015250565b6000611086602883610db1565b91506110918261102a565b604082019050919050565b600060208201905081810360008301526110b581611079565b9050919050565b7f5468697320636f6e646974696f6e207761732073746f7265642077697468207460008201527f6865205065726d616e656e7420666c616720616e642063616e6e6f742062652060208201527f7570646174656400000000000000000000000000000000000000000000000000604082015250565b600061113e604783610db1565b9150611149826110bc565b606082019050919050565b6000602082019050818103600083015261116d81611131565b9050919050565b7f5369676e65722063616e6e6f742075706461746520636f6e646974696f6e7300600082015250565b60006111aa601f83610db1565b91506111b582611174565b602082019050919050565b600060208201905081810360008301526111d98161119d565b9050919050565b60006080820190506111f56000830187610cc5565b6112026020830186610cc5565b61120f6040830185610cd4565b61121c6060830184610a65565b9594505050505056fea26469706673582212205dc0222eb46d53f63b47b46b5e61ae07b39b61220b6d2aa5bb1df7a705eae70464736f6c63430008110033