Indexing Tokens - We're indexing this chain right now. Some of the counts may be inaccurate.

Contract Address Details

0x50B4D70FE655EdeAce269689aA8994634fa1860B

Contract Name
AccessControlConditions
Creator
0x046bf7–da7b9c at 0xbb96d7–338551
Balance
0 LIT
Tokens
Fetching tokens...
Transactions
0 Transactions
Transfers
0 Transfers
Gas Used
Fetching gas used...
Last Balance Update
2793402
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-later
pragma 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,
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

@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.
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

@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;
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

@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;
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

hardhat/console.sol

// SPDX-License-Identifier: MIT
pragma 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));
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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