Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
LasmStaking
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-07-17
*/
// File: hardhat/console.sol
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(int p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(int)", p0));
}
function logUint(uint p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint)", 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));
}
function logBytes1(bytes1 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
}
function logBytes2(bytes2 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
}
function logBytes3(bytes3 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
}
function logBytes4(bytes4 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
}
function logBytes5(bytes5 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
}
function logBytes6(bytes6 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
}
function logBytes7(bytes7 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
}
function logBytes8(bytes8 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
}
function logBytes9(bytes9 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
}
function logBytes10(bytes10 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
}
function logBytes11(bytes11 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
}
function logBytes12(bytes12 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
}
function logBytes13(bytes13 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
}
function logBytes14(bytes14 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
}
function logBytes15(bytes15 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
}
function logBytes16(bytes16 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
}
function logBytes17(bytes17 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
}
function logBytes18(bytes18 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
}
function logBytes19(bytes19 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
}
function logBytes20(bytes20 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
}
function logBytes21(bytes21 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
}
function logBytes22(bytes22 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
}
function logBytes23(bytes23 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
}
function logBytes24(bytes24 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
}
function logBytes25(bytes25 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
}
function logBytes26(bytes26 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
}
function logBytes27(bytes27 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
}
function logBytes28(bytes28 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
}
function logBytes29(bytes29 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
}
function logBytes30(bytes30 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
}
function logBytes31(bytes31 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
}
function logBytes32(bytes32 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
}
function log(uint p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
}
function log(string memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function log(bool p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function log(address p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function log(uint p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1));
}
function log(uint p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1));
}
function log(uint p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1));
}
function log(uint p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1));
}
function log(string memory p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1));
}
function log(string memory p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
}
function log(string memory p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
}
function log(string memory p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
}
function log(bool p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1));
}
function log(bool p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
}
function log(bool p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
}
function log(bool p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
}
function log(address p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1));
}
function log(address p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
}
function log(address p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
}
function log(address p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
}
function log(uint p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2));
}
function log(uint p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2));
}
function log(uint p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2));
}
function log(uint p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2));
}
function log(uint p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2));
}
function log(uint p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2));
}
function log(uint p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2));
}
function log(uint p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2));
}
function log(uint p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2));
}
function log(uint p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2));
}
function log(uint p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2));
}
function log(uint p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2));
}
function log(uint p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2));
}
function log(uint p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2));
}
function log(uint p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2));
}
function log(uint p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2));
}
function log(string memory p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2));
}
function log(string memory p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2));
}
function log(string memory p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2));
}
function log(string memory p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2));
}
function log(string memory p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2));
}
function log(string memory p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
}
function log(string memory p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
}
function log(string memory p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
}
function log(string memory p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2));
}
function log(string memory p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
}
function log(string memory p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
}
function log(string memory p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
}
function log(string memory p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2));
}
function log(string memory p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
}
function log(string memory p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
}
function log(string memory p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
}
function log(bool p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2));
}
function log(bool p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2));
}
function log(bool p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2));
}
function log(bool p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2));
}
function log(bool p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2));
}
function log(bool p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
}
function log(bool p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
}
function log(bool p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
}
function log(bool p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2));
}
function log(bool p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
}
function log(bool p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
}
function log(bool p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
}
function log(bool p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2));
}
function log(bool p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
}
function log(bool p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
}
function log(bool p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
}
function log(address p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2));
}
function log(address p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2));
}
function log(address p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2));
}
function log(address p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2));
}
function log(address p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2));
}
function log(address p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
}
function log(address p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
}
function log(address p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
}
function log(address p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2));
}
function log(address p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
}
function log(address p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
}
function log(address p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
}
function log(address p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2));
}
function log(address p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
}
function log(address p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
}
function log(address p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
}
function log(uint p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
}
}
// File: @openzeppelin/contracts/security/ReentrancyGuard.sol
// OpenZeppelin Contracts v4.4.1 (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;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}
// File: @openzeppelin/contracts/interfaces/IERC20.sol
// OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol)
pragma solidity ^0.8.0;
// 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 (last updated v4.7.0) (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 Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
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: contracts/Lasm_Staking.sol
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;
contract LasmStaking is Ownable,ReentrancyGuard{
IERC20 Token;
uint public rewardTokenSupply;
uint public totalStakedToken;
struct info{
uint amount;
uint lastClaim;
uint stakeTime;
uint durationCode;
uint position;
uint earned;
}
uint[4] public durations = [30 days, 180 days, 365 days, 730 days];
uint[4] public rates = [1, 7, 15, 32];
mapping(address=>mapping(uint=>info)) public userStaked; //USER > ID > INFO
mapping(address=>uint) public userId;
mapping(address=>uint) public userTotalEarnedReward;
mapping(address=>uint) public userTotalStaked;
mapping(address=>uint[]) public stakedIds;
bool public paused;
event StakeAdded(
address indexed _usr,
uint _amount,
uint startStakingTime,
uint8 _durationCode,
uint _stakedIndex
);
event Unstaked(address indexed _usr, uint _stakeIndex);
event ClaimReward(address indexed _from, uint _claimedTime, uint _stakeIndex);
event ClaimRewardAll(address indexed _from, uint _claimedTime, uint _amount);
event Paused();
event Unpaused();
event RewardTokenRewardAdded(address indexed _from, uint256 _amount);
event RewardTokenRewardRemoved(address indexed _to, uint256 _amount);
event UpdateDuration(address indexed _from);
event UpdateRate(address indexed _from);
constructor(address _token) {
Token = IERC20(_token);
}
function addStakedTokenReward(uint256 _amount)
external
onlyOwner
{
//transfer from (need allowance)
rewardTokenSupply += _amount;
Token.transferFrom(msg.sender, address(this), _amount);
emit RewardTokenRewardAdded(msg.sender, _amount);
}
function removeStakedTokenReward(uint256 _amount)
external
onlyOwner
{
require(_amount <= rewardTokenSupply, "you cannot withdraw this amount");
rewardTokenSupply -= _amount;
Token.transfer(msg.sender, _amount);
emit RewardTokenRewardRemoved(msg.sender, _amount);
}
function updateDuration(uint[4] memory _durations) external onlyOwner {
durations = _durations;
emit UpdateDuration(msg.sender);
}
function updateRate(uint[4] memory _rates) external onlyOwner {
rates = _rates;
emit UpdateRate(msg.sender);
}
function stake(uint _amount, uint8 _durationCode) external {
require(!paused,"Execution paused");
require(_durationCode < 4,"Invalid duration");
userId[msg.sender]++;
userStaked[msg.sender][userId[msg.sender]] = info(_amount, block.timestamp, block.timestamp,
_durationCode, stakedIds[msg.sender].length, 0);
stakedIds[msg.sender].push(userId[msg.sender]);
require(Token.transferFrom(msg.sender, address(this), _amount), "Amount not sent");
totalStakedToken += _amount;
userTotalStaked[msg.sender] += _amount;
emit StakeAdded(
msg.sender,
_amount,
block.timestamp,
_durationCode,
stakedIds[msg.sender].length - 1
);
}
function getReward(address _user, uint _id) public view returns(uint) {
info storage userInfo = userStaked[_user][_id];
uint timeDiff = block.timestamp - userInfo.lastClaim;
uint reward = userInfo.amount * timeDiff * rates[userInfo.durationCode] /
(durations[userInfo.durationCode] * 100);
return reward;
}
function getAllReward(address _user) public view returns(uint) {
uint amount = 0;
uint length = stakedIds[_user].length;
for(uint i=0; i<length; i++){
info storage userInfo = userStaked[_user][stakedIds[_user][i]];
if (userInfo.amount == 0)
continue;
uint amountIndex = getReward(_user, stakedIds[_user][i]);
amount += amountIndex;
}
return amount;
}
function getStakedInfo(address _user) public view
returns (info[] memory infors, uint[] memory claimable, uint[] memory pending) {
uint length = stakedIds[_user].length;
infors = new info[](length);
claimable = new uint[](length);
pending = new uint[](length);
for(uint i=0; i<length; i++){
info storage userInfo = userStaked[_user][stakedIds[_user][i]];
infors[i] = userInfo;
pending[i] = getReward(_user, stakedIds[_user][i]);
claimable[i] = claimableReward(_user, stakedIds[_user][i]);
}
}
function claimableReward(address _user, uint _id) public view returns(uint) {
info storage userInfo = userStaked[_user][_id];
if (block.timestamp - userInfo.stakeTime < durations[userInfo.durationCode])
return 0;
return getReward(_user, _id);
}
function claimableAllReward(address _user) public view returns(uint) {
uint amount = 0;
uint length = stakedIds[_user].length;
for(uint i=0; i<length; i++){
info storage userInfo = userStaked[_user][stakedIds[_user][i]];
if (userInfo.amount == 0)
continue;
if (block.timestamp - userInfo.stakeTime < durations[userInfo.durationCode])
continue;
uint amountIndex = getReward(_user, stakedIds[_user][i]);
amount += amountIndex;
}
return amount;
}
function claimReward(uint _id) public nonReentrant {
info storage userInfo = userStaked[msg.sender][_id];
require (block.timestamp - userInfo.stakeTime >= durations[userInfo.durationCode],
"Not claim yet, Locked period still.");
claim(_id);
emit ClaimReward(msg.sender, block.timestamp, _id);
}
function claim(uint _id) private {
uint amount = 0;
require(userStaked[msg.sender][_id].amount != 0, "Invalid ID");
amount = getReward(msg.sender, _id);
require(
Token.balanceOf(address(this)) >= amount,
"Insufficient token to pay your reward right now"
);
Token.transfer(msg.sender, amount);
info storage userInfo = userStaked[msg.sender][_id];
userInfo.lastClaim = block.timestamp;
userInfo.earned += amount;
userTotalEarnedReward[msg.sender] += amount;
rewardTokenSupply -= amount;
}
function claimAllReward() public nonReentrant {
uint amount = 0;
uint length = stakedIds[msg.sender].length;
for(uint i=0; i<length; i++){
info storage userInfo = userStaked[msg.sender][stakedIds[msg.sender][i]];
if (userInfo.amount == 0)
continue;
if (block.timestamp - userInfo.stakeTime < durations[userInfo.durationCode])
continue;
uint amountIndex = getReward(msg.sender, stakedIds[msg.sender][i]);
if (amountIndex == 0)
continue;
userInfo.lastClaim = block.timestamp;
userInfo.earned += amountIndex;
amount += amountIndex;
}
Token.transfer(msg.sender, amount);
rewardTokenSupply -= amount;
userTotalEarnedReward[msg.sender] += amount;
emit ClaimRewardAll(msg.sender, block.timestamp, amount);
}
function unstake(uint _amount, uint _id) external nonReentrant{
claim(_id);
info storage userInfo = userStaked[msg.sender][_id];
require(userInfo.amount != 0 && _amount <= userInfo.amount ,"Invalid ID");
require(block.timestamp - userInfo.stakeTime >= durations[userInfo.durationCode], "Not unlocked yet");
if (_amount == userInfo.amount) {
popSlot(_id);
delete userStaked[msg.sender][_id];
}
else
userInfo.amount -= _amount;
require(
Token.balanceOf(address(this)) >= _amount,
"Insufficient token to unstake right now"
);
Token.transfer(msg.sender, _amount);
totalStakedToken -= _amount;
userTotalStaked[msg.sender] -= _amount;
emit Unstaked(msg.sender, _id);
}
function unstake(uint _id) external nonReentrant{
claim(_id);
info storage userInfo = userStaked[msg.sender][_id];
require(userInfo.amount != 0,"Invalid ID");
require(block.timestamp - userInfo.stakeTime >= durations[userInfo.durationCode], "Not unlocked yet");
require(
Token.balanceOf(address(this)) >= userInfo.amount,
"Insufficient token to unstake right now"
);
Token.transfer(msg.sender, userInfo.amount);
popSlot(_id);
delete userStaked[msg.sender][_id];
totalStakedToken -= userInfo.amount;
userTotalStaked[msg.sender] -= userInfo.amount;
emit Unstaked(msg.sender, _id);
}
function popSlot(uint _id) internal {
uint length = stakedIds[msg.sender].length;
bool replace = false;
for (uint256 i=0; i<length; i++) {
if (stakedIds[msg.sender][i] == _id)
replace = true;
if (replace && i<length-1)
stakedIds[msg.sender][i] = stakedIds[msg.sender][i+1];
}
stakedIds[msg.sender].pop();
}
function setToken(address _token) external onlyOwner{
Token = IERC20(_token);
}
function Pause() external onlyOwner {
paused = true;
emit Paused();
}
function unpause() external onlyOwner {
paused = false;
emit Unpaused();
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"uint256","name":"_claimedTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_stakeIndex","type":"uint256"}],"name":"ClaimReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"uint256","name":"_claimedTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"ClaimRewardAll","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":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"RewardTokenRewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"RewardTokenRewardRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_usr","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startStakingTime","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"_durationCode","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"_stakedIndex","type":"uint256"}],"name":"StakeAdded","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_usr","type":"address"},{"indexed":false,"internalType":"uint256","name":"_stakeIndex","type":"uint256"}],"name":"Unstaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"}],"name":"UpdateDuration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"}],"name":"UpdateRate","type":"event"},{"inputs":[],"name":"Pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addStakedTokenReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimAllReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"claimableAllReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"claimableReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"durations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getAllReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getStakedInfo","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lastClaim","type":"uint256"},{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"durationCode","type":"uint256"},{"internalType":"uint256","name":"position","type":"uint256"},{"internalType":"uint256","name":"earned","type":"uint256"}],"internalType":"struct LasmStaking.info[]","name":"infors","type":"tuple[]"},{"internalType":"uint256[]","name":"claimable","type":"uint256[]"},{"internalType":"uint256[]","name":"pending","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rates","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"removeStakedTokenReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardTokenSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint8","name":"_durationCode","type":"uint8"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakedToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[4]","name":"_durations","type":"uint256[4]"}],"name":"updateDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[4]","name":"_rates","type":"uint256[4]"}],"name":"updateRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userStaked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lastClaim","type":"uint256"},{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"durationCode","type":"uint256"},{"internalType":"uint256","name":"position","type":"uint256"},{"internalType":"uint256","name":"earned","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userTotalEarnedReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userTotalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
61010060405262278d00608090815262ed4e0060a0526301e1338060c0526303c2670060e0526200003590600590600462000126565b5060408051608081018252600181526007602080830191909152600f9282019290925260608101919091526200007090600990600462000171565b503480156200007e57600080fd5b506040516200244038038062002440833981016040819052620000a191620001be565b620000ac33620000d6565b60018055600280546001600160a01b0319166001600160a01b0392909216919091179055620001f0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82600481019282156200015f579160200282015b828111156200015f578251829063ffffffff169055916020019190600101906200013a565b506200016d929150620001a7565b5090565b82600481019282156200015f579160200282015b828111156200015f578251829060ff1690559160200191906001019062000185565b5b808211156200016d5760008155600101620001a8565b600060208284031215620001d157600080fd5b81516001600160a01b0381168114620001e957600080fd5b9392505050565b61224080620002006000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638a623d8611610104578063ae169a50116100a2578063cb6d8ee611610071578063cb6d8ee61461045c578063dd418ae214610465578063f2fde38b14610478578063f474c8ce1461048b57600080fd5b8063ae169a5014610410578063b8e58c3914610423578063bc20a7af14610436578063cada7df91461044957600080fd5b80639e2c8a5b116100de5780639e2c8a5b14610359578063a39b21531461036c578063a5d3c51e146103e7578063ac78599c146103f057600080fd5b80638a623d86146103235780638da5cb5b1461032b57806396bfdcfe1461034657600080fd5b8063463c56cc1161017c5780636bd97f1d1161014b5780636bd97f1d146102d5578063715018a6146102e8578063719de1ef146102f05780637e0391531461031057600080fd5b8063463c56cc1461028a5780634d85bd9f1461029d5780635c975abb146102b05780636985a022146102cd57600080fd5b806334eeee5a116101b857806334eeee5a1461021a578063376fe1021461022d5780633f4ba83a14610260578063434dcc171461026857600080fd5b806310087fb1146101df578063144fa6d7146101f45780632e17de7814610207575b600080fd5b6101f26101ed366004611e15565b61049e565b005b6101f2610202366004611e67565b610766565b6101f2610215366004611e89565b610790565b6101f2610228366004611eb8565b610a2d565b61024d61023b366004611e67565b600e6020526000908152604090205481565b6040519081526020015b60405180910390f35b6101f2610a71565b61027b610276366004611e67565b610aae565b60405161025793929190611f7f565b6101f2610298366004611eb8565b610d8b565b6101f26102ab366004611e89565b610dcf565b6012546102bd9060ff1681565b6040519015158152602001610257565b6101f2610eef565b61024d6102e3366004612014565b610f2f565b6101f2610f9f565b61024d6102fe366004611e67565b60106020526000908152604090205481565b6101f261031e366004611e89565b610fb3565b6101f2611080565b6000546040516001600160a01b039091168152602001610257565b61024d610354366004612014565b6112b8565b6101f261036736600461203e565b6112e9565b6103ba61037a366004612014565b600d602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610257565b61024d60035481565b61024d6103fe366004611e67565b600f6020526000908152604090205481565b6101f261041e366004611e89565b6115b1565b61024d610431366004611e67565b6116b7565b61024d610444366004611e89565b61179d565b61024d610457366004611e67565b6117b4565b61024d60045481565b61024d610473366004611e89565b6118c5565b6101f2610486366004611e67565b6118d5565b61024d610499366004612014565b61194e565b60125460ff16156104e95760405162461bcd60e51b815260206004820152601060248201526f115e1958dd5d1a5bdb881c185d5cd95960821b60448201526064015b60405180910390fd5b60048160ff161061052f5760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b210323ab930ba34b7b760811b60448201526064016104e0565b336000908152600e6020526040812080549161054a83612076565b90915550506040805160c08101825283815242602080830182815283850192835260ff8616606085019081523360008181526011855287812080546080890190815260a08901838152848452600d88528a8420600e808a528c862080548752918a528c86209b518c5597516001808d019190915599516002808d0191909155965160038c015591516004808c019190915590516005909a01999099559486529354845496870185559381529390932090930155905492516323b872dd60e01b815291820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610650573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106749190612091565b6106b25760405162461bcd60e51b815260206004820152600f60248201526e105b5bdd5b9d081b9bdd081cd95b9d608a1b60448201526064016104e0565b81600460008282546106c491906120b3565b909155505033600090815260106020526040812080548492906106e89084906120b3565b9091555050336000818152601160205260409020547fc0c6fd4735a5e02cf7ef68a5afee7a731a38cf82bde401560092dc284869f54490849042908590610731906001906120cb565b60405161075a9493929190938452602084019290925260ff166040830152606082015260800190565b60405180910390a25050565b61076e6119ee565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600260015414156107b35760405162461bcd60e51b81526004016104e0906120e2565b60026001556107c181611a48565b336000908152600d60209081526040808320848452909152902080546107f95760405162461bcd60e51b81526004016104e090612119565b60058160030154600481106108105761081061213d565b0154600282015461082190426120cb565b10156108625760405162461bcd60e51b815260206004820152601060248201526f139bdd081d5b9b1bd8dad959081e595d60821b60448201526064016104e0565b80546002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156108ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d09190612153565b10156108ee5760405162461bcd60e51b81526004016104e09061216c565b600254815460405163a9059cbb60e01b815233600482015260248101919091526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109669190612091565b5061097082611c52565b336000908152600d60209081526040808320858452909152812081815560018101829055600281018290556003810182905560048082018390556005909101829055825481549092906109c49084906120cb565b9091555050805433600090815260106020526040812080549091906109ea9084906120cb565b909155505060405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75906020015b60405180910390a2505060018055565b610a356119ee565b610a426005826004611dc2565b5060405133907fa7f585ccac0d13662923cb468f4797b38beef79a2deff9df4a17120d1cfecd4390600090a250565b610a796119ee565b6012805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6001600160a01b038116600090815260116020526040902054606090819081908067ffffffffffffffff811115610ae757610ae7611ea2565b604051908082528060200260200182016040528015610b5157816020015b610b3e6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610b055790505b5093508067ffffffffffffffff811115610b6d57610b6d611ea2565b604051908082528060200260200182016040528015610b96578160200160208202803683370190505b5092508067ffffffffffffffff811115610bb257610bb2611ea2565b604051908082528060200260200182016040528015610bdb578160200160208202803683370190505b50915060005b81811015610d82576001600160a01b0386166000908152600d6020908152604080832060119092528220805483919085908110610c2057610c2061213d565b906000526020600020015481526020019081526020016000209050806040518060c00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481525050868381518110610c9557610c9561213d565b6020026020010181905250610cea87601160008a6001600160a01b03166001600160a01b031681526020019081526020016000208481548110610cda57610cda61213d565b906000526020600020015461194e565b848381518110610cfc57610cfc61213d565b602002602001018181525050610d5287601160008a6001600160a01b03166001600160a01b031681526020019081526020016000208481548110610d4257610d4261213d565b9060005260206000200154610f2f565b858381518110610d6457610d6461213d565b60209081029190910101525080610d7a81612076565b915050610be1565b50509193909250565b610d936119ee565b610da06009826004611dc2565b5060405133907f275d058161c6a100a899d7704ffd58e2b301bf03de51468332af1d3133a0934e90600090a250565b610dd76119ee565b600354811115610e295760405162461bcd60e51b815260206004820152601f60248201527f796f752063616e6e6f74207769746864726177207468697320616d6f756e740060448201526064016104e0565b8060036000828254610e3b91906120cb565b909155505060025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610e91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb59190612091565b5060405181815233907f45a4e865d59c4a381530f2b87a3dfff7b8e094159e702969e0417ee95eab54e5906020015b60405180910390a250565b610ef76119ee565b6012805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6001600160a01b0382166000908152600d602090815260408083208484529091528120600381015460059060048110610f6a57610f6a61213d565b01546002820154610f7b90426120cb565b1015610f8b576000915050610f99565b610f95848461194e565b9150505b92915050565b610fa76119ee565b610fb16000611d72565b565b610fbb6119ee565b8060036000828254610fcd91906120b3565b90915550506002546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104d9190612091565b5060405181815233907fae24461a43fef0eac5f521b079e387de046387781cafae7373117ec94158e7eb90602001610ee4565b600260015414156110a35760405162461bcd60e51b81526004016104e0906120e2565b600260015533600090815260116020526040812054815b818110156111ce57336000908152600d60209081526040808320601190925282208054839190859081106110f0576110f061213d565b90600052602060002001548152602001908152602001600020905080600001546000141561111e57506111bc565b60058160030154600481106111355761113561213d565b0154600282015461114690426120cb565b101561115257506111bc565b3360008181526011602052604081208054919261117c9290919086908110610cda57610cda61213d565b90508061118a5750506111bc565b428260010181905550808260050160008282546111a791906120b3565b909155506111b7905081866120b3565b945050505b806111c681612076565b9150506110ba565b5060025460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112449190612091565b50816003600082825461125791906120cb565b9091555050336000908152600f60205260408120805484929061127b9084906120b3565b9091555050604080514281526020810184905233917f90e4e2f2fb0f5a509044e11397b57e06467834ee837e26c1df139aff1a0c41c09101610a1d565b601160205281600052604060002081815481106112d457600080fd5b90600052602060002001600091509150505481565b6002600154141561130c5760405162461bcd60e51b81526004016104e0906120e2565b600260015561131a81611a48565b336000908152600d602090815260408083208484529091529020805415801590611345575080548311155b6113615760405162461bcd60e51b81526004016104e090612119565b60058160030154600481106113785761137861213d565b0154600282015461138990426120cb565b10156113ca5760405162461bcd60e51b815260206004820152601060248201526f139bdd081d5b9b1bd8dad959081e595d60821b60448201526064016104e0565b805483141561141e576113dc82611c52565b336000908152600d6020908152604080832085845290915281208181556001810182905560028101829055600381018290556004810182905560050155611438565b8281600001600082825461143291906120cb565b90915550505b6002546040516370a0823160e01b815230600482015284916001600160a01b0316906370a0823190602401602060405180830381865afa158015611480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a49190612153565b10156114c25760405162461bcd60e51b81526004016104e09061216c565b60025460405163a9059cbb60e01b8152336004820152602481018590526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611513573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115379190612091565b50826004600082825461154a91906120cb565b9091555050336000908152601060205260408120805485929061156e9084906120cb565b909155505060405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a250506001805550565b600260015414156115d45760405162461bcd60e51b81526004016104e0906120e2565b6002600155336000908152600d60209081526040808320848452909152902060038101546005906004811061160b5761160b61213d565b0154600282015461161c90426120cb565b10156116765760405162461bcd60e51b815260206004820152602360248201527f4e6f7420636c61696d207965742c204c6f636b656420706572696f642073746960448201526236361760e91b60648201526084016104e0565b61167f82611a48565b604080514281526020810184905233917fe74e5c9d4ac1fc33412485f18c159a0a391efe287ab3fd271123f30e6bacf4e39101610a1d565b6001600160a01b0381166000908152601160205260408120548190815b81811015611794576001600160a01b0385166000908152600d60209081526040808320601190925282208054839190859081106117135761171361213d565b9060005260206000200154815260200190815260200160002090508060000154600014156117415750611782565b6001600160a01b0386166000908152601160205260408120805461177191899186908110610cda57610cda61213d565b905061177d81866120b3565b945050505b8061178c81612076565b9150506116d4565b50909392505050565b600581600481106117ad57600080fd5b0154905081565b6001600160a01b0381166000908152601160205260408120548190815b81811015611794576001600160a01b0385166000908152600d60209081526040808320601190925282208054839190859081106118105761181061213d565b90600052602060002001548152602001908152602001600020905080600001546000141561183e57506118b3565b60058160030154600481106118555761185561213d565b0154600282015461186690426120cb565b101561187257506118b3565b6001600160a01b038616600090815260116020526040812080546118a291899186908110610cda57610cda61213d565b90506118ae81866120b3565b945050505b806118bd81612076565b9150506117d1565b600981600481106117ad57600080fd5b6118dd6119ee565b6001600160a01b0381166119425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104e0565b61194b81611d72565b50565b6001600160a01b0382166000908152600d6020908152604080832084845290915281206001810154829061198290426120cb565b90506000600583600301546004811061199d5761199d61213d565b01546119aa9060646121b3565b60098460030154600481106119c1576119c161213d565b015484546119d09085906121b3565b6119da91906121b3565b6119e491906121d2565b9695505050505050565b6000546001600160a01b03163314610fb15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e0565b336000908152600d60209081526040808320848452909152812054611a7f5760405162461bcd60e51b81526004016104e090612119565b611a89338361194e565b6002546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611ad6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afa9190612153565b1015611b605760405162461bcd60e51b815260206004820152602f60248201527f496e73756666696369656e7420746f6b656e20746f2070617920796f7572207260448201526e6577617264207269676874206e6f7760881b60648201526084016104e0565b60025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd59190612091565b50336000908152600d60209081526040808320858452909152812042600182015560058101805491928492611c0b9084906120b3565b9091555050336000908152600f602052604081208054849290611c2f9084906120b3565b925050819055508160036000828254611c4891906120cb565b9091555050505050565b3360009081526011602052604081205490805b82811015611d3857336000908152601160205260409020805485919083908110611c9157611c9161213d565b90600052602060002001541415611ca757600191505b818015611cbd5750611cba6001846120cb565b81105b15611d2657336000908152601160205260409020611cdc8260016120b3565b81548110611cec57611cec61213d565b600091825260208083209091015433835260119091526040909120805483908110611d1957611d1961213d565b6000918252602090912001555b80611d3081612076565b915050611c65565b50336000908152601160205260409020805480611d5757611d576121f4565b60019003818190600052602060002001600090559055505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8260048101928215611df0579160200282015b82811115611df0578251825591602001919060010190611dd5565b50611dfc929150611e00565b5090565b5b80821115611dfc5760008155600101611e01565b60008060408385031215611e2857600080fd5b82359150602083013560ff81168114611e4057600080fd5b809150509250929050565b80356001600160a01b0381168114611e6257600080fd5b919050565b600060208284031215611e7957600080fd5b611e8282611e4b565b9392505050565b600060208284031215611e9b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600060808284031215611eca57600080fd5b82601f830112611ed957600080fd5b6040516080810181811067ffffffffffffffff82111715611f0a57634e487b7160e01b600052604160045260246000fd5b604052806080840185811115611f1f57600080fd5b845b81811015611f39578035835260209283019201611f21565b509195945050505050565b600081518084526020808501945080840160005b83811015611f7457815187529582019590820190600101611f58565b509495945050505050565b6060808252845182820181905260009190608090818501906020808a01865b83811015611fea578151805186528381015184870152604080820151908701528781015188870152868101518787015260a0908101519086015260c09094019390820190600101611f9e565b50508683039087015250611ffe8188611f44565b9250505082810360408401526119e48185611f44565b6000806040838503121561202757600080fd5b61203083611e4b565b946020939093013593505050565b6000806040838503121561205157600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b600060001982141561208a5761208a612060565b5060010190565b6000602082840312156120a357600080fd5b81518015158114611e8257600080fd5b600082198211156120c6576120c6612060565b500190565b6000828210156120dd576120dd612060565b500390565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600a9082015269125b9d985b1a5908125160b21b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561216557600080fd5b5051919050565b60208082526027908201527f496e73756666696369656e7420746f6b656e20746f20756e7374616b65207269604082015266676874206e6f7760c81b606082015260800190565b60008160001904831182151516156121cd576121cd612060565b500290565b6000826121ef57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122043b494a0661ceef0161501a25089554dc86bb8a09423a66626d498ce2a41905864736f6c634300080b00330000000000000000000000006f66f3012e0210babd2384e31863c30f70356237
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638a623d8611610104578063ae169a50116100a2578063cb6d8ee611610071578063cb6d8ee61461045c578063dd418ae214610465578063f2fde38b14610478578063f474c8ce1461048b57600080fd5b8063ae169a5014610410578063b8e58c3914610423578063bc20a7af14610436578063cada7df91461044957600080fd5b80639e2c8a5b116100de5780639e2c8a5b14610359578063a39b21531461036c578063a5d3c51e146103e7578063ac78599c146103f057600080fd5b80638a623d86146103235780638da5cb5b1461032b57806396bfdcfe1461034657600080fd5b8063463c56cc1161017c5780636bd97f1d1161014b5780636bd97f1d146102d5578063715018a6146102e8578063719de1ef146102f05780637e0391531461031057600080fd5b8063463c56cc1461028a5780634d85bd9f1461029d5780635c975abb146102b05780636985a022146102cd57600080fd5b806334eeee5a116101b857806334eeee5a1461021a578063376fe1021461022d5780633f4ba83a14610260578063434dcc171461026857600080fd5b806310087fb1146101df578063144fa6d7146101f45780632e17de7814610207575b600080fd5b6101f26101ed366004611e15565b61049e565b005b6101f2610202366004611e67565b610766565b6101f2610215366004611e89565b610790565b6101f2610228366004611eb8565b610a2d565b61024d61023b366004611e67565b600e6020526000908152604090205481565b6040519081526020015b60405180910390f35b6101f2610a71565b61027b610276366004611e67565b610aae565b60405161025793929190611f7f565b6101f2610298366004611eb8565b610d8b565b6101f26102ab366004611e89565b610dcf565b6012546102bd9060ff1681565b6040519015158152602001610257565b6101f2610eef565b61024d6102e3366004612014565b610f2f565b6101f2610f9f565b61024d6102fe366004611e67565b60106020526000908152604090205481565b6101f261031e366004611e89565b610fb3565b6101f2611080565b6000546040516001600160a01b039091168152602001610257565b61024d610354366004612014565b6112b8565b6101f261036736600461203e565b6112e9565b6103ba61037a366004612014565b600d602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610257565b61024d60035481565b61024d6103fe366004611e67565b600f6020526000908152604090205481565b6101f261041e366004611e89565b6115b1565b61024d610431366004611e67565b6116b7565b61024d610444366004611e89565b61179d565b61024d610457366004611e67565b6117b4565b61024d60045481565b61024d610473366004611e89565b6118c5565b6101f2610486366004611e67565b6118d5565b61024d610499366004612014565b61194e565b60125460ff16156104e95760405162461bcd60e51b815260206004820152601060248201526f115e1958dd5d1a5bdb881c185d5cd95960821b60448201526064015b60405180910390fd5b60048160ff161061052f5760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b210323ab930ba34b7b760811b60448201526064016104e0565b336000908152600e6020526040812080549161054a83612076565b90915550506040805160c08101825283815242602080830182815283850192835260ff8616606085019081523360008181526011855287812080546080890190815260a08901838152848452600d88528a8420600e808a528c862080548752918a528c86209b518c5597516001808d019190915599516002808d0191909155965160038c015591516004808c019190915590516005909a01999099559486529354845496870185559381529390932090930155905492516323b872dd60e01b815291820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610650573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106749190612091565b6106b25760405162461bcd60e51b815260206004820152600f60248201526e105b5bdd5b9d081b9bdd081cd95b9d608a1b60448201526064016104e0565b81600460008282546106c491906120b3565b909155505033600090815260106020526040812080548492906106e89084906120b3565b9091555050336000818152601160205260409020547fc0c6fd4735a5e02cf7ef68a5afee7a731a38cf82bde401560092dc284869f54490849042908590610731906001906120cb565b60405161075a9493929190938452602084019290925260ff166040830152606082015260800190565b60405180910390a25050565b61076e6119ee565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600260015414156107b35760405162461bcd60e51b81526004016104e0906120e2565b60026001556107c181611a48565b336000908152600d60209081526040808320848452909152902080546107f95760405162461bcd60e51b81526004016104e090612119565b60058160030154600481106108105761081061213d565b0154600282015461082190426120cb565b10156108625760405162461bcd60e51b815260206004820152601060248201526f139bdd081d5b9b1bd8dad959081e595d60821b60448201526064016104e0565b80546002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156108ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d09190612153565b10156108ee5760405162461bcd60e51b81526004016104e09061216c565b600254815460405163a9059cbb60e01b815233600482015260248101919091526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109669190612091565b5061097082611c52565b336000908152600d60209081526040808320858452909152812081815560018101829055600281018290556003810182905560048082018390556005909101829055825481549092906109c49084906120cb565b9091555050805433600090815260106020526040812080549091906109ea9084906120cb565b909155505060405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75906020015b60405180910390a2505060018055565b610a356119ee565b610a426005826004611dc2565b5060405133907fa7f585ccac0d13662923cb468f4797b38beef79a2deff9df4a17120d1cfecd4390600090a250565b610a796119ee565b6012805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6001600160a01b038116600090815260116020526040902054606090819081908067ffffffffffffffff811115610ae757610ae7611ea2565b604051908082528060200260200182016040528015610b5157816020015b610b3e6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610b055790505b5093508067ffffffffffffffff811115610b6d57610b6d611ea2565b604051908082528060200260200182016040528015610b96578160200160208202803683370190505b5092508067ffffffffffffffff811115610bb257610bb2611ea2565b604051908082528060200260200182016040528015610bdb578160200160208202803683370190505b50915060005b81811015610d82576001600160a01b0386166000908152600d6020908152604080832060119092528220805483919085908110610c2057610c2061213d565b906000526020600020015481526020019081526020016000209050806040518060c00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481525050868381518110610c9557610c9561213d565b6020026020010181905250610cea87601160008a6001600160a01b03166001600160a01b031681526020019081526020016000208481548110610cda57610cda61213d565b906000526020600020015461194e565b848381518110610cfc57610cfc61213d565b602002602001018181525050610d5287601160008a6001600160a01b03166001600160a01b031681526020019081526020016000208481548110610d4257610d4261213d565b9060005260206000200154610f2f565b858381518110610d6457610d6461213d565b60209081029190910101525080610d7a81612076565b915050610be1565b50509193909250565b610d936119ee565b610da06009826004611dc2565b5060405133907f275d058161c6a100a899d7704ffd58e2b301bf03de51468332af1d3133a0934e90600090a250565b610dd76119ee565b600354811115610e295760405162461bcd60e51b815260206004820152601f60248201527f796f752063616e6e6f74207769746864726177207468697320616d6f756e740060448201526064016104e0565b8060036000828254610e3b91906120cb565b909155505060025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610e91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb59190612091565b5060405181815233907f45a4e865d59c4a381530f2b87a3dfff7b8e094159e702969e0417ee95eab54e5906020015b60405180910390a250565b610ef76119ee565b6012805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6001600160a01b0382166000908152600d602090815260408083208484529091528120600381015460059060048110610f6a57610f6a61213d565b01546002820154610f7b90426120cb565b1015610f8b576000915050610f99565b610f95848461194e565b9150505b92915050565b610fa76119ee565b610fb16000611d72565b565b610fbb6119ee565b8060036000828254610fcd91906120b3565b90915550506002546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104d9190612091565b5060405181815233907fae24461a43fef0eac5f521b079e387de046387781cafae7373117ec94158e7eb90602001610ee4565b600260015414156110a35760405162461bcd60e51b81526004016104e0906120e2565b600260015533600090815260116020526040812054815b818110156111ce57336000908152600d60209081526040808320601190925282208054839190859081106110f0576110f061213d565b90600052602060002001548152602001908152602001600020905080600001546000141561111e57506111bc565b60058160030154600481106111355761113561213d565b0154600282015461114690426120cb565b101561115257506111bc565b3360008181526011602052604081208054919261117c9290919086908110610cda57610cda61213d565b90508061118a5750506111bc565b428260010181905550808260050160008282546111a791906120b3565b909155506111b7905081866120b3565b945050505b806111c681612076565b9150506110ba565b5060025460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112449190612091565b50816003600082825461125791906120cb565b9091555050336000908152600f60205260408120805484929061127b9084906120b3565b9091555050604080514281526020810184905233917f90e4e2f2fb0f5a509044e11397b57e06467834ee837e26c1df139aff1a0c41c09101610a1d565b601160205281600052604060002081815481106112d457600080fd5b90600052602060002001600091509150505481565b6002600154141561130c5760405162461bcd60e51b81526004016104e0906120e2565b600260015561131a81611a48565b336000908152600d602090815260408083208484529091529020805415801590611345575080548311155b6113615760405162461bcd60e51b81526004016104e090612119565b60058160030154600481106113785761137861213d565b0154600282015461138990426120cb565b10156113ca5760405162461bcd60e51b815260206004820152601060248201526f139bdd081d5b9b1bd8dad959081e595d60821b60448201526064016104e0565b805483141561141e576113dc82611c52565b336000908152600d6020908152604080832085845290915281208181556001810182905560028101829055600381018290556004810182905560050155611438565b8281600001600082825461143291906120cb565b90915550505b6002546040516370a0823160e01b815230600482015284916001600160a01b0316906370a0823190602401602060405180830381865afa158015611480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a49190612153565b10156114c25760405162461bcd60e51b81526004016104e09061216c565b60025460405163a9059cbb60e01b8152336004820152602481018590526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611513573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115379190612091565b50826004600082825461154a91906120cb565b9091555050336000908152601060205260408120805485929061156e9084906120cb565b909155505060405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a250506001805550565b600260015414156115d45760405162461bcd60e51b81526004016104e0906120e2565b6002600155336000908152600d60209081526040808320848452909152902060038101546005906004811061160b5761160b61213d565b0154600282015461161c90426120cb565b10156116765760405162461bcd60e51b815260206004820152602360248201527f4e6f7420636c61696d207965742c204c6f636b656420706572696f642073746960448201526236361760e91b60648201526084016104e0565b61167f82611a48565b604080514281526020810184905233917fe74e5c9d4ac1fc33412485f18c159a0a391efe287ab3fd271123f30e6bacf4e39101610a1d565b6001600160a01b0381166000908152601160205260408120548190815b81811015611794576001600160a01b0385166000908152600d60209081526040808320601190925282208054839190859081106117135761171361213d565b9060005260206000200154815260200190815260200160002090508060000154600014156117415750611782565b6001600160a01b0386166000908152601160205260408120805461177191899186908110610cda57610cda61213d565b905061177d81866120b3565b945050505b8061178c81612076565b9150506116d4565b50909392505050565b600581600481106117ad57600080fd5b0154905081565b6001600160a01b0381166000908152601160205260408120548190815b81811015611794576001600160a01b0385166000908152600d60209081526040808320601190925282208054839190859081106118105761181061213d565b90600052602060002001548152602001908152602001600020905080600001546000141561183e57506118b3565b60058160030154600481106118555761185561213d565b0154600282015461186690426120cb565b101561187257506118b3565b6001600160a01b038616600090815260116020526040812080546118a291899186908110610cda57610cda61213d565b90506118ae81866120b3565b945050505b806118bd81612076565b9150506117d1565b600981600481106117ad57600080fd5b6118dd6119ee565b6001600160a01b0381166119425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104e0565b61194b81611d72565b50565b6001600160a01b0382166000908152600d6020908152604080832084845290915281206001810154829061198290426120cb565b90506000600583600301546004811061199d5761199d61213d565b01546119aa9060646121b3565b60098460030154600481106119c1576119c161213d565b015484546119d09085906121b3565b6119da91906121b3565b6119e491906121d2565b9695505050505050565b6000546001600160a01b03163314610fb15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e0565b336000908152600d60209081526040808320848452909152812054611a7f5760405162461bcd60e51b81526004016104e090612119565b611a89338361194e565b6002546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611ad6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afa9190612153565b1015611b605760405162461bcd60e51b815260206004820152602f60248201527f496e73756666696369656e7420746f6b656e20746f2070617920796f7572207260448201526e6577617264207269676874206e6f7760881b60648201526084016104e0565b60025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd59190612091565b50336000908152600d60209081526040808320858452909152812042600182015560058101805491928492611c0b9084906120b3565b9091555050336000908152600f602052604081208054849290611c2f9084906120b3565b925050819055508160036000828254611c4891906120cb565b9091555050505050565b3360009081526011602052604081205490805b82811015611d3857336000908152601160205260409020805485919083908110611c9157611c9161213d565b90600052602060002001541415611ca757600191505b818015611cbd5750611cba6001846120cb565b81105b15611d2657336000908152601160205260409020611cdc8260016120b3565b81548110611cec57611cec61213d565b600091825260208083209091015433835260119091526040909120805483908110611d1957611d1961213d565b6000918252602090912001555b80611d3081612076565b915050611c65565b50336000908152601160205260409020805480611d5757611d576121f4565b60019003818190600052602060002001600090559055505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8260048101928215611df0579160200282015b82811115611df0578251825591602001919060010190611dd5565b50611dfc929150611e00565b5090565b5b80821115611dfc5760008155600101611e01565b60008060408385031215611e2857600080fd5b82359150602083013560ff81168114611e4057600080fd5b809150509250929050565b80356001600160a01b0381168114611e6257600080fd5b919050565b600060208284031215611e7957600080fd5b611e8282611e4b565b9392505050565b600060208284031215611e9b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600060808284031215611eca57600080fd5b82601f830112611ed957600080fd5b6040516080810181811067ffffffffffffffff82111715611f0a57634e487b7160e01b600052604160045260246000fd5b604052806080840185811115611f1f57600080fd5b845b81811015611f39578035835260209283019201611f21565b509195945050505050565b600081518084526020808501945080840160005b83811015611f7457815187529582019590820190600101611f58565b509495945050505050565b6060808252845182820181905260009190608090818501906020808a01865b83811015611fea578151805186528381015184870152604080820151908701528781015188870152868101518787015260a0908101519086015260c09094019390820190600101611f9e565b50508683039087015250611ffe8188611f44565b9250505082810360408401526119e48185611f44565b6000806040838503121561202757600080fd5b61203083611e4b565b946020939093013593505050565b6000806040838503121561205157600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b600060001982141561208a5761208a612060565b5060010190565b6000602082840312156120a357600080fd5b81518015158114611e8257600080fd5b600082198211156120c6576120c6612060565b500190565b6000828210156120dd576120dd612060565b500390565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600a9082015269125b9d985b1a5908125160b21b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561216557600080fd5b5051919050565b60208082526027908201527f496e73756666696369656e7420746f6b656e20746f20756e7374616b65207269604082015266676874206e6f7760c81b606082015260800190565b60008160001904831182151516156121cd576121cd612060565b500290565b6000826121ef57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122043b494a0661ceef0161501a25089554dc86bb8a09423a66626d498ce2a41905864736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006f66f3012e0210babd2384e31863c30f70356237
-----Decoded View---------------
Arg [0] : _token (address): 0x6F66f3012E0210baBD2384e31863C30f70356237
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006f66f3012e0210babd2384e31863c30f70356237
Deployed Bytecode Sourcemap
73078:9995:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;75557:834;;;;;;:::i;:::-;;:::i;:::-;;82772:93;;;;;;:::i;:::-;;:::i;81609:731::-;;;;;;:::i;:::-;;:::i;75255:153::-;;;;;;:::i;:::-;;:::i;73601:36::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2051:25:1;;;2039:2;2024:18;73601:36:0;;;;;;;;82973:97;;;:::i;77265:615::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;75416:133::-;;;;;;:::i;:::-;;:::i;74916:331::-;;;;;;:::i;:::-;;:::i;73804:18::-;;;;;;;;;;;;4149:14:1;;4142:22;4124:41;;4112:2;4097:18;73804::0;3984:187:1;82873:92:0;;;:::i;77888:293::-;;;;;;:::i;:::-;;:::i;72146:103::-;;;:::i;73702:45::-;;;;;;:::i;:::-;;;;;;;;;;;;;;74602:306;;;;;;:::i;:::-;;:::i;79788:942::-;;;:::i;71498:87::-;71544:7;71571:6;71498:87;;-1:-1:-1;;;;;71571:6:0;;;4581:51:1;;4569:2;4554:18;71498:87:0;4435:203:1;73754:41:0;;;;;;:::i;:::-;;:::i;80738:863::-;;;;;;:::i;:::-;;:::i;73520:55::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5183:25:1;;;5239:2;5224:18;;5217:34;;;;5267:18;;;5260:34;;;;5325:2;5310:18;;5303:34;5368:3;5353:19;;5346:35;5412:3;5397:19;;5390:35;5170:3;5155:19;73520:55:0;4896:535:1;73155:29:0;;;;;;73644:51;;;;;;:::i;:::-;;;;;;;;;;;;;;78795:353;;;;;;:::i;:::-;;:::i;76784:473::-;;;;;;:::i;:::-;;:::i;73401:66::-;;;;;;:::i;:::-;;:::i;78189:598::-;;;;;;:::i;:::-;;:::i;73191:28::-;;;;;;73474:37;;;;;;:::i;:::-;;:::i;72404:201::-;;;;;;:::i;:::-;;:::i;76399:377::-;;;;;;:::i;:::-;;:::i;75557:834::-;75636:6;;;;75635:7;75627:35;;;;-1:-1:-1;;;75627:35:0;;5638:2:1;75627:35:0;;;5620:21:1;5677:2;5657:18;;;5650:30;-1:-1:-1;;;5696:18:1;;;5689:46;5752:18;;75627:35:0;;;;;;;;;75697:1;75681:13;:17;;;75673:45;;;;-1:-1:-1;;;75673:45:0;;5983:2:1;75673:45:0;;;5965:21:1;6022:2;6002:18;;;5995:30;-1:-1:-1;;;6041:18:1;;;6034:46;6097:18;;75673:45:0;5781:340:1;75673:45:0;75738:10;75731:18;;;;:6;:18;;;;;:20;;;;;;:::i;:::-;;;;-1:-1:-1;;75807:144:0;;;;;;;;;;;75821:15;75807:144;;;;;;;;;;;;;;;;;;;;;;75929:10;-1:-1:-1;75919:21:0;;;:9;:21;;;;;:28;;75807:144;;;;;;;;;;;;75762:22;;;:10;:22;;;;;75785:6;:18;;;;;;;;75762:42;;;;;;;;:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;75991:18;;;;;75964:46;;;;;;;;;;;;;;;;;;76031:5;;:54;;-1:-1:-1;;;76031:54:0;;;;;6638:34:1;76070:4:0;6688:18:1;;;6681:43;6740:18;;;6733:34;;;-1:-1:-1;;;;;76031:5:0;;;;:18;;6573::1;;76031:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;76023:82;;;;-1:-1:-1;;;76023:82:0;;7262:2:1;76023:82:0;;;7244:21:1;7301:2;7281:18;;;7274:30;-1:-1:-1;;;7320:18:1;;;7313:45;7375:18;;76023:82:0;7060:339:1;76023:82:0;76138:7;76118:16;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;76172:10:0;76156:27;;;;:15;:27;;;;;:38;;76187:7;;76156:27;:38;;76187:7;;76156:38;:::i;:::-;;;;-1:-1:-1;;76235:10:0;76340:21;;;;:9;:21;;;;;:28;76210:173;;76260:7;;76282:15;;76312:13;;76340:32;;76371:1;;76340:32;:::i;:::-;76210:173;;;;;;;;7894:25:1;;;7950:2;7935:18;;7928:34;;;;8010:4;7998:17;7993:2;7978:18;;7971:45;8047:2;8032:18;;8025:34;7881:3;7866:19;;7667:398;76210:173:0;;;;;;;;75557:834;;:::o;82772:93::-;71384:13;:11;:13::i;:::-;82835:5:::1;:22:::0;;-1:-1:-1;;;;;;82835:22:0::1;-1:-1:-1::0;;;;;82835:22:0;;;::::1;::::0;;;::::1;::::0;;82772:93::o;81609:731::-;65395:1;65993:7;;:19;;65985:63;;;;-1:-1:-1;;;65985:63:0;;;;;;;:::i;:::-;65395:1;66126:7;:18;81668:10:::1;81674:3:::0;81668:5:::1;:10::i;:::-;81726;81691:21;81715:22:::0;;;:10:::1;:22;::::0;;;;;;;:27;;;;;;;;81761:15;;81753:42:::1;;;;-1:-1:-1::0;;;81753:42:0::1;;;;;;;:::i;:::-;81854:9;81864:8;:21;;;81854:32;;;;;;;:::i;:::-;;::::0;81832:18:::1;::::0;::::1;::::0;81814:36:::1;::::0;:15:::1;:36;:::i;:::-;:72;;81806:101;;;::::0;-1:-1:-1;;;81806:101:0;;9103:2:1;81806:101:0::1;::::0;::::1;9085:21:1::0;9142:2;9122:18;;;9115:30;-1:-1:-1;;;9161:18:1;;;9154:46;9217:18;;81806:101:0::1;8901:340:1::0;81806:101:0::1;81976:15:::0;;81942:5:::1;::::0;:30:::1;::::0;-1:-1:-1;;;81942:30:0;;81966:4:::1;81942:30;::::0;::::1;4581:51:1::0;-1:-1:-1;;;;;81942:5:0;;::::1;::::0;:15:::1;::::0;4554:18:1;;81942:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:49;;81920:138;;;;-1:-1:-1::0;;;81920:138:0::1;;;;;;;:::i;:::-;82071:5;::::0;82098:15;;82071:43:::1;::::0;-1:-1:-1;;;82071:43:0;;82086:10:::1;82071:43;::::0;::::1;10017:51:1::0;10084:18;;;10077:34;;;;-1:-1:-1;;;;;82071:5:0;;::::1;::::0;:14:::1;::::0;9990:18:1;;82071:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;82127:12;82135:3;82127:7;:12::i;:::-;82168:10;82157:22;::::0;;;:10:::1;:22;::::0;;;;;;;:27;;;;;;;;82150:34;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;82217:15;;82197:35;;82217:15;;82157:22;82197:35:::1;::::0;82217:15;;82197:35:::1;:::i;:::-;::::0;;;-1:-1:-1;;82274:15:0;;82259:10:::1;82274:15;82243:27:::0;;;:15:::1;:27;::::0;;;;:46;;:27;;82274:15;82243:46:::1;::::0;82274:15;;82243:46:::1;:::i;:::-;::::0;;;-1:-1:-1;;82307:25:0::1;::::0;2051::1;;;82316:10:0::1;::::0;82307:25:::1;::::0;2039:2:1;2024:18;82307:25:0::1;;;;;;;;-1:-1:-1::0;;65351:1:0;66305:22;;81609:731::o;75255:153::-;71384:13;:11;:13::i;:::-;75336:22:::1;:9;75348:10:::0;75336:22:::1;;:::i;:::-;-1:-1:-1::0;75374:26:0::1;::::0;75389:10:::1;::::0;75374:26:::1;::::0;;;::::1;75255:153:::0;:::o;82973:97::-;71384:13;:11;:13::i;:::-;83022:6:::1;:14:::0;;-1:-1:-1;;83022:14:0::1;::::0;;83052:10:::1;::::0;::::1;::::0;83031:5:::1;::::0;83052:10:::1;82973:97::o:0;77265:615::-;-1:-1:-1;;;;;77429:16:0;;77415:11;77429:16;;;:9;:16;;;;;:23;77334:20;;;;;;77429:23;77472:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;77472:18:0;;;;;;;;;;;;;;;;;77463:27;;77524:6;77513:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;77513:18:0;;77501:30;;77563:6;77552:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;77552:18:0;;77542:28;;77587:6;77583:290;77599:6;77597:1;:8;77583:290;;;-1:-1:-1;;;;;77650:17:0;;77626:21;77650:17;;;:10;:17;;;;;;;;77668:9;:16;;;;;:19;;77626:21;;77668:16;77685:1;;77668:19;;;;;;:::i;:::-;;;;;;;;;77650:38;;;;;;;;;;;77626:62;;77715:8;77703:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:6;77710:1;77703:9;;;;;;;;:::i;:::-;;;;;;:20;;;;77751:37;77761:5;77768:9;:16;77778:5;-1:-1:-1;;;;;77768:16:0;-1:-1:-1;;;;;77768:16:0;;;;;;;;;;;;77785:1;77768:19;;;;;;;;:::i;:::-;;;;;;;;;77751:9;:37::i;:::-;77738:7;77746:1;77738:10;;;;;;;;:::i;:::-;;;;;;:50;;;;;77818:43;77834:5;77841:9;:16;77851:5;-1:-1:-1;;;;;77841:16:0;-1:-1:-1;;;;;77841:16:0;;;;;;;;;;;;77858:1;77841:19;;;;;;;;:::i;:::-;;;;;;;;;77818:15;:43::i;:::-;77803:9;77813:1;77803:12;;;;;;;;:::i;:::-;;;;;;;;;;:58;-1:-1:-1;77607:3:0;;;;:::i;:::-;;;;77583:290;;;;77404:476;77265:615;;;;;:::o;75416:133::-;71384:13;:11;:13::i;:::-;75489:14:::1;:5;75497:6:::0;75489:14:::1;;:::i;:::-;-1:-1:-1::0;75519:22:0::1;::::0;75530:10:::1;::::0;75519:22:::1;::::0;;;::::1;75416:133:::0;:::o;74916:331::-;71384:13;:11;:13::i;:::-;75038:17:::1;;75027:7;:28;;75019:72;;;::::0;-1:-1:-1;;;75019:72:0;;10324:2:1;75019:72:0::1;::::0;::::1;10306:21:1::0;10363:2;10343:18;;;10336:30;10402:33;10382:18;;;10375:61;10453:18;;75019:72:0::1;10122:355:1::0;75019:72:0::1;75123:7;75102:17;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;75143:5:0::1;::::0;:35:::1;::::0;-1:-1:-1;;;75143:35:0;;75158:10:::1;75143:35;::::0;::::1;10017:51:1::0;10084:18;;;10077:34;;;-1:-1:-1;;;;;75143:5:0;;::::1;::::0;:14:::1;::::0;9990:18:1;;75143:35:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;75194:45:0::1;::::0;2051:25:1;;;75219:10:0::1;::::0;75194:45:::1;::::0;2039:2:1;2024:18;75194:45:0::1;;;;;;;;74916:331:::0;:::o;82873:92::-;71384:13;:11;:13::i;:::-;82920:6:::1;:13:::0;;-1:-1:-1;;82920:13:0::1;82929:4;82920:13;::::0;;82949:8:::1;::::0;::::1;::::0;82920:6:::1;::::0;82949:8:::1;82873:92::o:0;77888:293::-;-1:-1:-1;;;;;77999:17:0;;77958:4;77999:17;;;:10;:17;;;;;;;;:22;;;;;;;;78087:21;;;;78077:9;;:32;;;;;;;:::i;:::-;;;78056:18;;;;78038:36;;:15;:36;:::i;:::-;:71;78034:98;;;78131:1;78124:8;;;;;78034:98;78152:21;78162:5;78169:3;78152:9;:21::i;:::-;78145:28;;;77888:293;;;;;:::o;72146:103::-;71384:13;:11;:13::i;:::-;72211:30:::1;72238:1;72211:18;:30::i;:::-;72146:103::o:0;74602:306::-;71384:13;:11;:13::i;:::-;74765:7:::1;74744:17;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;74785:5:0::1;::::0;:54:::1;::::0;-1:-1:-1;;;74785:54:0;;74804:10:::1;74785:54;::::0;::::1;6638:34:1::0;74824:4:0::1;6688:18:1::0;;;6681:43;6740:18;;;6733:34;;;-1:-1:-1;;;;;74785:5:0;;::::1;::::0;:18:::1;::::0;6573::1;;74785:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;74857:43:0::1;::::0;2051:25:1;;;74880:10:0::1;::::0;74857:43:::1;::::0;2039:2:1;2024:18;74857:43:0::1;1905:177:1::0;79788:942:0;65395:1;65993:7;;:19;;65985:63;;;;-1:-1:-1;;;65985:63:0;;;;;;;:::i;:::-;65395:1;66126:7;:18;79895:10:::1;79845:11;79885:21:::0;;;:9:::1;:21;::::0;;;;:28;79845:11;79924:591:::1;79940:6;79938:1;:8;79924:591;;;80002:10;79967:21;79991:22:::0;;;:10:::1;:22;::::0;;;;;;;80014:9:::1;:21:::0;;;;;:24;;79967:21;;80014;80036:1;;80014:24;::::1;;;;;:::i;:::-;;;;;;;;;79991:48;;;;;;;;;;;79967:72;;80058:8;:15;;;80077:1;80058:20;80054:51;;;80097:8;;;80054:51;80165:9;80175:8;:21;;;80165:32;;;;;;;:::i;:::-;;::::0;80144:18:::1;::::0;::::1;::::0;80126:36:::1;::::0;:15:::1;:36;:::i;:::-;:71;80122:102;;;80216:8;;;80122:102;80270:10;80241:16;80282:21:::0;;;:9:::1;:21;::::0;;;;:24;;80241:16;;80260:47:::1;::::0;80270:10;;80282:21;80304:1;;80282:24;::::1;;;;;:::i;80260:47::-;80241:66:::0;-1:-1:-1;80326:16:0;80322:47:::1;;80361:8;;;;80322:47;80407:15;80386:8;:18;;:36;;;;80456:11;80437:8;:15;;;:30;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;80482:21:0::1;::::0;-1:-1:-1;80492:11:0;80482:21;::::1;:::i;:::-;;;79952:563;;79924:591;79948:3:::0;::::1;::::0;::::1;:::i;:::-;;;;79924:591;;;-1:-1:-1::0;80527:5:0::1;::::0;:34:::1;::::0;-1:-1:-1;;;80527:34:0;;80542:10:::1;80527:34;::::0;::::1;10017:51:1::0;10084:18;;;10077:34;;;-1:-1:-1;;;;;80527:5:0;;::::1;::::0;:14:::1;::::0;9990:18:1;;80527:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;80593:6;80572:17;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;80632:10:0::1;80610:33;::::0;;;:21:::1;:33;::::0;;;;:43;;80647:6;;80610:33;:43:::1;::::0;80647:6;;80610:43:::1;:::i;:::-;::::0;;;-1:-1:-1;;80671:51:0::1;::::0;;80698:15:::1;10656:25:1::0;;10712:2;10697:18;;10690:34;;;80686:10:0::1;::::0;80671:51:::1;::::0;10629:18:1;80671:51:0::1;10482:248:1::0;73754:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;80738:863::-;65395:1;65993:7;;:19;;65985:63;;;;-1:-1:-1;;;65985:63:0;;;;;;;:::i;:::-;65395:1;66126:7;:18;80811:10:::1;80817:3:::0;80811:5:::1;:10::i;:::-;80869;80834:21;80858:22:::0;;;:10:::1;:22;::::0;;;;;;;:27;;;;;;;;80904:15;;:20;;::::1;::::0;:50:::1;;-1:-1:-1::0;80939:15:0;;80928:26;::::1;;80904:50;80896:73;;;;-1:-1:-1::0;;;80896:73:0::1;;;;;;;:::i;:::-;81028:9;81038:8;:21;;;81028:32;;;;;;;:::i;:::-;;::::0;81006:18:::1;::::0;::::1;::::0;80988:36:::1;::::0;:15:::1;:36;:::i;:::-;:72;;80980:101;;;::::0;-1:-1:-1;;;80980:101:0;;9103:2:1;80980:101:0::1;::::0;::::1;9085:21:1::0;9142:2;9122:18;;;9115:30;-1:-1:-1;;;9161:18:1;;;9154:46;9217:18;;80980:101:0::1;8901:340:1::0;80980:101:0::1;81109:15:::0;;81098:26;::::1;81094:176;;;81141:12;81149:3;81141:7;:12::i;:::-;81188:10;81177:22;::::0;;;:10:::1;:22;::::0;;;;;;;:27;;;;;;;;81170:34;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;81094:176:::1;;;81263:7;81244:8;:15;;;:26;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;81094:176:0::1;81305:5;::::0;:30:::1;::::0;-1:-1:-1;;;81305:30:0;;81329:4:::1;81305:30;::::0;::::1;4581:51:1::0;81339:7:0;;-1:-1:-1;;;;;81305:5:0::1;::::0;:15:::1;::::0;4554:18:1;;81305:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;81283:130;;;;-1:-1:-1::0;;;81283:130:0::1;;;;;;;:::i;:::-;81426:5;::::0;:35:::1;::::0;-1:-1:-1;;;81426:35:0;;81441:10:::1;81426:35;::::0;::::1;10017:51:1::0;10084:18;;;10077:34;;;-1:-1:-1;;;;;81426:5:0;;::::1;::::0;:14:::1;::::0;9990:18:1;;81426:35:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;81494:7;81474:16;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;81528:10:0::1;81512:27;::::0;;;:15:::1;:27;::::0;;;;:38;;81543:7;;81512:27;:38:::1;::::0;81543:7;;81512:38:::1;:::i;:::-;::::0;;;-1:-1:-1;;81568:25:0::1;::::0;2051::1;;;81577:10:0::1;::::0;81568:25:::1;::::0;2039:2:1;2024:18;81568:25:0::1;;;;;;;-1:-1:-1::0;;65351:1:0;66305:22;;-1:-1:-1;80738:863:0:o;78795:353::-;65395:1;65993:7;;:19;;65985:63;;;;-1:-1:-1;;;65985:63:0;;;;;;;:::i;:::-;65395:1;66126:7;:18;78892:10:::1;78857:21;78881:22:::0;;;:10:::1;:22;::::0;;;;;;;:27;;;;;;;;78978:21:::1;::::0;::::1;::::0;78968:9:::1;::::0;:32:::1;::::0;::::1;;;;;:::i;:::-;;::::0;78946:18:::1;::::0;::::1;::::0;78928:36:::1;::::0;:15:::1;:36;:::i;:::-;:72;;78919:135;;;::::0;-1:-1:-1;;;78919:135:0;;10937:2:1;78919:135:0::1;::::0;::::1;10919:21:1::0;10976:2;10956:18;;;10949:30;11015:34;10995:18;;;10988:62;-1:-1:-1;;;11066:18:1;;;11059:33;11109:19;;78919:135:0::1;10735:399:1::0;78919:135:0::1;79067:10;79073:3;79067:5;:10::i;:::-;79095:45;::::0;;79119:15:::1;10656:25:1::0;;10712:2;10697:18;;10690:34;;;79107:10:0::1;::::0;79095:45:::1;::::0;10629:18:1;79095:45:0::1;10482:248:1::0;76784:473:0;-1:-1:-1;;;;;76898:16:0;;76841:4;76898:16;;;:9;:16;;;;;:23;76841:4;;;76932:292;76948:6;76946:1;:8;76932:292;;;-1:-1:-1;;;;;76999:17:0;;76975:21;76999:17;;;:10;:17;;;;;;;;77017:9;:16;;;;;:19;;76975:21;;77017:16;77034:1;;77017:19;;;;;;:::i;:::-;;;;;;;;;76999:38;;;;;;;;;;;76975:62;;77056:8;:15;;;77075:1;77056:20;77052:51;;;77095:8;;;77052:51;-1:-1:-1;;;;;77156:16:0;;77120;77156;;;:9;:16;;;;;:19;;77139:37;;77149:5;;77173:1;;77156:19;;;;;;:::i;77139:37::-;77120:56;-1:-1:-1;77191:21:0;77120:56;77191:21;;:::i;:::-;;;76960:264;;76932:292;76956:3;;;;:::i;:::-;;;;76932:292;;;-1:-1:-1;77243:6:0;;76784:473;-1:-1:-1;;;76784:473:0:o;73401:66::-;;;;;;;;;;;;;;;-1:-1:-1;73401:66:0;:::o;78189:598::-;-1:-1:-1;;;;;78309:16:0;;78252:4;78309:16;;;:9;:16;;;;;:23;78252:4;;;78343:411;78359:6;78357:1;:8;78343:411;;;-1:-1:-1;;;;;78410:17:0;;78386:21;78410:17;;;:10;:17;;;;;;;;78428:9;:16;;;;;:19;;78386:21;;78428:16;78445:1;;78428:19;;;;;;:::i;:::-;;;;;;;;;78410:38;;;;;;;;;;;78386:62;;78467:8;:15;;;78486:1;78467:20;78463:51;;;78506:8;;;78463:51;78574:9;78584:8;:21;;;78574:32;;;;;;;:::i;:::-;;;78553:18;;;;78535:36;;:15;:36;:::i;:::-;:71;78531:102;;;78625:8;;;78531:102;-1:-1:-1;;;;;78686:16:0;;78650;78686;;;:9;:16;;;;;:19;;78669:37;;78679:5;;78703:1;;78686:19;;;;;;:::i;78669:37::-;78650:56;-1:-1:-1;78721:21:0;78650:56;78721:21;;:::i;:::-;;;78371:383;;78343:411;78367:3;;;;:::i;:::-;;;;78343:411;;73474:37;;;;;;;;;;;72404:201;71384:13;:11;:13::i;:::-;-1:-1:-1;;;;;72493:22:0;::::1;72485:73;;;::::0;-1:-1:-1;;;72485:73:0;;11341:2:1;72485:73:0::1;::::0;::::1;11323:21:1::0;11380:2;11360:18;;;11353:30;11419:34;11399:18;;;11392:62;-1:-1:-1;;;11470:18:1;;;11463:36;11516:19;;72485:73:0::1;11139:402:1::0;72485:73:0::1;72569:28;72588:8;72569:18;:28::i;:::-;72404:201:::0;:::o;76399:377::-;-1:-1:-1;;;;;76504:17:0;;76463:4;76504:17;;;:10;:17;;;;;;;;:22;;;;;;;;76571:18;;;;76463:4;;76553:36;;:15;:36;:::i;:::-;76537:52;;76602:11;76703:9;76713:8;:21;;;76703:32;;;;;;;:::i;:::-;;;:38;;76738:3;76703:38;:::i;:::-;76645:5;76651:8;:21;;;76645:28;;;;;;;:::i;:::-;;;76616:15;;:26;;76634:8;;76616:26;:::i;:::-;:57;;;;:::i;:::-;:126;;;;:::i;:::-;76602:140;76399:377;-1:-1:-1;;;;;;76399:377:0:o;71663:132::-;71544:7;71571:6;-1:-1:-1;;;;;71571:6:0;70129:10;71727:23;71719:68;;;;-1:-1:-1;;;71719:68:0;;12143:2:1;71719:68:0;;;12125:21:1;;;12162:18;;;12155:30;12221:34;12201:18;;;12194:62;12273:18;;71719:68:0;11941:356:1;79156:624:0;79245:10;79200:11;79234:22;;;:10;:22;;;;;;;;:27;;;;;;;;:34;79226:62;;;;-1:-1:-1;;;79226:62:0;;;;;;;:::i;:::-;79310:26;79320:10;79332:3;79310:9;:26::i;:::-;79369:5;;:30;;-1:-1:-1;;;79369:30:0;;79393:4;79369:30;;;4581:51:1;79301:35:0;;-1:-1:-1;79301:35:0;;-1:-1:-1;;;;;79369:5:0;;;;:15;;4554:18:1;;79369:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;79347:137;;;;-1:-1:-1;;;79347:137:0;;12504:2:1;79347:137:0;;;12486:21:1;12543:2;12523:18;;;12516:30;12582:34;12562:18;;;12555:62;-1:-1:-1;;;12633:18:1;;;12626:45;12688:19;;79347:137:0;12302:411:1;79347:137:0;79497:5;;:34;;-1:-1:-1;;;79497:34:0;;79512:10;79497:34;;;10017:51:1;10084:18;;;10077:34;;;-1:-1:-1;;;;;79497:5:0;;;;:14;;9990:18:1;;79497:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;79579:10:0;79544:21;79568:22;;;:10;:22;;;;;;;;:27;;;;;;;;79627:15;79606:18;;;:36;79653:15;;;:25;;79568:27;;79672:6;;79653:25;;79672:6;;79653:25;:::i;:::-;;;;-1:-1:-1;;79713:10:0;79691:33;;;;:21;:33;;;;;:43;;79728:6;;79691:33;:43;;79728:6;;79691:43;:::i;:::-;;;;;;;;79766:6;79745:17;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;79156:624:0:o;82348:416::-;82419:10;82395:11;82409:21;;;:9;:21;;;;;:28;;82395:11;82479:240;82499:6;82497:1;:8;82479:240;;;82541:10;82531:21;;;;:9;:21;;;;;:24;;82559:3;;82531:21;82553:1;;82531:24;;;;;;:::i;:::-;;;;;;;;;:31;82527:68;;;82591:4;82581:14;;82527:68;82614:7;:21;;;;-1:-1:-1;82627:8:0;82634:1;82627:6;:8;:::i;:::-;82625:1;:10;82614:21;82610:97;;;82691:10;82681:21;;;;:9;:21;;;;;82703:3;:1;82705;82703:3;:::i;:::-;82681:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;82664:10;82654:21;;:9;:21;;;;;;;:24;;82676:1;;82654:24;;;;;;:::i;:::-;;;;;;;;;;:53;82610:97;82507:3;;;;:::i;:::-;;;;82479:240;;;-1:-1:-1;82739:10:0;82729:21;;;;:9;:21;;;;;:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;82384:380;;82348:416;:::o;72765:191::-;72839:16;72858:6;;-1:-1:-1;;;;;72875:17:0;;;-1:-1:-1;;;;;;72875:17:0;;;;;;72908:40;;72858:6;;;;;;;72908:40;;72839:16;72908:40;72828:128;72765:191;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:337:1;80:6;88;141:2;129:9;120:7;116:23;112:32;109:52;;;157:1;154;147:12;109:52;193:9;180:23;170:33;;253:2;242:9;238:18;225:32;297:4;290:5;286:16;279:5;276:27;266:55;;317:1;314;307:12;266:55;340:5;330:15;;;14:337;;;;;:::o;356:173::-;424:20;;-1:-1:-1;;;;;473:31:1;;463:42;;453:70;;519:1;516;509:12;453:70;356:173;;;:::o;534:186::-;593:6;646:2;634:9;625:7;621:23;617:32;614:52;;;662:1;659;652:12;614:52;685:29;704:9;685:29;:::i;:::-;675:39;534:186;-1:-1:-1;;;534:186:1:o;725:180::-;784:6;837:2;825:9;816:7;812:23;808:32;805:52;;;853:1;850;843:12;805:52;-1:-1:-1;876:23:1;;725:180;-1:-1:-1;725:180:1:o;910:127::-;971:10;966:3;962:20;959:1;952:31;1002:4;999:1;992:15;1026:4;1023:1;1016:15;1042:858;1124:6;1177:3;1165:9;1156:7;1152:23;1148:33;1145:53;;;1194:1;1191;1184:12;1145:53;1243:7;1236:4;1225:9;1221:20;1217:34;1207:62;;1265:1;1262;1255:12;1207:62;1298:2;1292:9;1340:3;1332:6;1328:16;1410:6;1398:10;1395:22;1374:18;1362:10;1359:34;1356:62;1353:185;;;1460:10;1455:3;1451:20;1448:1;1441:31;1495:4;1492:1;1485:15;1523:4;1520:1;1513:15;1353:185;1554:2;1547:22;1589:6;1633:3;1618:19;;1649;;;1646:39;;;1681:1;1678;1671:12;1646:39;1705:9;1723:146;1739:6;1734:3;1731:15;1723:146;;;1807:17;;1795:30;;1854:4;1845:14;;;;1756;1723:146;;;-1:-1:-1;1888:6:1;;1042:858;-1:-1:-1;;;;;1042:858:1:o;2087:435::-;2140:3;2178:5;2172:12;2205:6;2200:3;2193:19;2231:4;2260:2;2255:3;2251:12;2244:19;;2297:2;2290:5;2286:14;2318:1;2328:169;2342:6;2339:1;2336:13;2328:169;;;2403:13;;2391:26;;2437:12;;;;2472:15;;;;2364:1;2357:9;2328:169;;;-1:-1:-1;2513:3:1;;2087:435;-1:-1:-1;;;;;2087:435:1:o;2527:1452::-;2898:2;2950:21;;;3020:13;;2923:18;;;3042:22;;;2869:4;;2898:2;3083:3;;3102:18;;;;3139:4;3166:15;;;2869:4;3209:522;3223:6;3220:1;3217:13;3209:522;;;3282:13;;3320:9;;3308:22;;3370:11;;;3364:18;3350:12;;;3343:40;3406:4;3450:11;;;3444:18;3430:12;;;3423:40;3503:11;;;3497:18;3483:12;;;3476:40;3556:11;;;3550:18;3536:12;;;3529:40;3592:4;3636:11;;;3630:18;3616:12;;;3609:40;3678:4;3669:14;;;;3706:15;;;;3245:1;3238:9;3209:522;;;-1:-1:-1;;3767:19:1;;;3747:18;;;3740:47;-1:-1:-1;3810:41:1;3771:3;3839:6;3810:41;:::i;:::-;3796:55;;;;3901:9;3893:6;3889:22;3882:4;3871:9;3867:20;3860:52;3929:44;3966:6;3958;3929:44;:::i;4176:254::-;4244:6;4252;4305:2;4293:9;4284:7;4280:23;4276:32;4273:52;;;4321:1;4318;4311:12;4273:52;4344:29;4363:9;4344:29;:::i;:::-;4334:39;4420:2;4405:18;;;;4392:32;;-1:-1:-1;;;4176:254:1:o;4643:248::-;4711:6;4719;4772:2;4760:9;4751:7;4747:23;4743:32;4740:52;;;4788:1;4785;4778:12;4740:52;-1:-1:-1;;4811:23:1;;;4881:2;4866:18;;;4853:32;;-1:-1:-1;4643:248:1:o;6126:127::-;6187:10;6182:3;6178:20;6175:1;6168:31;6218:4;6215:1;6208:15;6242:4;6239:1;6232:15;6258:135;6297:3;-1:-1:-1;;6318:17:1;;6315:43;;;6338:18;;:::i;:::-;-1:-1:-1;6385:1:1;6374:13;;6258:135::o;6778:277::-;6845:6;6898:2;6886:9;6877:7;6873:23;6869:32;6866:52;;;6914:1;6911;6904:12;6866:52;6946:9;6940:16;6999:5;6992:13;6985:21;6978:5;6975:32;6965:60;;7021:1;7018;7011:12;7404:128;7444:3;7475:1;7471:6;7468:1;7465:13;7462:39;;;7481:18;;:::i;:::-;-1:-1:-1;7517:9:1;;7404:128::o;7537:125::-;7577:4;7605:1;7602;7599:8;7596:34;;;7610:18;;:::i;:::-;-1:-1:-1;7647:9:1;;7537:125::o;8070:355::-;8272:2;8254:21;;;8311:2;8291:18;;;8284:30;8350:33;8345:2;8330:18;;8323:61;8416:2;8401:18;;8070:355::o;8430:334::-;8632:2;8614:21;;;8671:2;8651:18;;;8644:30;-1:-1:-1;;;8705:2:1;8690:18;;8683:40;8755:2;8740:18;;8430:334::o;8769:127::-;8830:10;8825:3;8821:20;8818:1;8811:31;8861:4;8858:1;8851:15;8885:4;8882:1;8875:15;9246:184;9316:6;9369:2;9357:9;9348:7;9344:23;9340:32;9337:52;;;9385:1;9382;9375:12;9337:52;-1:-1:-1;9408:16:1;;9246:184;-1:-1:-1;9246:184:1:o;9435:403::-;9637:2;9619:21;;;9676:2;9656:18;;;9649:30;9715:34;9710:2;9695:18;;9688:62;-1:-1:-1;;;9781:2:1;9766:18;;9759:37;9828:3;9813:19;;9435:403::o;11546:168::-;11586:7;11652:1;11648;11644:6;11640:14;11637:1;11634:21;11629:1;11622:9;11615:17;11611:45;11608:71;;;11659:18;;:::i;:::-;-1:-1:-1;11699:9:1;;11546:168::o;11719:217::-;11759:1;11785;11775:132;;11829:10;11824:3;11820:20;11817:1;11810:31;11864:4;11861:1;11854:15;11892:4;11889:1;11882:15;11775:132;-1:-1:-1;11921:9:1;;11719:217::o;12718:127::-;12779:10;12774:3;12770:20;12767:1;12760:31;12810:4;12807:1;12800:15;12834:4;12831:1;12824:15
Swarm Source
ipfs://43b494a0661ceef0161501a25089554dc86bb8a09423a66626d498ce2a419058
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.