ERC-20
Source Code
Overview
Max Total Supply
8,816,898.496756633377593072 DFKII
Holders
919
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
DFKII
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-09-29
*/
pragma solidity ^0.5.16;
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
contract LockIdGen {
uint256 public requestCount;
constructor() public {
requestCount = 0;
}
function generateLockId() internal returns (bytes32 lockId) {
return keccak256(abi.encodePacked(blockhash(block.number-1), address(this), ++requestCount));
}
}
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* This test is non-exhaustive, and there may be false-negatives: during the
* execution of a contract's constructor, its address will be reported as
* not containing a contract.
*
* IMPORTANT: It is unsafe to assume that an address for which this
* function returns false is an externally-owned account (EOA) and not a
* contract.
*/
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != 0x0 && codehash != accountHash);
}
/**
* @dev Converts an `address` into `address payable`. Note that this is
* simply a type cast: the actual underlying value is not changed.
*
* _Available since v2.4.0._
*/
function toPayable(address account) internal pure returns (address payable) {
return address(uint160(account));
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*
* _Available since v2.4.0._
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-call-value
(bool success, ) = recipient.call.value(amount)("");
require(success, "Address: unable to send value, recipient may have reverted");
}
}
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(StandardToken token, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(StandardToken token, address from, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(StandardToken token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(StandardToken token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(StandardToken token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function callOptionalReturn(ERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves.
// A Solidity high level call has three parts:
// 1. The target address is checked to verify it contains contract code
// 2. The call itself is made, and success asserted
// 3. The return value is decoded, which in turn checks the size of the returned data.
// solhint-disable-next-line max-line-length
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
contract ManagerUpgradeable is LockIdGen {
struct ChangeRequest {
address proposedNew;
address proposedClear;
}
// address public custodian;
mapping (address => address) public managers;
mapping (bytes32 => ChangeRequest) public changeReqs;
uint256 public mancount ;
// CONSTRUCTOR
constructor(
address [] memory _mans
)
LockIdGen()
public
{
uint256 numMans = _mans.length;
for (uint256 i = 0; i < numMans; i++) {
address pto = _mans[i];
require(pto != address(0));
managers[pto] = pto;
}
mancount = 0;
}
modifier onlyManager {
require(msg.sender == managers[msg.sender],"onlyManger must use");
_;
}
//replace managers
function replaceManager(address _new,address _clear) public onlyManager {
require( _clear != address(0) || _new != address(0) );
require( _clear == address(0) || managers[_clear] == _clear);
if(_new != address(0))
{
managers[_new] = _new;
mancount = mancount + 1;
}
if(_clear != address(0))
{
delete managers[_clear];
mancount = mancount - 1;
}
}
// for manager change
function requestChange(address _new,address _clear) public onlyManager returns (bytes32 lockId) {
require( _clear != address(0) || _new != address(0) );
require( _clear == address(0) || managers[_clear] == _clear);
lockId = generateLockId();
changeReqs[lockId] = ChangeRequest({
proposedNew: _new,
proposedClear: _clear
});
emit ChangeRequested(lockId, msg.sender, _new,_clear);
}
event ChangeRequested(
bytes32 _lockId,
address _msgSender,
address _new,
address _clear
);
function confirmChange(bytes32 _lockId) public onlyManager {
ChangeRequest storage changeRequest = changeReqs[_lockId];
require( changeRequest.proposedNew != address(0) || changeRequest.proposedClear != address(0));
if(changeRequest.proposedNew != address(0))
{
managers[changeRequest.proposedNew] = changeRequest.proposedNew;
mancount = mancount + 1;
}
if(changeRequest.proposedClear != address(0))
{
delete managers[changeRequest.proposedClear];
mancount = mancount - 1;
}
delete changeReqs[_lockId];
emit ChangeConfirmed(_lockId, changeRequest.proposedNew,changeRequest.proposedClear);
}
event ChangeConfirmed(bytes32 _lockId, address _newCustodian, address _clearCustodian);
function sweepChange(bytes32 _lockId) public onlyManager {
ChangeRequest storage changeRequest=changeReqs[_lockId];
require((changeRequest.proposedNew != address(0) || changeRequest.proposedClear != address(0) ));
delete changeReqs[_lockId];
emit ChangeSweep(_lockId, msg.sender);
}
event ChangeSweep(bytes32 _lockId, address _sender);
function sweeptoken(address tokenaddr,uint256 amount) public onlyManager{
TransferHelper.safeTransfer(tokenaddr,msg.sender,amount);
}
function sweepeth(uint256 amount) public onlyManager{
msg.sender.transfer(amount);
}
}
contract ERC20Basic {
// events
event Transfer(address indexed from, address indexed to, uint256 value);
// public functions
function totalSupply() public view returns (uint256);
function balanceOf(address addr) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
}
contract ERC20 is ERC20Basic {
// events
event Approval(address indexed owner, address indexed agent, uint256 value);
// public functions
function allowance(address owner, address agent) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address agent, uint256 value) public returns (bool);
}
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
// public variables
string public name;
string public symbol;
uint8 public decimals = 18;
// internal variables
uint256 _totalSupply;
mapping(address => uint256) _balances;
// events
// public functions
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
function balanceOf(address addr) public view returns (uint256 balance) {
return _balances[addr];
}
function transfer(address to, uint256 value) public returns (bool) {
require(to != address(0));
require(value <= _balances[msg.sender]);
_balances[msg.sender] = _balances[msg.sender].sub(value);
_balances[to] = _balances[to].add(value);
emit Transfer(msg.sender, to, value);
return true;
}
// internal functions
}
contract StandardToken is ERC20, BasicToken {
// public variables
// internal variables
mapping (address => mapping (address => uint256)) _allowances;
// events
// public functions
function transferFrom(address from, address to, uint256 value) public returns (bool) {
require(to != address(0));
require(value <= _balances[from],"value lt from");
require(value <= _allowances[from][msg.sender],"value lt _allowances from ");
_balances[from] = _balances[from].sub(value);
_balances[to] = _balances[to].add(value);
_allowances[from][msg.sender] = _allowances[from][msg.sender].sub(value);
emit Transfer(from, to, value);
return true;
}
function approve(address agent, uint256 value) public returns (bool) {
_allowances[msg.sender][agent] = value;
emit Approval(msg.sender, agent, value);
return true;
}
function allowance(address owner, address agent) public view returns (uint256) {
return _allowances[owner][agent];
}
function increaseApproval(address agent, uint value) public returns (bool) {
_allowances[msg.sender][agent] = _allowances[msg.sender][agent].add(value);
emit Approval(msg.sender, agent, _allowances[msg.sender][agent]);
return true;
}
function decreaseApproval(address agent, uint value) public returns (bool) {
uint allowanceValue = _allowances[msg.sender][agent];
if (value > allowanceValue) {
_allowances[msg.sender][agent] = 0;
} else {
_allowances[msg.sender][agent] = allowanceValue.sub(value);
}
emit Approval(msg.sender, agent, _allowances[msg.sender][agent]);
return true;
}
// internal functions
}
contract MinableToken is StandardToken,ManagerUpgradeable{
uint256 maxMined =0;
constructor(uint256 _maxMined,address [] memory _mans) public ManagerUpgradeable(_mans){
maxMined = _maxMined;
}
function _mint(address to, uint256 value) public onlyManager {
require(maxMined==0||_totalSupply.add(value)<=maxMined,"_mint value invalid");
_totalSupply = _totalSupply.add(value);
_balances[to] = _balances[to].add(value);
emit Transfer(address(0), to, value);
}
function _burn(address from, uint value) public {
_balances[from] = _balances[from].sub(value);
_totalSupply = _totalSupply.sub(value);
emit Transfer(from, address(0), value);
}
}
contract DFKII is MinableToken {
// public variables
string public name = "Defiking.finance Version 2.0";
string public symbol = "DFKII";
uint8 public decimals = 18;
// internal variables
// events
// public functions
constructor(address [] memory _mans,uint256 _maxMined) public MinableToken(_maxMined,_mans) {
//init _totalSupply
// _totalSupply = 1000*10000 * (10 ** uint256(decimals));
// _balances[msg.sender] = _totalSupply;
// emit Transfer(address(0x0), msg.sender, _totalSupply);
}
// internal functions
}
contract USDT is MinableToken {
// public variables
string public name = "Defiking.finance Version 2.0";
string public symbol = "USDT";
uint8 public decimals = 6;
// internal variables
// events
// public functions
constructor(address [] memory _mans,uint256 _maxMined) public MinableToken(_maxMined,_mans) {
//init _totalSupply
// _totalSupply = 1000*10000 * (10 ** uint256(decimals));
// _balances[msg.sender] = _totalSupply;
// emit Transfer(address(0x0), msg.sender, _totalSupply);
}
// internal functions
}
contract DFK is ManagerUpgradeable {
//liquidity +
function stakingDeposit(uint256 value) public payable returns (bool);
//profit +
function profit2Staking(uint256 value)public returns (bool success);
function withdrawProfit(address to)public returns (bool success);
function withdrawStaking(address to,uint256 value)public returns (bool success);
function withdrawAll(address to)public returns (bool success);
function totalMiners() public view returns (uint256);
function totalStaking() public view returns (uint256);
function poolBalance() public view returns (uint256);
function minedBalance() public view returns (uint256);
function stakingBalance(address miner) public view returns (uint256);
function profitBalance(address miner) public view returns (uint256);
function pauseStaking()public returns (bool success);
function resumeStaking()public returns (bool success);
}
contract DFKImplement is DFK {
using SafeMath for uint256;
using SafeERC20 for StandardToken;
int public status;
struct StakingLog{
uint256 staking_time;
uint256 profit_time;
uint256 staking_value;
uint256 unstaking_value;
}
mapping(address => StakingLog) public stakings;
uint256 public cleanup_time;
uint256 public profit_period;
uint256 public period_bonus;
mapping(address => uint256) public balanceProfit;
mapping(address => uint256) public balanceStaking;
StandardToken public dfkToken;
uint256 public _totalMiners;
uint256 public _totalStaking;
uint256 public totalProfit;
uint256 public minePoolBalance;
modifier onStaking {
require(status == 1,"please start minner");
_;
}
event ProfitLog(
address indexed from,
uint256 profit_time,
uint256 staking_value,
uint256 unstaking_value,
uint256 profit_times,
uint256 profit
);
constructor(address _dfkToken,int decimals,address [] memory _mans) public ManagerUpgradeable(_mans){
status = 0;
cleanup_time = now;
profit_period = 24*3600;
period_bonus = 100000*(10 ** uint256(decimals));
cleanup_time = now;
dfkToken = StandardToken(_dfkToken);
}
function addMinePool(uint256 stakevalue) public onStaking payable returns (uint256){
require(stakevalue>0);
// user must call prove first.
dfkToken.safeTransferFrom(msg.sender,address(this),stakevalue);
minePoolBalance = minePoolBalance.add(stakevalue);
return minePoolBalance;
}
function stakingDeposit(uint256 stakevalue) public onStaking payable returns (bool){
require(stakevalue>0,"stakevalue is gt zero");
// user must call prove first.
dfkToken.transferFrom(msg.sender,address(this),stakevalue);
_totalStaking = _totalStaking.add(stakevalue);
return addMinerStaking(msg.sender,stakevalue);
}
function addMinerStaking(address miner,uint256 stakevalue) internal returns (bool){
balanceStaking[miner] = balanceStaking[miner].add(stakevalue);
StakingLog memory slog=stakings[miner];
if(slog.profit_time < cleanup_time){
stakings[miner] = StakingLog({
staking_time:now,
profit_time:now,
staking_value:0,
unstaking_value:stakevalue
});
_totalMiners = _totalMiners.add(1);
}else if(now.sub(slog.profit_time) >= profit_period){
uint256 profit_times = now.sub(slog.profit_time).div(profit_period);
stakings[miner] = StakingLog({
staking_time:now,
profit_time:now,
staking_value:slog.staking_value.add(slog.unstaking_value),
unstaking_value:stakevalue
});
uint256 profit = period_bonus.mul(stakings[miner].staking_value).mul(profit_times).div(_totalStaking);
emit ProfitLog(miner,stakings[miner].profit_time,stakings[miner].staking_value,stakings[miner].unstaking_value,profit_times,profit);
require(minePoolBalance>=profit,"minePoolBalance lt profit");
minePoolBalance = minePoolBalance.sub(profit);
balanceProfit[miner]=balanceProfit[miner].add(profit);
totalProfit = totalProfit.add(profit);
}else {
stakings[miner] = StakingLog({
staking_time:now,
profit_time:slog.profit_time,
staking_value:slog.staking_value,
unstaking_value:slog.unstaking_value.add(stakevalue)
});
}
return true;
}
function profit2Staking(uint256 value)public onStaking returns (bool success){
require(balanceProfit[msg.sender]>=value);
balanceProfit[msg.sender] = balanceProfit[msg.sender].sub(value);
return addMinerStaking(msg.sender,value);
}
function withdrawProfit(address to)public returns (bool success){
require(to != address(0));
addMinerStaking(msg.sender,0);
uint256 profit = balanceProfit[msg.sender];
balanceProfit[msg.sender] = 0;
require(dfkToken.transfer(to,profit));
return true;
}
function withdrawStaking(address to,uint256 value)public returns (bool success){
require(value>0);
require(to != address(0));
require(balanceStaking[msg.sender]>=value);
require(_totalStaking>=value);
_totalStaking=_totalStaking.sub(value);
balanceStaking[msg.sender] = balanceStaking[msg.sender].sub(value);
StakingLog memory slog=stakings[msg.sender];
stakings[msg.sender] = StakingLog({
staking_time:now,
profit_time:slog.profit_time,
staking_value:0,
unstaking_value:balanceStaking[msg.sender]
});
require(dfkToken.transfer(to,value));
return true;
}
function withdrawAll(address to)public returns (bool success){
require(to != address(0));
addMinerStaking(msg.sender,0);
_totalStaking=_totalStaking.sub(balanceStaking[msg.sender]);
uint256 total=balanceStaking[msg.sender].add(balanceProfit[msg.sender]);
balanceProfit[msg.sender]=0;
balanceStaking[msg.sender] = 0;
stakings[msg.sender] = StakingLog({
staking_time:0,
profit_time:0,
staking_value:0,
unstaking_value:0
});
// _totalMiners=_totalMiners.sub(1);
require(dfkToken.transfer(to,total));
return true;
}
function totalMiners() public view returns (uint256){
return _totalMiners;
}
function totalStaking() public view returns (uint256){
return _totalStaking;
}
function poolBalance() public view returns (uint256){
return minePoolBalance;
}
function minedBalance() public view returns (uint256){
return totalProfit;
}
function stakingBalance(address miner) public view returns (uint256){
return balanceStaking[miner];
}
function profitBalance(address miner) public view returns (uint256){
return balanceProfit[miner];
}
function pauseStaking()public onlyManager returns (bool ){
status = 0;
}
function resumeStaking()public onlyManager returns (bool ){
status = 1;
}
}
contract DFKImplHelper{
using SafeMath for uint256;
DFKImplement public dfkImpl;
constructor(address _dfkImpl) public{
dfkImpl = DFKImplement(_dfkImpl);
}
function calcProfit(address miner) public view returns (uint256)
{
(,uint256 profit_time,uint256 staking_value,) = dfkImpl.stakings(miner);
if(profit_time < dfkImpl.cleanup_time()){
return 0;
}else if(now.sub(profit_time) >= dfkImpl.profit_period()){
uint256 profit_times = now.sub(profit_time).div(dfkImpl.profit_period());
uint256 profit = dfkImpl.period_bonus().mul(staking_value).mul(profit_times).div(dfkImpl._totalStaking());
return profit;
}else {
return 0;
}
}
function calcProfitForFee(address miner,uint256 totalFee,uint256 lastFetchFee) public view returns (uint256)
{
(,uint256 profit_time,uint256 staking_value,) = dfkImpl.stakings(miner);
if(staking_value == 0) {
return 0;
}
if(profit_time < dfkImpl.cleanup_time()){
return 0;
}else {
// uint256 profit_times = now.sub(profit_time).div(dfkImpl.profit_period());
uint256 profit = totalFee.mul(staking_value).div(dfkImpl._totalStaking());
if(profit>lastFetchFee){
return profit.sub(lastFetchFee);
}else{
return 0;
}
}
}
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
contract DTradeLiquids is StandardToken {
// public variables
string public name = "Defiking.finance swap";
string public symbol = "DTrade-V1 LP";
uint8 public decimals = 18;
// internal variables
// events
address owner;
// public functions
constructor() public {
//init _totalSupply
owner = msg.sender;
}
modifier onlyOwner {
require(msg.sender == owner);
_;
}
function _mint(address to, uint value) public onlyOwner {
_totalSupply = _totalSupply.add(value);
_balances[to] = _balances[to].add(value);
emit Transfer(address(0), to, value);
}
function _burn(address from, uint value) public onlyOwner{
_balances[from] = _balances[from].sub(value);
_totalSupply = _totalSupply.sub(value);
emit Transfer(from, address(0), value);
}
//function initialize(string _symbol) public{
// symbol = _symbol;
// }
// internal functions
}
interface Refers {
function rewards2Super(address user,uint256 totalReward) external returns (bool);
}
contract DFKExPair is ManagerUpgradeable{
using SafeMath for uint256;
using SafeERC20 for ERC20;
address public token0;//usdt,basic token
address public token1;//dfkii
uint8 public price_decimal = 8;
uint256 public cur_price = 0;
uint public fee2Liquid = 22;
uint public fee2Refs = 3;
uint public fee2Burn = 5;
uint256 public feeTotal=30;
uint256 public PRICE_MOD=10000;//基数10000
uint256 public FEE_MOD=10000;//基数10000
uint256 public TOKEN_DECIMAL_DIF;//基数10000
uint256 public reserve0 =0;//liquid.token0
uint256 public reserve1 =0;//liquid.token1
uint256 public decimal0;//liquid.token0
uint256 public decimal1;//liquid.token1
uint256 public fee = 0;
uint256 public priceFlips = 1;//flips for each 10000 token1
uint256 public totalProfitForLiquids =0; //fee.for liquid
uint256 public totalProfitRefs =0; //fee.for dfk1 staking
uint256 public totalProfitBurn =0; //fee.for burn
uint256 public totalLiquids = 0;
// mapping(address => uint256) public profits4DFK1;
mapping(address => uint256[]) public liquidBonusLog;
address public liquidToken;//
Refers public refers;
address public isDfkiiRefs;
uint256 public unlocked = 0;
uint256 public miniLiquid = 100000*(10 **18);
modifier onLiquity {
require(unlocked == 1,"please wait liquity");
_;
}
function pauseLiquity() public onlyManager returns (bool ){
unlocked = 0;
}
function resumeLiquity() public onlyManager returns (bool ){
unlocked = 1;
}
constructor(address _token0,address _token1,address refs,uint256 initprice,address []memory _mans,uint256 _miniLiquid) public ManagerUpgradeable(_mans){
//init _totalSupply
token0 = _token0;
token1 = _token1;
if(_token0 == address(0x0)){
decimal0 = 10 **18;
} else {
decimal0 = 10 **uint256(StandardToken(_token0).decimals());
}
if(_token1 == address(0x0)){
decimal1 = 10 **18;
} else {
decimal1 = 10 **uint256(StandardToken(_token1).decimals());
}
cur_price = initprice;
TOKEN_DECIMAL_DIF = decimal1.div(decimal0);
refers = Refers(refs);
bytes memory bytecode = type(DTradeLiquids).creationCode;
bytes32 salt = keccak256(abi.encodePacked(token0, token1));
address _swapV2;
assembly {
_swapV2 := create2(0, add(bytecode, 32), mload(bytecode), salt)
}
liquidToken = _swapV2;
miniLiquid=_miniLiquid;
}
function setPriceMod(uint256 price_mod) onlyManager public {
require(price_mod>0);
PRICE_MOD=price_mod;
}
//修正价格,手续费分配比例
function fixPrice (uint256 price,uint _fee2Liquid,uint _fee2Refs,uint _fee2Burn,uint256 _priceFlips,uint256 _miniLiquid) onlyManager public {
cur_price = price;
fee2Liquid = _fee2Liquid;
fee2Refs = _fee2Refs;
fee2Burn = _fee2Burn;
feeTotal = fee2Liquid+fee2Refs+fee2Burn;
priceFlips = _priceFlips;
miniLiquid=_miniLiquid;
}
//增加池子流动性
function poolTokens(uint256 amount0,uint256 amount1) payable onlyManager public {
if(token0 == address(0x0)){
require(msg.value>=amount0);
} else{
TransferHelper.safeTransferFrom(token0,msg.sender,address(this),amount0);
}
if(token1 == address(0x0)){
require(msg.value>=amount1,"eth not enough");
}else{
TransferHelper.safeTransferFrom(token1,msg.sender,address(this),amount1);
}
reserve0 = reserve0.add(amount0);
reserve1 = reserve1.add(amount1);
}
event TotalEvent(
uint256 totalProfitBurn,
uint256 totalProfitRefs,
uint256 totalProfitForLiquids,
uint256 cur_price,
uint256 liquidfee,
uint256 liquidRefs,
uint256 liquidburn
);
event TotalAmount(
uint256 amount0,
uint256 amount1,
uint256 avg_price,
uint256 fee
);
//swap token0 or token1
function swap(uint256 amount0,uint256 amount1 ,bool toLiquids) payable public returns(uint256,uint256){
require(cur_price>0);
if(amount1>0 && amount0 == 0){//sell token get basic token
//uint256 price_float = amount1.mul(priceFlips).div(decimal1).div(PRICE_MOD);
// require (ERC20(token1).balanceOf(msg.sender) >= amount1 );
uint256 price_float = amount1.mul(priceFlips).div(decimal1);
require(price_float<cur_price,"too large amount");
uint256 next_price = cur_price.sub(price_float);
uint256 avg_price = cur_price.add(next_price).div(2);
if(token1 == address(0x0)){
require(msg.value>=amount1);
}else{
require (ERC20(token1).balanceOf(msg.sender) >= amount1 );
TransferHelper.safeTransferFrom(token1,msg.sender,address(this),amount1);
}
uint256 liquidfee = amount1.mul(fee2Liquid).div(FEE_MOD);
uint256 liquidRefs = amount1.mul(fee2Refs).div(FEE_MOD);
uint256 liquidburn = amount1.mul(fee2Burn).div(FEE_MOD);
amount1 = amount1.sub(liquidfee).sub(liquidRefs).sub(liquidburn);
if(address(refers)!=address(0x0)){
TransferHelper.safeTransfer(token1,address(refers),liquidRefs);
refers.rewards2Super(msg.sender,liquidRefs);
}
totalProfitBurn = totalProfitBurn.add(liquidburn);
totalProfitRefs = totalProfitRefs.add(liquidRefs);
totalProfitForLiquids = totalProfitForLiquids.add(liquidfee);
amount0 = amount1.mul(avg_price).div(TOKEN_DECIMAL_DIF).div(PRICE_MOD);
cur_price = next_price;
if(toLiquids){
reserve0 = reserve0.add(amount0);
reserve1 = reserve1.add(amount1);
}else{
if(token0==address(0x0))
{//eth
msg.sender.transfer(amount0);
}else{
TransferHelper.safeTransfer(token0,msg.sender,amount0);
}
}
}
else if(amount0 > 0 && amount1 == 0){//using eth/usdt to buy token1
if(token0 == address(0x0)) {
require(msg.value >= amount0 );
} else {
require (ERC20(token0).balanceOf(msg.sender) >= amount0 );
TransferHelper.safeTransferFrom(token0,msg.sender,address(this),amount0);
}
amount1 = amount0.mul(PRICE_MOD).div(cur_price);
uint256 price_float = amount1.mul(priceFlips).div(decimal0);
uint256 next_price = cur_price.add(price_float);
uint256 avg_price = cur_price.add(next_price).div(2);
amount1 = amount0.mul(TOKEN_DECIMAL_DIF).mul(PRICE_MOD).div(avg_price);
uint256 liquidfee = amount1.mul(fee2Liquid).div(FEE_MOD);
uint256 liquidRefs = amount1.mul(fee2Refs).div(FEE_MOD);
uint256 liquidburn = amount1.mul(fee2Burn).div(FEE_MOD);
amount1 = amount1.sub(liquidfee).sub(liquidRefs).sub(liquidburn);
if(address(refers)!=address(0x0)){
TransferHelper.safeTransfer(token1,address(refers),liquidRefs);
refers.rewards2Super(msg.sender,liquidRefs);
}
totalProfitBurn = totalProfitBurn.add(liquidburn);
totalProfitRefs = totalProfitRefs.add(liquidRefs);
totalProfitForLiquids = totalProfitForLiquids.add(liquidfee);
cur_price = next_price;
if(toLiquids){
reserve0 = reserve0.add(amount0);
reserve1 = reserve1.add(amount1);
}else{
if(token1 == address(0x0)){
msg.sender.transfer(amount1);
}else{
TransferHelper.safeTransfer(token1,msg.sender,amount1);
}
}
}
return (amount0,amount1);
}
function addLiquid(uint256 amount0) public onLiquity payable returns(uint256) {
if(token0 == address(0x0)){
require (msg.value >= amount0);
}else{
require (ERC20(token0).balanceOf(msg.sender) >= amount0 );
TransferHelper.safeTransferFrom(token0,msg.sender,address(this),amount0.div(2));
}
(,uint256 buyamount1) = swap(amount0.div(2),0,true);
uint256 totalLiquid = reserve1.add(reserve1);
uint256 poolLiquid = ERC20(address(token1)).balanceOf(address(this));
if(poolLiquid<miniLiquid){
poolLiquid=miniLiquid;
}
uint256 mineCoin = buyamount1.add(buyamount1).mul(totalLiquid).div(poolLiquid);
DTradeLiquids(liquidToken)._mint(msg.sender,mineCoin);
uint256 leftCoin = amount0.sub(amount0.div(2).mul(2));
if(leftCoin>0&&token0!=address(0x0)){
TransferHelper.safeTransferFrom(token0,msg.sender,address(this),leftCoin);
}
return mineCoin;
}
function removeLiquid(uint256 amountL) payable public returns(uint256,uint256) {
require(DTradeLiquids(liquidToken).balanceOf(msg.sender)>=amountL);
uint256 totalLiquid = reserve1.add(reserve1);
uint256 amount1 = amountL.mul((ERC20(address(token1)).balanceOf(address(this)))).div(totalLiquid).div(2);
uint256 amount0 = amount1.mul(cur_price).div(TOKEN_DECIMAL_DIF).div(PRICE_MOD);
require(ERC20(token1).balanceOf(address(this))>=amount1);
reserve1 = reserve1.sub(amount1);
reserve0 = reserve0.sub(amount0);
DTradeLiquids(liquidToken)._burn(msg.sender,amountL);
if(token0==address(0x0))
{//eth
require(address(this).balance>=amount0);
msg.sender.transfer(amount0);
}else{
require(ERC20(token0).balanceOf(address(this))>=amount0);
TransferHelper.safeTransfer(token0,msg.sender,amount0);
}
if(token1==address(0x0))
{//eth
require(address(this).balance>=amount1);
msg.sender.transfer(amount1);
}else{
require(ERC20(token1).balanceOf(address(this))>=amount1);
TransferHelper.safeTransfer(token1,msg.sender,amount1);
}
return (amount0,amount1);
}
}
contract UserRefers is ManagerUpgradeable,Refers{
using SafeMath for uint256;
using SafeERC20 for ERC20;
mapping(address => address) public relations;
mapping(address => address[]) public superiors;
mapping(address => address) public callers;
mapping(address => uint256) public rewards;
address public topAddr;
address public token;
constructor(address _token,address []memory _mans) public ManagerUpgradeable(_mans){
relations[address(0x0)] = address(0x0);
topAddr = msg.sender;
token = _token;
}
function addCaller(address _newCaller) onlyManager public {
callers[_newCaller] = _newCaller;
}
function removeCaller(address rmCaller) onlyManager public {
callers[rmCaller] = address(0x0);
}
function buildSuperoir(address ref,uint256 maxLayer) public {
if(relations[msg.sender]==address(0x0)) {
relations[msg.sender] = ref;
superiors[msg.sender].push(ref);
address[] memory supers = superiors[ref];
if(supers.length>0){
superiors[msg.sender].push(supers[0]);
}
uint256 cc = 2;
for(uint256 i=1;i<supers.length && cc < maxLayer;i++){
superiors[msg.sender].push(supers[i]);
cc++;
}
}
}
function withdrawRewards() public{
require(rewards[msg.sender]>0);
TransferHelper.safeTransfer(token,msg.sender,rewards[msg.sender]);
rewards[msg.sender] = 0;
}
// 0.03%分配给邀请人(其中0.01%分配给直接推荐人30%,0.005%分配给间接推荐人,15%,0.015%均分给第3代至第12代)
function rewards2Super(address user,uint256 totalReward) external returns (bool)
{
require(callers[msg.sender]==msg.sender,"caller is empty") ;
// rewards[user] = rewards[user].add(totalReward);
address[] memory supers = superiors[user];
uint256 leftReward = totalReward;
uint256 bonus0;
uint256 bonus1;
uint256 bonus2;
if(supers.length>0){
uint256 bonus = totalReward.mul(30).div(100);
rewards[supers[0]] = bonus;
// TransferHelper.safeTransfer(token,supers[0],bonus);
leftReward = leftReward.sub(bonus);
bonus0=bonus;
}
if(supers.length>1){
uint256 bonus = totalReward.mul(15).div(100);
rewards[supers[1]] = bonus;
// TransferHelper.safeTransfer(token,supers[1],bonus);
leftReward = leftReward.sub(bonus);
bonus1=bonus;
}
if(supers.length>2){
uint256 preReward = leftReward.div(supers.length.sub(2));
for(uint256 i=2;i<supers.length ;i++){
// TransferHelper.safeTransfer(token,supers[i],preReward);
rewards[supers[i]] = preReward;
leftReward = leftReward.sub(preReward);
}
bonus2=preReward;
}
if(leftReward>0){
// TransferHelper.safeTransfer(token,topAddr,leftReward);
rewards[topAddr] = leftReward;
}
return true;
}
}
contract TestRefs {
Refers public refs;
constructor(address _ref) public {
refs = Refers(_ref);
}
function testReward(uint256 amount) public {
refs.rewards2Super(msg.sender,amount);
}
}
contract DTrade is ManagerUpgradeable{
using SafeMath for uint256;
using SafeERC20 for ERC20;
mapping(address => mapping(address =>uint256 )) public uniswapLiquids;//(liquid.addr=>(user.address=>amount)
mapping(address => address) public liquidsMap;
mapping(address => uint256)public liquidPools;
mapping(address => uint256) public profits4DFK1;
mapping(address => uint256) public bonusWithdraw;
mapping(address => uint256) public checkpointHistory;
mapping(address => uint256) public joinTime;
address [] public liquidPairs;
uint256 public peroid_total_bonus = 90000*(10 **18);
uint256 public peroid_left_bonus = 0;
uint256 public bonus_per_block = 9*(10 **18);
uint256 public bonus_percent_LP = 10;
uint256 public checkpoint_number = 0;
// uint256 totalProfitDFK1 = 0;
uint256 public totalLiquids;
uint256 public totalMint;
DFKImplHelper public dfk1Helper;
uint256 public peroid_mined_coin = 0;
address public token1;
uint256 public totalFactor = 0;
address public liquidToken;
DFKII public dfkii;
constructor(address _token1,address []memory _mans) public ManagerUpgradeable(_mans){
token1 = _token1;
checkpoint_number = block.number+5*60;
bytes memory bytecode = type(DTradeLiquids).creationCode;
bytes32 salt = keccak256(abi.encodePacked(msg.sender, token1));
address _swapV2;
assembly {
_swapV2 := create2(0, add(bytecode, 32), mload(bytecode), salt)
}
liquidToken = _swapV2;
}
function setDFKII(address _dfkii) public onlyManager {
dfkii = DFKII(_dfkii);
}
function setDfk1Helper(address _dfk1Helper) public onlyManager {
dfk1Helper = DFKImplHelper(_dfk1Helper);
}
function nextPeroid(uint256 total,uint256 perblock,uint256 percentLP) public onlyManager {
totalMint = totalMint.add(peroid_total_bonus);
peroid_total_bonus = total;
bonus_per_block = perblock;
bonus_percent_LP = percentLP;
peroid_left_bonus = total;
peroid_mined_coin = 0;
checkpoint_number = block.number;
joinTime[address(0x0)] = block.number;
}
function addUniswapPair(address uniAddr,uint256 factor) public onlyManager {
if(liquidsMap[uniAddr]==address(0x0)){
uniswapLiquids[uniAddr][address(0x0)]=factor;
totalFactor = totalFactor.add(factor);
// uniswapLiquids[address(0x0)][address(0x0)] = uniswapLiquids[address(0x0)][address(0x0)].add(factor);
liquidsMap[uniAddr] = uniAddr;
liquidPairs.push(uniAddr);
}
}
function removeUniswapPair(address uniAddr) public onlyManager {
totalFactor = totalFactor.sub(uniswapLiquids[uniAddr][address(0x0)]);
uniswapLiquids[uniAddr][address(0x0)]=0;
}
function addDfkPair(address uniAddr,uint256 factor) public onlyManager {
if(liquidsMap[uniAddr]==address(0x0)){
uniswapLiquids[uniAddr][address(0x0)]=factor;
totalFactor = totalFactor.add(factor);
liquidsMap[uniAddr] = uniAddr;
liquidPairs.push(uniAddr);
}
}
function removeDfkPair(address uniAddr) public onlyManager {
totalFactor = totalFactor.sub(uniswapLiquids[uniAddr][address(0x0)]);
uniswapLiquids[uniAddr][address(0x0)]=0;
}
function addLiquid(address uniAddr,uint256 amountUL) public {
require(uniswapLiquids[uniAddr][address(0x0)]>0);//factor must large than zero
uint256 realBonus=calcBonus(msg.sender);
if(realBonus>0)
{
dfkii._mint(msg.sender,realBonus);
}
TransferHelper.safeTransferFrom(uniAddr,msg.sender,address(this),amountUL);
liquidPools[uniAddr] = liquidPools[uniAddr].add(amountUL);
uniswapLiquids[uniAddr][msg.sender]=uniswapLiquids[uniAddr][msg.sender].add(amountUL);
uint256 mine_liquid=amountUL.mul(uniswapLiquids[uniAddr][address(0x0)]);
// totalLiquids = totalLiquids.add(mine_liquid);
DTradeLiquids(liquidToken)._mint(msg.sender,mine_liquid);
joinTime[msg.sender] = block.number;
bonusWithdraw[msg.sender] = 0;
}
function removeLiquid(address uniAddr,uint256 amountUL) public {
require(uniswapLiquids[uniAddr][msg.sender]>=amountUL,'amountUL is not enough');
uint256 realBonus=calcBonus(msg.sender);
if(realBonus>0)
{
dfkii._mint(msg.sender,realBonus);
}
TransferHelper.safeTransfer(address(uniAddr),msg.sender,amountUL);
uint256 mine_liquid=amountUL.mul(uniswapLiquids[uniAddr][address(0x0)]);
DTradeLiquids(liquidToken)._burn(msg.sender,mine_liquid);
uniswapLiquids[uniAddr][msg.sender]=uniswapLiquids[uniAddr][msg.sender].sub(amountUL);
if(DTradeLiquids(liquidToken).balanceOf(msg.sender)==0){
joinTime[msg.sender] = 0;
}
else
{
joinTime[msg.sender] = block.number;
}
bonusWithdraw[msg.sender] = 0;
}
function mintCoin(address user) public view returns (uint256){
if(joinTime[user]==0){
return 0;
}
uint256 checkTime = checkpoint_number;
if(joinTime[user]>checkpoint_number){
checkTime = joinTime[user];
}
uint256 currentBonus = bonus_per_block.mul(block.number.sub(checkTime));
if(currentBonus>peroid_left_bonus){
currentBonus = peroid_left_bonus;
}
//
return currentBonus;
}
modifier onlyJoin {
require(joinTime[msg.sender] > 0,"onlyJoin time gt 0");
_;
}
function calcDFK1Bonus(address addr) public view returns(uint256){
if(joinTime[msg.sender] == 0){
return 0;
}
return dfk1Helper.calcProfitForFee(addr,mintCoin(address(0x0)).mul(bonus_percent_LP).div(100),profits4DFK1[addr]);
}
function withdrawDFK1Bonus() public onlyJoin returns(uint256){
uint256 bonus=calcDFK1Bonus(msg.sender);
if(bonus>0){
profits4DFK1[msg.sender] = profits4DFK1[msg.sender].add(bonus);
// totalProfitDFK1 = totalProfitDFK1.sub(bonus);
// TransferHelper.safeTransfer(token1,msg.sender,bonus);
dfkii._mint(msg.sender,bonus);
return bonus;
}else{
return 0;
}
}
function withdrawBonus() public onlyJoin returns(uint256){
uint256 realBonus=calcBonus(msg.sender);
if(realBonus>0)
{
bonusWithdraw[msg.sender] = bonusWithdraw[msg.sender].add(realBonus);
dfkii._mint(msg.sender,realBonus);
joinTime[msg.sender] = block.number;
bonusWithdraw[msg.sender] = 0;
}
return realBonus;
}
function calcBonus(address addr) public view returns (uint256){
if(joinTime[addr] == 0){
return 0;
}
if(joinTime[addr]<block.number){
return (ERC20(liquidToken).balanceOf(addr)).div(ERC20(liquidToken).totalSupply()).mul(mintCoin(addr));
}else{
return 0;
}
}
}
// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
function safeApprove(address token, address to, uint value) internal {
// bytes4(keccak256(bytes('approve(address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
}
function safeTransfer(address token, address to, uint value) internal {
// bytes4(keccak256(bytes('transfer(address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
}
function safeTransferFrom(address token, address from, address to, uint value) internal {
// bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
}
// function safeTransferETH(address to, uint value) internal {
// (bool success,bt) = to.call{value:value}(new bytes(0));
// require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
// }
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address[]","name":"_mans","type":"address[]"},{"internalType":"uint256","name":"_maxMined","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"agent","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_lockId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_newCustodian","type":"address"},{"indexed":false,"internalType":"address","name":"_clearCustodian","type":"address"}],"name":"ChangeConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_lockId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_msgSender","type":"address"},{"indexed":false,"internalType":"address","name":"_new","type":"address"},{"indexed":false,"internalType":"address","name":"_clear","type":"address"}],"name":"ChangeRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_lockId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_sender","type":"address"}],"name":"ChangeSweep","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"_burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"_mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"agent","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"agent","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"changeReqs","outputs":[{"internalType":"address","name":"proposedNew","type":"address"},{"internalType":"address","name":"proposedClear","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_lockId","type":"bytes32"}],"name":"confirmChange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"agent","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"decreaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"agent","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"increaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"managers","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mancount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new","type":"address"},{"internalType":"address","name":"_clear","type":"address"}],"name":"replaceManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new","type":"address"},{"internalType":"address","name":"_clear","type":"address"}],"name":"requestChange","outputs":[{"internalType":"bytes32","name":"lockId","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"requestCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_lockId","type":"bytes32"}],"name":"sweepChange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepeth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenaddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweeptoken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526012600260006101000a81548160ff021916908360ff1602179055506000600a556040518060400160405280601c81526020017f446566696b696e672e66696e616e63652056657273696f6e20322e3000000000815250600b908051906020019062000072929190620002d6565b506040518060400160405280600581526020017f44464b4949000000000000000000000000000000000000000000000000000000815250600c9080519060200190620000c0929190620002d6565b506012600d60006101000a81548160ff021916908360ff160217905550348015620000ea57600080fd5b506040516200345438038062003454833981810160405260408110156200011057600080fd5b81019080805160405193929190846401000000008211156200013157600080fd5b838201915060208201858111156200014857600080fd5b82518660208202830111640100000000821117156200016657600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200019f57808201518184015260208101905062000182565b5050505090500160405260200180519060200190929190505050808280600060068190555060008151905060008090505b81811015620002ba576000838281518110620001e857fe5b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200022d57600080fd5b80600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508080600101915050620001d0565b506000600981905550505081600a819055505050505062000385565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200031957805160ff19168380011785556200034a565b828001600101855582156200034a579182015b82811115620003495782518255916020019190600101906200032c565b5b5090506200035991906200035d565b5090565b6200038291905b808211156200037e57600081600090555060010162000364565b5090565b90565b6130bf80620003956000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806366188463116100c3578063beda24831161007c578063beda248314610703578063d73dd62314610731578063dc3237be14610797578063dd62ed3e1461080f578063f4b05cb114610887578063fdff9b4d146108b55761014d565b8063661884631461046d57806370460299146104d357806370a082311461057457806395d89b41146105cc5780639a85448b1461064f578063a9059cbb1461069d5761014d565b806323b872dd1161011557806323b872dd146102eb578063273a506114610371578063313ce5671461038f5780634e6ec247146103b35780635badbe4c146104015780636161eb181461041f5761014d565b806301d8715f1461015257806306fdde03146101b6578063095ea7b314610239578063151754e01461029f57806318160ddd146102cd575b600080fd5b6101b46004803603604081101561016857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610939565b005b6101be610cdf565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101fe5780820151818401526020810190506101e3565b50505050905090810190601f16801561022b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102856004803603604081101561024f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d7d565b604051808215151515815260200191505060405180910390f35b6102cb600480360360208110156102b557600080fd5b8101908080359060200190929190505050610e6f565b005b6102d5610fb9565b6040518082815260200191505060405180910390f35b6103576004803603606081101561030157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fc3565b604051808215151515815260200191505060405180910390f35b61037961144e565b6040518082815260200191505060405180910390f35b610397611454565b604051808260ff1660ff16815260200191505060405180910390f35b6103ff600480360360408110156103c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611467565b005b61040961171a565b6040518082815260200191505060405180910390f35b61046b6004803603604081101561043557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611720565b005b6104b96004803603604081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061183a565b604051808215151515815260200191505060405180910390f35b6104ff600480360360208110156104e957600080fd5b8101908080359060200190929190505050611acb565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6105b66004803603602081101561058a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b2f565b6040518082815260200191505060405180910390f35b6105d4611b78565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106145780820151818401526020810190506105f9565b50505050905090810190601f1680156106415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61069b6004803603604081101561066557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c16565b005b6106e9600480360360408110156106b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d25565b604051808215151515815260200191505060405180910390f35b61072f6004803603602081101561071957600080fd5b8101908080359060200190929190505050611f45565b005b61077d6004803603604081101561074757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061247b565b604051808215151515815260200191505060405180910390f35b6107f9600480360360408110156107ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612677565b6040518082815260200191505060405180910390f35b6108716004803603604081101561082557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a81565b6040518082815260200191505060405180910390f35b6108b36004803603602081101561089d57600080fd5b8101908080359060200190929190505050612b08565b005b6108f7600480360360208110156108cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580610aa25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610aab57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610b7057508073ffffffffffffffffffffffffffffffffffffffff16600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b7957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610c385781600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600954016009819055505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610cdb57600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600954036009819055505b5050565b600b8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d755780601f10610d4a57610100808354040283529160200191610d75565b820191906000526020600020905b815481529060010190602001808311610d5857829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610fb5573d6000803e3d6000fd5b5050565b6000600354905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ffe57600080fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156110b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f76616c7565206c742066726f6d0000000000000000000000000000000000000081525060200191505060405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f76616c7565206c74205f616c6c6f77616e6365732066726f6d2000000000000081525060200191505060405180910390fd5b6111f782600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ddf90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061128c82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df690919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061135e82600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ddf90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60095481565b600d60009054906101000a900460ff1681565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611567576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b6000600a54148061158e5750600a5461158b82600354612df690919063ffffffff16565b11155b611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5f6d696e742076616c756520696e76616c69640000000000000000000000000081525060200191505060405180910390fd5b61161581600354612df690919063ffffffff16565b60038190555061166d81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df690919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60065481565b61177281600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ddf90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ca81600354612ddf90919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561194b576000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119df565b61195e8382612ddf90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60086020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c0e5780601f10611be357610100808354040283529160200191611c0e565b820191906000526020600020905b815481529060010190602001808311611bf157829003601f168201915b505050505081565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b611d21823383612e12565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d6057600080fd5b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115611dac57600080fd5b611dfe82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ddf90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e9382600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df690919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612045576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b6000600860008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158061210d5750600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b61211657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612241578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600954016009819055505b600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232c57600760008260010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600954036009819055505b60086000838152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550507fc5ac4b86b291b7fbbf5f86c2252503f5be63cf2af544eaba554e1e134f979172828260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a15050565b600061250c82600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df690919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415806127e25750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6127eb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806128b057508173ffffffffffffffffffffffffffffffffffffffff16600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6128b957600080fd5b6128c161300b565b905060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152506008600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507f74989c31bb42eccbc44731e440fc47ddfd78174c1b3df0f656e28fd9b5ad2bc081338585604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a192915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612c08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b6000600860008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580612cd05750600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612cd957600080fd5b60086000838152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550507f2cb223f733ff50ea7b6a90296d83825ecc0280b91a448be5e7d5815c3e8fa2bf8233604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082821115612deb57fe5b818303905092915050565b600080828401905083811015612e0857fe5b8091505092915050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612eeb5780518252602082019150602081019050602083039250612ec8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612f4d576040519150601f19603f3d011682016040523d82523d6000602084013e612f52565b606091505b5091509150818015612f925750600081511480612f915750808060200190516020811015612f7f57600080fd5b81019080805190602001909291905050505b5b613004576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5472616e7366657248656c7065723a205452414e534645525f4641494c45440081525060200191505060405180910390fd5b5050505050565b6000600143034030600660008154600101919050819055604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140182815260200193505050506040516020818303038152906040528051906020012090509056fea265627a7a7231582064f167854a9b72b24f41ab2e11cab7632f451eac0ca30977511dbfb1bb4822ab64736f6c63430005110032000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000dea9d2e81c9bb73c890a822f65118a3651c258d5
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806366188463116100c3578063beda24831161007c578063beda248314610703578063d73dd62314610731578063dc3237be14610797578063dd62ed3e1461080f578063f4b05cb114610887578063fdff9b4d146108b55761014d565b8063661884631461046d57806370460299146104d357806370a082311461057457806395d89b41146105cc5780639a85448b1461064f578063a9059cbb1461069d5761014d565b806323b872dd1161011557806323b872dd146102eb578063273a506114610371578063313ce5671461038f5780634e6ec247146103b35780635badbe4c146104015780636161eb181461041f5761014d565b806301d8715f1461015257806306fdde03146101b6578063095ea7b314610239578063151754e01461029f57806318160ddd146102cd575b600080fd5b6101b46004803603604081101561016857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610939565b005b6101be610cdf565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101fe5780820151818401526020810190506101e3565b50505050905090810190601f16801561022b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102856004803603604081101561024f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d7d565b604051808215151515815260200191505060405180910390f35b6102cb600480360360208110156102b557600080fd5b8101908080359060200190929190505050610e6f565b005b6102d5610fb9565b6040518082815260200191505060405180910390f35b6103576004803603606081101561030157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fc3565b604051808215151515815260200191505060405180910390f35b61037961144e565b6040518082815260200191505060405180910390f35b610397611454565b604051808260ff1660ff16815260200191505060405180910390f35b6103ff600480360360408110156103c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611467565b005b61040961171a565b6040518082815260200191505060405180910390f35b61046b6004803603604081101561043557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611720565b005b6104b96004803603604081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061183a565b604051808215151515815260200191505060405180910390f35b6104ff600480360360208110156104e957600080fd5b8101908080359060200190929190505050611acb565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6105b66004803603602081101561058a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b2f565b6040518082815260200191505060405180910390f35b6105d4611b78565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106145780820151818401526020810190506105f9565b50505050905090810190601f1680156106415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61069b6004803603604081101561066557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c16565b005b6106e9600480360360408110156106b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d25565b604051808215151515815260200191505060405180910390f35b61072f6004803603602081101561071957600080fd5b8101908080359060200190929190505050611f45565b005b61077d6004803603604081101561074757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061247b565b604051808215151515815260200191505060405180910390f35b6107f9600480360360408110156107ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612677565b6040518082815260200191505060405180910390f35b6108716004803603604081101561082557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a81565b6040518082815260200191505060405180910390f35b6108b36004803603602081101561089d57600080fd5b8101908080359060200190929190505050612b08565b005b6108f7600480360360208110156108cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580610aa25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610aab57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610b7057508073ffffffffffffffffffffffffffffffffffffffff16600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b7957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610c385781600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600954016009819055505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610cdb57600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600954036009819055505b5050565b600b8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d755780601f10610d4a57610100808354040283529160200191610d75565b820191906000526020600020905b815481529060010190602001808311610d5857829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610fb5573d6000803e3d6000fd5b5050565b6000600354905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ffe57600080fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156110b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f76616c7565206c742066726f6d0000000000000000000000000000000000000081525060200191505060405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f76616c7565206c74205f616c6c6f77616e6365732066726f6d2000000000000081525060200191505060405180910390fd5b6111f782600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ddf90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061128c82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df690919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061135e82600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ddf90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60095481565b600d60009054906101000a900460ff1681565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611567576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b6000600a54148061158e5750600a5461158b82600354612df690919063ffffffff16565b11155b611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5f6d696e742076616c756520696e76616c69640000000000000000000000000081525060200191505060405180910390fd5b61161581600354612df690919063ffffffff16565b60038190555061166d81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df690919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60065481565b61177281600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ddf90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ca81600354612ddf90919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561194b576000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119df565b61195e8382612ddf90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60086020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c0e5780601f10611be357610100808354040283529160200191611c0e565b820191906000526020600020905b815481529060010190602001808311611bf157829003601f168201915b505050505081565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b611d21823383612e12565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d6057600080fd5b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115611dac57600080fd5b611dfe82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ddf90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e9382600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df690919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612045576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b6000600860008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158061210d5750600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b61211657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612241578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600954016009819055505b600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232c57600760008260010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600954036009819055505b60086000838152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550507fc5ac4b86b291b7fbbf5f86c2252503f5be63cf2af544eaba554e1e134f979172828260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a15050565b600061250c82600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df690919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415806127e25750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6127eb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806128b057508173ffffffffffffffffffffffffffffffffffffffff16600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6128b957600080fd5b6128c161300b565b905060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152506008600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507f74989c31bb42eccbc44731e440fc47ddfd78174c1b3df0f656e28fd9b5ad2bc081338585604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a192915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612c08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6f6e6c794d616e676572206d757374207573650000000000000000000000000081525060200191505060405180910390fd5b6000600860008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580612cd05750600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612cd957600080fd5b60086000838152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550507f2cb223f733ff50ea7b6a90296d83825ecc0280b91a448be5e7d5815c3e8fa2bf8233604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082821115612deb57fe5b818303905092915050565b600080828401905083811015612e0857fe5b8091505092915050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612eeb5780518252602082019150602081019050602083039250612ec8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612f4d576040519150601f19603f3d011682016040523d82523d6000602084013e612f52565b606091505b5091509150818015612f925750600081511480612f915750808060200190516020811015612f7f57600080fd5b81019080805190602001909291905050505b5b613004576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5472616e7366657248656c7065723a205452414e534645525f4641494c45440081525060200191505060405180910390fd5b5050505050565b6000600143034030600660008154600101919050819055604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140182815260200193505050506040516020818303038152906040528051906020012090509056fea265627a7a7231582064f167854a9b72b24f41ab2e11cab7632f451eac0ca30977511dbfb1bb4822ab64736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000dea9d2e81c9bb73c890a822f65118a3651c258d5
-----Decoded View---------------
Arg [0] : _mans (address[]): 0xdEa9d2E81c9bb73c890A822F65118a3651c258D5
Arg [1] : _maxMined (uint256): 0
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 000000000000000000000000dea9d2e81c9bb73c890a822f65118a3651c258d5
Deployed Bytecode Sourcemap
15547:580:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15547:580:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8776:491;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8776:491:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15606:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15606:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13766:184;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13766:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11318:98;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11318:98:0;;;;;;;;;;;;;;;;;:::i;:::-;;12496:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13264:496;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13264:496:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8223:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15697:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15014:305;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15014:305:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;887:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15327:209;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15327:209:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14343:395;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14343:395:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8162:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8162:52:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12587:106;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12587:106:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15662:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15662:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11165:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11165:147:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12699:324;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12699:324:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9926:745;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9926:745:0;;;;;;;;;;;;;;;;;:::i;:::-;;14086:251;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14086:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9306:473;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9306:473:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13956:124;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13956:124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10772:323;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10772:323:0;;;;;;;;;;;;;;;;;:::i;:::-;;8109:44;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8109:44:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8776:491;8681:8;:20;8690:10;8681:20;;;;;;;;;;;;;;;;;;;;;;;;;8667:34;;:10;:34;;;8659:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8886:1;8868:20;;:6;:20;;;;:42;;;;8908:1;8892:18;;:4;:18;;;;8868:42;8859:53;;;;;;8952:1;8934:20;;:6;:20;;;:50;;;;8978:6;8958:26;;:8;:16;8967:6;8958:16;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;8934:50;8925:60;;;;;;9025:1;9009:18;;:4;:18;;;9006:118;;9070:4;9053:8;:14;9062:4;9053:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9111:1;9100:8;;:12;9089:8;:23;;;;9006:118;9157:1;9139:20;;:6;:20;;;9136:122;;9192:8;:16;9201:6;9192:16;;;;;;;;;;;;;;;;9185:23;;;;;;;;;;;9245:1;9234:8;;:12;9223:8;:23;;;;9136:122;8776:491;;:::o;15606:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13766:184::-;13829:4;13875:5;13842:11;:23;13854:10;13842:23;;;;;;;;;;;;;;;:30;13866:5;13842:30;;;;;;;;;;;;;;;:38;;;;13913:5;13892:34;;13901:10;13892:34;;;13920:5;13892:34;;;;;;;;;;;;;;;;;;13940:4;13933:11;;13766:184;;;;:::o;11318:98::-;8681:8;:20;8690:10;8681:20;;;;;;;;;;;;;;;;;;;;;;;;;8667:34;;:10;:34;;;8659:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11381:10;:19;;:27;11401:6;11381:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11381:27:0;11318:98;:::o;12496:85::-;12540:7;12563:12;;12556:19;;12496:85;:::o;13264:496::-;13343:4;13378:1;13364:16;;:2;:16;;;;13356:25;;;;;;13405:9;:15;13415:4;13405:15;;;;;;;;;;;;;;;;13396:5;:24;;13388:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13461:11;:17;13473:4;13461:17;;;;;;;;;;;;;;;:29;13479:10;13461:29;;;;;;;;;;;;;;;;13452:5;:38;;13444:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13547:26;13567:5;13547:9;:15;13557:4;13547:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;13529:9;:15;13539:4;13529:15;;;;;;;;;;;;;;;:44;;;;13596:24;13614:5;13596:9;:13;13606:2;13596:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;13580:9;:13;13590:2;13580:13;;;;;;;;;;;;;;;:40;;;;13659;13693:5;13659:11;:17;13671:4;13659:17;;;;;;;;;;;;;;;:29;13677:10;13659:29;;;;;;;;;;;;;;;;:33;;:40;;;;:::i;:::-;13627:11;:17;13639:4;13627:17;;;;;;;;;;;;;;;:29;13645:10;13627:29;;;;;;;;;;;;;;;:72;;;;13726:2;13711:25;;13720:4;13711:25;;;13730:5;13711:25;;;;;;;;;;;;;;;;;;13750:4;13743:11;;13264:496;;;;;:::o;8223:30::-;;;;:::o;15697:26::-;;;;;;;;;;;;;:::o;15014:305::-;8681:8;:20;8690:10;8681:20;;;;;;;;;;;;;;;;;;;;;;;;;8667:34;;:10;:34;;;8659:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15105:1;15095:8;;:11;:46;;;;15133:8;;15108:23;15125:5;15108:12;;:16;;:23;;;;:::i;:::-;:33;;15095:46;15087:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15190:23;15207:5;15190:12;;:16;;:23;;;;:::i;:::-;15175:12;:38;;;;15240:24;15258:5;15240:9;:13;15250:2;15240:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;15224:9;:13;15234:2;15224:13;;;;;;;;;;;;;;;:40;;;;15301:2;15280:31;;15297:1;15280:31;;;15305:5;15280:31;;;;;;;;;;;;;;;;;;15014:305;;:::o;887:27::-;;;;:::o;15327:209::-;15404:26;15424:5;15404:9;:15;15414:4;15404:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;15386:9;:15;15396:4;15386:15;;;;;;;;;;;;;;;:44;;;;15456:23;15473:5;15456:12;;:16;;:23;;;;:::i;:::-;15441:12;:38;;;;15518:1;15495:33;;15504:4;15495:33;;;15522:5;15495:33;;;;;;;;;;;;;;;;;;15327:209;;:::o;14343:395::-;14412:4;14425:19;14447:11;:23;14459:10;14447:23;;;;;;;;;;;;;;;:30;14471:5;14447:30;;;;;;;;;;;;;;;;14425:52;;14496:14;14488:5;:22;14484:160;;;14554:1;14521:11;:23;14533:10;14521:23;;;;;;;;;;;;;;;:30;14545:5;14521:30;;;;;;;;;;;;;;;:34;;;;14484:160;;;14611:25;14630:5;14611:14;:18;;:25;;;;:::i;:::-;14578:11;:23;14590:10;14578:23;;;;;;;;;;;;;;;:30;14602:5;14578:30;;;;;;;;;;;;;;;:58;;;;14484:160;14676:5;14655:59;;14664:10;14655:59;;;14683:11;:23;14695:10;14683:23;;;;;;;;;;;;;;;:30;14707:5;14683:30;;;;;;;;;;;;;;;;14655:59;;;;;;;;;;;;;;;;;;14728:4;14721:11;;;14343:395;;;;:::o;8162:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12587:106::-;12641:15;12672:9;:15;12682:4;12672:15;;;;;;;;;;;;;;;;12665:22;;12587:106;;;:::o;15662:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11165:147::-;8681:8;:20;8690:10;8681:20;;;;;;;;;;;;;;;;;;;;;;;;;8667:34;;:10;:34;;;8659:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11248:56;11276:9;11286:10;11297:6;11248:27;:56::i;:::-;11165:147;;:::o;12699:324::-;12760:4;12795:1;12781:16;;:2;:16;;;;12773:25;;;;;;12822:9;:21;12832:10;12822:21;;;;;;;;;;;;;;;;12813:5;:30;;12805:39;;;;;;12877:32;12903:5;12877:9;:21;12887:10;12877:21;;;;;;;;;;;;;;;;:25;;:32;;;;:::i;:::-;12853:9;:21;12863:10;12853:21;;;;;;;;;;;;;;;:56;;;;12932:24;12950:5;12932:9;:13;12942:2;12932:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;12916:9;:13;12926:2;12916:13;;;;;;;;;;;;;;;:40;;;;12989:2;12968:31;;12977:10;12968:31;;;12993:5;12968:31;;;;;;;;;;;;;;;;;;13013:4;13006:11;;12699:324;;;;:::o;9926:745::-;8681:8;:20;8690:10;8681:20;;;;;;;;;;;;;;;;;;;;;;;;;8667:34;;:10;:34;;;8659:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9996:35;10034:10;:19;10045:7;10034:19;;;;;;;;;;;9996:57;;10110:1;10073:39;;:13;:25;;;;;;;;;;;;:39;;;;:84;;;;10155:1;10116:41;;:13;:27;;;;;;;;;;;;:41;;;;10073:84;10064:94;;;;;;10211:1;10174:39;;:13;:25;;;;;;;;;;;;:39;;;10171:181;;10277:13;:25;;;;;;;;;;;;10239:8;:35;10248:13;:25;;;;;;;;;;;;10239:35;;;;;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;10339:1;10328:8;;:12;10317:8;:23;;;;10171:181;10406:1;10367:41;;:13;:27;;;;;;;;;;;;:41;;;10364:164;;10441:8;:37;10450:13;:27;;;;;;;;;;;;10441:37;;;;;;;;;;;;;;;;10434:44;;;;;;;;;;;10515:1;10504:8;;:12;10493:8;:23;;;;10364:164;10547:10;:19;10558:7;10547:19;;;;;;;;;;;;10540:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10584:79;10600:7;10609:13;:25;;;;;;;;;;;;10635:13;:27;;;;;;;;;;;;10584:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8735:1;9926:745;:::o;14086:251::-;14155:4;14201:41;14236:5;14201:11;:23;14213:10;14201:23;;;;;;;;;;;;;;;:30;14225:5;14201:30;;;;;;;;;;;;;;;;:34;;:41;;;;:::i;:::-;14168:11;:23;14180:10;14168:23;;;;;;;;;;;;;;;:30;14192:5;14168:30;;;;;;;;;;;;;;;:74;;;;14275:5;14254:59;;14263:10;14254:59;;;14282:11;:23;14294:10;14282:23;;;;;;;;;;;;;;;:30;14306:5;14282:30;;;;;;;;;;;;;;;;14254:59;;;;;;;;;;;;;;;;;;14327:4;14320:11;;14086:251;;;;:::o;9306:473::-;9386:14;8681:8;:20;8690:10;8681:20;;;;;;;;;;;;;;;;;;;;;;;;;8667:34;;:10;:34;;;8659:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9440:1;9422:20;;:6;:20;;;;:42;;;;9462:1;9446:18;;:4;:18;;;;9422:42;9413:53;;;;;;9506:1;9488:20;;:6;:20;;;:50;;;;9532:6;9512:26;;:8;:16;9521:6;9512:16;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;9488:50;9479:60;;;;;;9561:16;:14;:16::i;:::-;9552:25;;9611:94;;;;;;;;9653:4;9611:94;;;;;;9687:6;9611:94;;;;;9590:10;:18;9601:6;9590:18;;;;;;;;;;;:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9723:48;9739:6;9747:10;9759:4;9764:6;9723:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9306:473;;;;:::o;13956:124::-;14026:7;14049:11;:18;14061:5;14049:18;;;;;;;;;;;;;;;:25;14068:5;14049:25;;;;;;;;;;;;;;;;14042:32;;13956:124;;;;:::o;10772:323::-;8681:8;:20;8690:10;8681:20;;;;;;;;;;;;;;;;;;;;;;;;;8667:34;;:10;:34;;;8659:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10840:35;10876:10;:19;10887:7;10876:19;;;;;;;;;;;10840:55;;10952:1;10915:39;;:13;:25;;;;;;;;;;;;:39;;;;:84;;;;10997:1;10958:41;;:13;:27;;;;;;;;;;;;:41;;;;10915:84;10906:96;;;;;;11020:10;:19;11031:7;11020:19;;;;;;;;;;;;11013:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11055:32;11067:7;11076:10;11055:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;8735:1;10772:323;:::o;8109:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;570:123::-;628:7;660:1;655;:6;;648:14;;;;684:1;680;:5;673:12;;570:123;;;;:::o;705:147::-;763:7;783:9;799:1;795;:5;783:17;;823:1;818;:6;;811:14;;;;843:1;836:8;;;705:147;;;;:::o;53070:361::-;53219:12;53233:17;53254:5;:10;;53288;53300:2;53304:5;53265:45;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;53265:45:0;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;53265:45:0;53254:57;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;53254:57:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;53218:93:0;;;;53330:7;:57;;;;;53357:1;53342:4;:11;:16;:44;;;;53373:4;53362:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;53362:24:0;;;;;;;;;;;;;;;;53342:44;53330:57;53322:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53070:361;;;;;:::o;987:171::-;1031:14;1115:1;1102:12;:14;1092:25;1127:4;1136:12;;1134:14;;;;;;;;;;1075:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1075:74:0;;;1065:85;;;;;;1058:92;;987:171;:::o
Swarm Source
bzzr://64f167854a9b72b24f41ab2e11cab7632f451eac0ca30977511dbfb1bb4822ab
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)