Overview
BNB Balance
BNB Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
Leo
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^ 0.6.12;
import "./BokkyPooBahsDateTimeLibrary.sol";
interface IGatekeeper { function isTradingOpen() external view returns(bool); }
abstract contract Context
{
function _msgSender() internal view virtual returns(address payable) { return msg.sender; }
function _msgData() internal view virtual returns(bytes memory)
{
this; // silence state mutability warning without generating bytecode - see
// https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
/**
* @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.
*/
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() internal
{
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns(address) { return _owner; }
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner()
{
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public onlyOwner
{
emit OwnershipTransferred(_owner, address(0));
_owner = 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 onlyOwner { _transferOwnership(newOwner); }
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
*/
function _transferOwnership(address newOwner) internal
{
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract Leo is Ownable, IGatekeeper
{
int constant EARLY_OFFSET = 14;
int constant LATE_OFFSET = -12;
int public _utcOffset = -4;
uint public _openingHour = 9;
uint public _openingMinute = 30;
uint public _closingHour = 16;
uint public _closingMin = 0;
constructor() public {}
function isTradingOpen() public view override returns(bool)
{
uint256 blockTime = block.timestamp;
return isTradingOpenAt(blockTime);
}
function isTradingOpenAt(uint256 timestamp) public view returns(bool)
{
uint256 localTimeStamp = applyOffset(timestamp);
if (BokkyPooBahsDateTimeLibrary.isWeekEnd(localTimeStamp))
{
return false;
}
uint now_hour;
uint now_minute;
(, , , now_hour, now_minute, ) = BokkyPooBahsDateTimeLibrary.timestampToDateTime(localTimeStamp);
return isOpeningHour(now_hour, now_minute);
}
function applyOffset(uint256 timestamp) internal view returns(uint256)
{
uint localTimeStamp;
if (_utcOffset >= 0)
{
localTimeStamp = BokkyPooBahsDateTimeLibrary.addHours(timestamp, uint(_utcOffset));
}
else
{
localTimeStamp = BokkyPooBahsDateTimeLibrary.subHours(timestamp, uint(-_utcOffset));
}
return localTimeStamp;
}
function isOpeningHour(uint hour, uint minute) internal view returns(bool)
{
if ((hour < _openingHour) || (hour >= _closingHour))
{
return false;
}
if ((hour == _openingHour) && (minute < _openingMinute))
{
return false;
}
return true;
}
function setUTCOffset(int utcOffset) public onlyOwner()
{
require(utcOffset > EARLY_OFFSET, "Invalid UCT offset");
require(utcOffset < LATE_OFFSET, "Invalid UCT offset");
_utcOffset = utcOffset;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
// ----------------------------------------------------------------------------
// BokkyPooBah's DateTime Library v1.01
//
// A gas-efficient Solidity date and time library
//
// https://github.com/bokkypoobah/BokkyPooBahsDateTimeLibrary
//
// Tested date range 1970/01/01 to 2345/12/31
//
// Conventions:
// Unit | Range | Notes
// :-------- |:-------------:|:-----
// timestamp | >= 0 | Unix timestamp, number of seconds since 1970/01/01 00:00:00 UTC
// year | 1970 ... 2345 |
// month | 1 ... 12 |
// day | 1 ... 31 |
// hour | 0 ... 23 |
// minute | 0 ... 59 |
// second | 0 ... 59 |
// dayOfWeek | 1 ... 7 | 1 = Monday, ..., 7 = Sunday
//
//
// Enjoy. (c) BokkyPooBah / Bok Consulting Pty Ltd 2018-2019. The MIT Licence.
// ----------------------------------------------------------------------------
library BokkyPooBahsDateTimeLibrary {
uint constant SECONDS_PER_DAY = 24 * 60 * 60;
uint constant SECONDS_PER_HOUR = 60 * 60;
uint constant SECONDS_PER_MINUTE = 60;
int constant OFFSET19700101 = 2440588;
uint constant DOW_MON = 1;
uint constant DOW_TUE = 2;
uint constant DOW_WED = 3;
uint constant DOW_THU = 4;
uint constant DOW_FRI = 5;
uint constant DOW_SAT = 6;
uint constant DOW_SUN = 7;
// ------------------------------------------------------------------------
// Calculate the number of days from 1970/01/01 to year/month/day using
// the date conversion algorithm from
// http://aa.usno.navy.mil/faq/docs/JD_Formula.php
// and subtracting the offset 2440588 so that 1970/01/01 is day 0
//
// days = day
// - 32075
// + 1461 * (year + 4800 + (month - 14) / 12) / 4
// + 367 * (month - 2 - (month - 14) / 12 * 12) / 12
// - 3 * ((year + 4900 + (month - 14) / 12) / 100) / 4
// - offset
// ------------------------------------------------------------------------
function _daysFromDate(uint year, uint month, uint day) internal pure returns (uint _days) {
require(year >= 1970);
int _year = int(year);
int _month = int(month);
int _day = int(day);
int __days = _day
- 32075
+ 1461 * (_year + 4800 + (_month - 14) / 12) / 4
+ 367 * (_month - 2 - (_month - 14) / 12 * 12) / 12
- 3 * ((_year + 4900 + (_month - 14) / 12) / 100) / 4
- OFFSET19700101;
_days = uint(__days);
}
// ------------------------------------------------------------------------
// Calculate year/month/day from the number of days since 1970/01/01 using
// the date conversion algorithm from
// http://aa.usno.navy.mil/faq/docs/JD_Formula.php
// and adding the offset 2440588 so that 1970/01/01 is day 0
//
// int L = days + 68569 + offset
// int N = 4 * L / 146097
// L = L - (146097 * N + 3) / 4
// year = 4000 * (L + 1) / 1461001
// L = L - 1461 * year / 4 + 31
// month = 80 * L / 2447
// dd = L - 2447 * month / 80
// L = month / 11
// month = month + 2 - 12 * L
// year = 100 * (N - 49) + year + L
// ------------------------------------------------------------------------
function _daysToDate(uint _days) internal pure returns (uint year, uint month, uint day) {
int __days = int(_days);
int L = __days + 68569 + OFFSET19700101;
int N = 4 * L / 146097;
L = L - (146097 * N + 3) / 4;
int _year = 4000 * (L + 1) / 1461001;
L = L - 1461 * _year / 4 + 31;
int _month = 80 * L / 2447;
int _day = L - 2447 * _month / 80;
L = _month / 11;
_month = _month + 2 - 12 * L;
_year = 100 * (N - 49) + _year + L;
year = uint(_year);
month = uint(_month);
day = uint(_day);
}
function timestampFromDate(uint year, uint month, uint day) internal pure returns (uint timestamp) {
timestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY;
}
function timestampFromDateTime(uint year, uint month, uint day, uint hour, uint minute, uint second) internal pure returns (uint timestamp) {
timestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + hour * SECONDS_PER_HOUR + minute * SECONDS_PER_MINUTE + second;
}
function timestampToDate(uint timestamp) internal pure returns (uint year, uint month, uint day) {
(year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY);
}
function timestampToDateTime(uint timestamp) internal pure returns (uint year, uint month, uint day, uint hour, uint minute, uint second) {
(year, month, day) = _daysToDate(timestamp / SECONDS_PER_DAY);
uint secs = timestamp % SECONDS_PER_DAY;
hour = secs / SECONDS_PER_HOUR;
secs = secs % SECONDS_PER_HOUR;
minute = secs / SECONDS_PER_MINUTE;
second = secs % SECONDS_PER_MINUTE;
}
function isValidDate(uint year, uint month, uint day) internal pure returns (bool valid) {
if (year >= 1970 && month > 0 && month <= 12) {
uint daysInMonth = _getDaysInMonth(year, month);
if (day > 0 && day <= daysInMonth) {
valid = true;
}
}
}
function isValidDateTime(uint year, uint month, uint day, uint hour, uint minute, uint second) internal pure returns (bool valid) {
if (isValidDate(year, month, day)) {
if (hour < 24 && minute < 60 && second < 60) {
valid = true;
}
}
}
function isLeapYear(uint timestamp) internal pure returns (bool leapYear) {
(uint year,,) = _daysToDate(timestamp / SECONDS_PER_DAY);
leapYear = _isLeapYear(year);
}
function _isLeapYear(uint year) internal pure returns (bool leapYear) {
leapYear = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
}
function isWeekDay(uint timestamp) internal pure returns (bool weekDay) {
weekDay = getDayOfWeek(timestamp) <= DOW_FRI;
}
function isWeekEnd(uint timestamp) internal pure returns (bool weekEnd) {
weekEnd = getDayOfWeek(timestamp) >= DOW_SAT;
}
function getDaysInMonth(uint timestamp) internal pure returns (uint daysInMonth) {
(uint year, uint month,) = _daysToDate(timestamp / SECONDS_PER_DAY);
daysInMonth = _getDaysInMonth(year, month);
}
function _getDaysInMonth(uint year, uint month) internal pure returns (uint daysInMonth) {
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
daysInMonth = 31;
} else if (month != 2) {
daysInMonth = 30;
} else {
daysInMonth = _isLeapYear(year) ? 29 : 28;
}
}
// 1 = Monday, 7 = Sunday
function getDayOfWeek(uint timestamp) internal pure returns (uint dayOfWeek) {
uint _days = timestamp / SECONDS_PER_DAY;
dayOfWeek = (_days + 3) % 7 + 1;
}
function getYear(uint timestamp) internal pure returns (uint year) {
(year,,) = _daysToDate(timestamp / SECONDS_PER_DAY);
}
function getMonth(uint timestamp) internal pure returns (uint month) {
(,month,) = _daysToDate(timestamp / SECONDS_PER_DAY);
}
function getDay(uint timestamp) internal pure returns (uint day) {
(,,day) = _daysToDate(timestamp / SECONDS_PER_DAY);
}
function getHour(uint timestamp) internal pure returns (uint hour) {
uint secs = timestamp % SECONDS_PER_DAY;
hour = secs / SECONDS_PER_HOUR;
}
function getMinute(uint timestamp) internal pure returns (uint minute) {
uint secs = timestamp % SECONDS_PER_HOUR;
minute = secs / SECONDS_PER_MINUTE;
}
function getSecond(uint timestamp) internal pure returns (uint second) {
second = timestamp % SECONDS_PER_MINUTE;
}
function addYears(uint timestamp, uint _years) internal pure returns (uint newTimestamp) {
(uint year, uint month, uint day) = _daysToDate(timestamp / SECONDS_PER_DAY);
year += _years;
uint daysInMonth = _getDaysInMonth(year, month);
if (day > daysInMonth) {
day = daysInMonth;
}
newTimestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + timestamp % SECONDS_PER_DAY;
require(newTimestamp >= timestamp);
}
function addMonths(uint timestamp, uint _months) internal pure returns (uint newTimestamp) {
(uint year, uint month, uint day) = _daysToDate(timestamp / SECONDS_PER_DAY);
month += _months;
year += (month - 1) / 12;
month = (month - 1) % 12 + 1;
uint daysInMonth = _getDaysInMonth(year, month);
if (day > daysInMonth) {
day = daysInMonth;
}
newTimestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + timestamp % SECONDS_PER_DAY;
require(newTimestamp >= timestamp);
}
function addDays(uint timestamp, uint _days) internal pure returns (uint newTimestamp) {
newTimestamp = timestamp + _days * SECONDS_PER_DAY;
require(newTimestamp >= timestamp);
}
function addHours(uint timestamp, uint _hours) internal pure returns (uint newTimestamp) {
newTimestamp = timestamp + _hours * SECONDS_PER_HOUR;
require(newTimestamp >= timestamp);
}
function addMinutes(uint timestamp, uint _minutes) internal pure returns (uint newTimestamp) {
newTimestamp = timestamp + _minutes * SECONDS_PER_MINUTE;
require(newTimestamp >= timestamp);
}
function addSeconds(uint timestamp, uint _seconds) internal pure returns (uint newTimestamp) {
newTimestamp = timestamp + _seconds;
require(newTimestamp >= timestamp);
}
function subYears(uint timestamp, uint _years) internal pure returns (uint newTimestamp) {
(uint year, uint month, uint day) = _daysToDate(timestamp / SECONDS_PER_DAY);
year -= _years;
uint daysInMonth = _getDaysInMonth(year, month);
if (day > daysInMonth) {
day = daysInMonth;
}
newTimestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + timestamp % SECONDS_PER_DAY;
require(newTimestamp <= timestamp);
}
function subMonths(uint timestamp, uint _months) internal pure returns (uint newTimestamp) {
(uint year, uint month, uint day) = _daysToDate(timestamp / SECONDS_PER_DAY);
uint yearMonth = year * 12 + (month - 1) - _months;
year = yearMonth / 12;
month = yearMonth % 12 + 1;
uint daysInMonth = _getDaysInMonth(year, month);
if (day > daysInMonth) {
day = daysInMonth;
}
newTimestamp = _daysFromDate(year, month, day) * SECONDS_PER_DAY + timestamp % SECONDS_PER_DAY;
require(newTimestamp <= timestamp);
}
function subDays(uint timestamp, uint _days) internal pure returns (uint newTimestamp) {
newTimestamp = timestamp - _days * SECONDS_PER_DAY;
require(newTimestamp <= timestamp);
}
function subHours(uint timestamp, uint _hours) internal pure returns (uint newTimestamp) {
newTimestamp = timestamp - _hours * SECONDS_PER_HOUR;
require(newTimestamp <= timestamp);
}
function subMinutes(uint timestamp, uint _minutes) internal pure returns (uint newTimestamp) {
newTimestamp = timestamp - _minutes * SECONDS_PER_MINUTE;
require(newTimestamp <= timestamp);
}
function subSeconds(uint timestamp, uint _seconds) internal pure returns (uint newTimestamp) {
newTimestamp = timestamp - _seconds;
require(newTimestamp <= timestamp);
}
function diffYears(uint fromTimestamp, uint toTimestamp) internal pure returns (uint _years) {
require(fromTimestamp <= toTimestamp);
(uint fromYear,,) = _daysToDate(fromTimestamp / SECONDS_PER_DAY);
(uint toYear,,) = _daysToDate(toTimestamp / SECONDS_PER_DAY);
_years = toYear - fromYear;
}
function diffMonths(uint fromTimestamp, uint toTimestamp) internal pure returns (uint _months) {
require(fromTimestamp <= toTimestamp);
(uint fromYear, uint fromMonth,) = _daysToDate(fromTimestamp / SECONDS_PER_DAY);
(uint toYear, uint toMonth,) = _daysToDate(toTimestamp / SECONDS_PER_DAY);
_months = toYear * 12 + toMonth - fromYear * 12 - fromMonth;
}
function diffDays(uint fromTimestamp, uint toTimestamp) internal pure returns (uint _days) {
require(fromTimestamp <= toTimestamp);
_days = (toTimestamp - fromTimestamp) / SECONDS_PER_DAY;
}
function diffHours(uint fromTimestamp, uint toTimestamp) internal pure returns (uint _hours) {
require(fromTimestamp <= toTimestamp);
_hours = (toTimestamp - fromTimestamp) / SECONDS_PER_HOUR;
}
function diffMinutes(uint fromTimestamp, uint toTimestamp) internal pure returns (uint _minutes) {
require(fromTimestamp <= toTimestamp);
_minutes = (toTimestamp - fromTimestamp) / SECONDS_PER_MINUTE;
}
function diffSeconds(uint fromTimestamp, uint toTimestamp) internal pure returns (uint _seconds) {
require(fromTimestamp <= toTimestamp);
_seconds = toTimestamp - fromTimestamp;
}
}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"_closingHour","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_closingMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_openingHour","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_openingMinute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_utcOffset","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"isTradingOpenAt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"utcOffset","type":"int256"}],"name":"setUTCOffset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526003196001556009600255601e6003556010600455600060055534801561002a57600080fd5b506000610035610084565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610088565b3390565b6106f9806100976000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063652421f511610071578063652421f514610111578063715018a6146101195780637579eb1a146101235780638da5cb5b14610140578063c89169ad14610164578063f2fde38b1461016c576100a9565b80630550245a146100ae57806311a1e853146100c857806321949a25146100f95780633871d6561461010157806356a060a214610109575b600080fd5b6100b6610192565b60408051918252519081900360200190f35b6100e5600480360360208110156100de57600080fd5b5035610198565b604080519115158252519081900360200190f35b6100b66101eb565b6100b66101f1565b6100e56101f7565b6100b6610209565b61012161020f565b005b6101216004803603602081101561013957600080fd5b50356102c3565b6101486103c7565b604080516001600160a01b039092168252519081900360200190f35b6100b66103d6565b6101216004803603602081101561018257600080fd5b50356001600160a01b03166103dc565b60035481565b6000806101a483610452565b90506101af8161048a565b156101be5760009150506101e6565b6000806101ca8361049f565b5090955093506101e092508491508390506104df565b93505050505b919050565b60045481565b60015481565b60004261020381610198565b91505090565b60055481565b610217610528565b6000546001600160a01b03908116911614610279576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6102cb610528565b6000546001600160a01b0390811691161461032d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600e8113610377576040805162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081550d5081bd9999cd95d60721b604482015290519081900360640190fd5b600b1981126103c2576040805162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081550d5081bd9999cd95d60721b604482015290519081900360640190fd5b600155565b6000546001600160a01b031690565b60025481565b6103e4610528565b6000546001600160a01b03908116911614610446576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61044f8161052c565b50565b6000806000600154126104725761046b836001546105cc565b9050610484565b610481836001546000036105e0565b90505b92915050565b60006006610497836105f4565b101592915050565b600080808080806104b4620151808804610607565b91999098919750610e10620151809092068281049750603c9290068281049650919091069350915050565b60006002548310806104f357506004548310155b1561050057506000610484565b60025483148015610512575060035482105b1561051f57506000610484565b50600192915050565b3390565b6001600160a01b0381166105715760405162461bcd60e51b815260040180806020018281038252602681526020018061069e6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610e10810282018281101561048457600080fd5b610e10810282038281111561048457600080fd5b6007620151809091046003010660010190565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161065e57fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c9094029091039290920197509550935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220084f6ebf903638735cf822a3eeb9a7b5c076b5a809a02c65f1a0c9dc3774fed764736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063652421f511610071578063652421f514610111578063715018a6146101195780637579eb1a146101235780638da5cb5b14610140578063c89169ad14610164578063f2fde38b1461016c576100a9565b80630550245a146100ae57806311a1e853146100c857806321949a25146100f95780633871d6561461010157806356a060a214610109575b600080fd5b6100b6610192565b60408051918252519081900360200190f35b6100e5600480360360208110156100de57600080fd5b5035610198565b604080519115158252519081900360200190f35b6100b66101eb565b6100b66101f1565b6100e56101f7565b6100b6610209565b61012161020f565b005b6101216004803603602081101561013957600080fd5b50356102c3565b6101486103c7565b604080516001600160a01b039092168252519081900360200190f35b6100b66103d6565b6101216004803603602081101561018257600080fd5b50356001600160a01b03166103dc565b60035481565b6000806101a483610452565b90506101af8161048a565b156101be5760009150506101e6565b6000806101ca8361049f565b5090955093506101e092508491508390506104df565b93505050505b919050565b60045481565b60015481565b60004261020381610198565b91505090565b60055481565b610217610528565b6000546001600160a01b03908116911614610279576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6102cb610528565b6000546001600160a01b0390811691161461032d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600e8113610377576040805162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081550d5081bd9999cd95d60721b604482015290519081900360640190fd5b600b1981126103c2576040805162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081550d5081bd9999cd95d60721b604482015290519081900360640190fd5b600155565b6000546001600160a01b031690565b60025481565b6103e4610528565b6000546001600160a01b03908116911614610446576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61044f8161052c565b50565b6000806000600154126104725761046b836001546105cc565b9050610484565b610481836001546000036105e0565b90505b92915050565b60006006610497836105f4565b101592915050565b600080808080806104b4620151808804610607565b91999098919750610e10620151809092068281049750603c9290068281049650919091069350915050565b60006002548310806104f357506004548310155b1561050057506000610484565b60025483148015610512575060035482105b1561051f57506000610484565b50600192915050565b3390565b6001600160a01b0381166105715760405162461bcd60e51b815260040180806020018281038252602681526020018061069e6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610e10810282018281101561048457600080fd5b610e10810282038281111561048457600080fd5b6007620151809091046003010660010190565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161065e57fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c9094029091039290920197509550935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220084f6ebf903638735cf822a3eeb9a7b5c076b5a809a02c65f1a0c9dc3774fed764736f6c634300060c0033
Deployed Bytecode Sourcemap
2677:1654:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2844:31;;;:::i;:::-;;;;;;;;;;;;;;;;3111:399;;;;;;;;;;;;;;;;-1:-1:-1;3111:399:1;;:::i;:::-;;;;;;;;;;;;;;;;;;2878:29;;;:::i;2784:26::-;;;:::i;2967:141::-;;;:::i;2910:27::-;;;:::i;2027:123::-;;;:::i;:::-;;4125:204;;;;;;;;;;;;;;;;-1:-1:-1;4125:204:1;;:::i;1467:64::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1467:64:1;;;;;;;;;;;;;;2813:28;;;:::i;2284:95::-;;;;;;;;;;;;;;;;-1:-1:-1;2284:95:1;-1:-1:-1;;;;;2284:95:1;;:::i;2844:31::-;;;;:::o;3111:399::-;3175:4;3186:22;3211;3223:9;3211:11;:22::i;:::-;3186:47;;3243:53;3281:14;3243:37;:53::i;:::-;3239:83;;;3312:5;3305:12;;;;;3239:83;3326:13;3343:15;3396:63;3444:14;3396:47;:63::i;:::-;-1:-1:-1;3363:96:1;;-1:-1:-1;3363:96:1;-1:-1:-1;3471:35:1;;-1:-1:-1;3363:96:1;;-1:-1:-1;3363:96:1;;-1:-1:-1;3471:13:1;:35::i;:::-;3464:42;;;;;3111:399;;;;:::o;2878:29::-;;;;:::o;2784:26::-;;;;:::o;2967:141::-;3021:4;3052:15;3078:26;3052:15;3078;:26::i;:::-;3071:33;;;2967:141;:::o;2910:27::-;;;;:::o;2027:123::-;1651:12;:10;:12::i;:::-;1641:6;;-1:-1:-1;;;;;1641:6:1;;;:22;;;1633:67;;;;;-1:-1:-1;;;1633:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2120:1:::1;2104:6:::0;;2083:40:::1;::::0;-1:-1:-1;;;;;2104:6:1;;::::1;::::0;2083:40:::1;::::0;2120:1;;2083:40:::1;2144:1;2127:19:::0;;-1:-1:-1;;;;;;2127:19:1::1;::::0;;2027:123::o;4125:204::-;1651:12;:10;:12::i;:::-;1641:6;;-1:-1:-1;;;;;1641:6:1;;;:22;;;1633:67;;;;;-1:-1:-1;;;1633:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2745:2:::1;4194:9;:24;4186:55;;;::::0;;-1:-1:-1;;;4186:55:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;4186:55:1;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;4253:9:1::1;:23;4245:54;;;::::0;;-1:-1:-1;;;4245:54:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;4245:54:1;;;;;;;;;;;;;::::1;;4303:10;:22:::0;4125:204::o;1467:64::-;1504:7;1522:6;-1:-1:-1;;;;;1522:6:1;1467:64;:::o;2813:28::-;;;;:::o;2284:95::-;1651:12;:10;:12::i;:::-;1641:6;;-1:-1:-1;;;;;1641:6:1;;;:22;;;1633:67;;;;;-1:-1:-1;;;1633:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2348:28:::1;2367:8;2348:18;:28::i;:::-;2284:95:::0;:::o;3513:345::-;3575:7;3589:19;3630:1;3616:10;;:15;3612:218;;3657:65;3694:9;3710:10;;3657:36;:65::i;:::-;3640:82;;3612:218;;;3759:66;3796:9;3813:10;;3812:11;;3759:36;:66::i;:::-;3742:83;;3612:218;3840:14;3513:345;-1:-1:-1;;3513:345:1:o;6119:133:0:-;6177:12;1349:1;6211:23;6224:9;6211:12;:23::i;:::-;:34;;;6119:133;-1:-1:-1;;6119:133:0:o;4569:433::-;4637:9;;;;;;4738:40;1019:12;4750:9;:27;4738:11;:40::i;:::-;4717:61;;;;;;-1:-1:-1;1070:7:0;1019:12;4800:27;;;4844:23;;;;-1:-1:-1;1118:2:0;4884:23;;;4926:25;;;;-1:-1:-1;4970:25:0;;;;;-1:-1:-1;4569:433:0;-1:-1:-1;;4569:433:0:o;3862:260:1:-;3931:4;3954:12;;3947:4;:19;3946:47;;;;3980:12;;3972:4;:20;;3946:47;3942:77;;;-1:-1:-1;4009:5:1;4002:12;;3942:77;4036:12;;4028:4;:20;4027:51;;;;;4063:14;;4054:6;:23;4027:51;4023:81;;;-1:-1:-1;4094:5:1;4087:12;;4023:81;-1:-1:-1;4114:4:1;3862:260;;;;:::o;218:91::-;296:10;218:91;:::o;2468:205::-;-1:-1:-1;;;;;2536:22:1;;2528:73;;;;-1:-1:-1;;;2528:73:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2631:6;;;2610:38;;-1:-1:-1;;;;;2610:38:1;;;;2631:6;;;2610:38;;;2652:6;:17;;-1:-1:-1;;;;;;2652:17:1;-1:-1:-1;;;;;2652:17:1;;;;;;;;;;2468:205::o;9235:202:0:-;1070:7;9361:25;;9349:37;;9404:25;;;;9396:34;;;;;11140:202;1070:7;11266:25;;11254:37;;11309:25;;;;11301:34;;;;;6897:175;7060:1;1019:12;6997:27;;;7055:1;7047:9;7046:15;7064:1;7046:19;;6897:175::o;3308:605::-;3364:9;;;3424:5;3449:31;;;3364:9;3506:6;3498:1;:5;;:14;;-1:-1:-1;3549:1:0;3544;3531:6;:10;;:14;3530:20;3526:24;;;;3560:9;3589:7;3572:4;3584:1;3580:5;;3572:14;:24;;-1:-1:-1;3629:1:0;3614:4;:12;;:16;3610:1;:20;3633:2;3610:25;3606:29;;3645:10;3667:4;3663:1;3658:2;:6;:13;;;;;;;-1:-1:-1;3681:8:0;3712:2;3696:4;:13;;:18;3692:22;;;-1:-1:-1;3737:2:0;3728:6;:11;-1:-1:-1;;3802:6:0;;;;3795:3;:14;:22;;;;:26;;;3767:1;3771:2;:6;;;3758:19;;;;;;;;-1:-1:-1;3728:11:0;-1:-1:-1;3795:26:0;-1:-1:-1;;;;3308:605:0:o
Swarm Source
ipfs://084f6ebf903638735cf822a3eeb9a7b5c076b5a809a02c65f1a0c9dc3774fed7
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.