Source Code
Overview
BTT Balance
More Info
ContractCreator
Multichain Info
N/A
Latest 17 from a total of 17 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw Launcht... | 27976646 | 852 days ago | IN | 0 BTT | 281.025 | ||||
| Claim Treasury | 27976572 | 852 days ago | IN | 0 BTT | 451.152 | ||||
| Distribute Liqui... | 27976553 | 852 days ago | IN | 0 BTT | 680.193 | ||||
| Set Treasury Add... | 27976539 | 852 days ago | IN | 0 BTT | 416.601 | ||||
| Redeem | 27976353 | 852 days ago | IN | 0 BTT | 908.217 | ||||
| Redeem | 27976330 | 852 days ago | IN | 0 BTT | 908.217 | ||||
| Redeem | 27976285 | 852 days ago | IN | 0 BTT | 908.217 | ||||
| Enable Redeem | 27976228 | 852 days ago | IN | 0 BTT | 567.891 | ||||
| Set Start | 27974327 | 852 days ago | IN | 0 BTT | 129.735 | ||||
| Invest | 27974238 | 852 days ago | IN | 2,200,000 BTT | 1,226.718 | ||||
| Invest | 27974208 | 852 days ago | IN | 800,000 BTT | 1,226.718 | ||||
| Invest | 27974188 | 852 days ago | IN | 4,000,000 BTT | 1,688.418 | ||||
| Enable Sale | 27974177 | 852 days ago | IN | 0 BTT | 308.187 | ||||
| Setup Liquidity | 27974125 | 852 days ago | IN | 0 BTT | 1,306.728 | ||||
| Set Soft Cap | 27973856 | 852 days ago | IN | 0 BTT | 260.82 | ||||
| Set Launch Token | 27973843 | 852 days ago | IN | 0 BTT | 417.006 | ||||
| Set Start | 27973826 | 852 days ago | IN | 0 BTT | 413.793 |
Latest 12 internal transactions
| Parent Transaction Hash | Block | From | To | Amount | ||
|---|---|---|---|---|---|---|
| 27976646 | 852 days ago | 0 BTT | ||||
| 27976572 | 852 days ago | 0 BTT | ||||
| 27976553 | 852 days ago | 0 BTT | ||||
| 27976553 | 852 days ago | 4,200,000 BTT | ||||
| 27976553 | 852 days ago | 2,800,000 BTT | ||||
| 27976353 | 852 days ago | 0 BTT | ||||
| 27976330 | 852 days ago | 0 BTT | ||||
| 27976285 | 852 days ago | 0 BTT | ||||
| 27974238 | 852 days ago | 0 BTT | ||||
| 27974208 | 852 days ago | 0 BTT | ||||
| 27974188 | 852 days ago | 0 BTT | ||||
| 27974125 | 852 days ago | 0 BTT |
Loading...
Loading
Contract Name:
FairLuckPad
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity Multiple files format)
// FairLaunch.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.5;
import "./Roles.sol";
import "./IERC20.sol";
import "./IBand.sol";
contract FairLuckPad {
using Roles for Roles.Role;
bool private _notEntered; //reentrancyguard state
Roles.Role private _administrators;
IBand public bandRef;
address public launchToken; //launch token
address public treasury; //treasury address
uint256 public softCap; //minimum BTT to be raised for a valid launch
uint256 public totalRaised; //total BTT raised
uint256 public totalRaisedLuck; //total BTT raised factorizing luck
uint256 public treasuryPerc; //treasury percentage of tokens (10)
uint256 public treasuryBttPerc; //treasury percentage of raised BTT (40)
uint256 public totalRedeem; //total redeemed
uint256 public startTime; //launch start
uint256 public duration; //total duration in seconds (2*86400)
bool public saleEnabled; //enable launch
bool public redeemEnabled; //redeem enabled
bool public setup; //liquidity setup status
uint256 public maxInvest; //max BTT to invest
uint256 public numInvested; //numner of launch customers
uint256 public reedemRatio; //ratio of tokens to BTT
uint256 public treasuryShare; //tokens allocated to treasury (10% of total)
uint256 public lpShare; //tokens allocated to LPs
uint256 public launchShare; //tokens aloocated to users
uint256 public minLuck; //minimum luck factor
uint256 public maxLuck; //maximum luck factor
event SaleEnabled(bool enabled, uint256 time);
event RedeemEnabled(bool enabled, uint256 time);
event Invest(address investor, uint256 amount);
event Redeem(address investor, uint256 amount);
event AdminAdded(address account);
event AdminRemoved(address account);
struct InvestorInfo {
uint256 amountInvested; // BTT deposited by user
uint256 luckFactor; // How lucky was the user (100->200)
bool claimed; // token has been claimed
}
mapping(address => InvestorInfo) public investors;
mapping(address => uint256) public _prevLuck; //previous luck factor
constructor() {
_notEntered = true;
_addAdmin(msg.sender); //default admin
duration = 24*3600; //1 day
softCap = 5000000000 * 10**18; //5B BTT
maxInvest = 1000000000 * 10**18; //1B BTT
redeemEnabled = false;
saleEnabled = false;
treasuryPerc = 10; //10% of tokens
treasuryBttPerc = 40; //40% of BTT
minLuck = 100; //base luck: 100%
maxLuck = 200; //max luck: 200%
bandRef = IBand(0x8c064bCf7C0DA3B3b090BAbFE8f3323534D84d68);
}
/***********************************|
| AdminRole |
|__________________________________*/
modifier onlyAdmin() {
require(isAdmin(msg.sender), "AdminRole: caller does not have the Admin role");
_;
}
function isAdmin(address account) public view returns (bool) {
return _administrators.has(account);
}
function addAdmin(address account) public onlyAdmin {
_addAdmin(account);
}
function renounceAdmin() public {
_removeAdmin(msg.sender);
}
function _addAdmin(address account) internal {
_administrators.add(account);
emit AdminAdded(account);
}
function _removeAdmin(address account) internal {
_administrators.remove(account);
emit AdminRemoved(account);
}
/***********************************|
| ReentrancyGuard |
|__________________________________*/
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_notEntered, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_notEntered = false;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_notEntered = true;
}
function getCap() public view returns(uint256){
return (totalRaised * 100 / softCap);
}
function getLuck(address user) public view returns(uint256 luck){
IBand.ReferenceData memory data;
data = bandRef.getReferenceData("BTC", "USD");
uint256 temp = (uint256)(keccak256(abi.encodePacked(data.rate, user, block.timestamp)));
luck = temp % 100 + 100; //luck factor 100-200
if (luck == _prevLuck[user]){
data = bandRef.getReferenceData("ETH", "USD");
temp = (uint256)(keccak256(abi.encodePacked(data.rate, user, block.timestamp)));
luck = temp % 100 + 100; //luck factor 100-200
}
return luck;
}
// invest
function invest() public payable nonReentrant{
require(block.timestamp >= startTime, "not started yet");
require(block.timestamp < startTime+duration, "sale ended");
require(saleEnabled, "not enabled yet");
InvestorInfo storage investor = investors[msg.sender];
require(investor.amountInvested + msg.value <= maxInvest, "investment too high");
totalRaised += msg.value;
uint256 userLuck = getLuck(msg.sender); //luck function tbd
_prevLuck[msg.sender] = userLuck;
if (investor.amountInvested == 0){
numInvested += 1;
}
investor.luckFactor = (userLuck*msg.value + investor.luckFactor*investor.amountInvested)/(investor.amountInvested + msg.value);
investor.amountInvested += msg.value;
totalRaisedLuck += msg.value * userLuck;
emit Invest(msg.sender, msg.value);
}
// claim tokens
function redeem() public nonReentrant {
require(redeemEnabled, "redeem not enabled");
InvestorInfo storage investor = investors[msg.sender];
uint256 redeemAmount = investor.amountInvested * investor.luckFactor * reedemRatio / 10**9 / 100;
require(redeemAmount > 0, "nothing to claim");
require(!investor.claimed, "already claimed");
if (getCap()>=100) { //launch success, send tokens
require(
IERC20(launchToken).transfer(
msg.sender,
redeemAmount
),
"Failed to send tokens"
);
} else { //launch failed, return BTT
address payable rec = payable(msg.sender);
(bool sent, ) = rec.call{value: investor.amountInvested}("");
require(sent, "Failed to send BTT");
}
totalRedeem += investor.amountInvested;
emit Redeem(msg.sender, investor.amountInvested);
investor.claimed = true;
}
// define the launch token to be redeemed
function setLaunchToken(address _launchToken) public onlyAdmin {
launchToken = _launchToken;
}
// define the treasury address
function setTreasuryAddress(address _treasury) public onlyAdmin {
treasury = _treasury;
}
// set the oracle address
function setOracleAddress(IBand _band) public onlyAdmin {
bandRef = _band;
}
// withdraw in case some tokens were not redeemed
function withdrawLaunchtoken(uint256 amount) public onlyAdmin {
require(launchToken != address(0), "launch token not set");
require(block.timestamp > startTime + duration + 7*24*3600, "tokens still locked");
require(
IERC20(launchToken).transfer(msg.sender, amount),
"Failed to send tokens"
);
}
// setup liquidity into launch contract
function setupLiquidity(uint256 amount) public onlyAdmin returns(uint256 team, uint256 lp, uint256 launch) {
require(amount>0, "Amount cannot be zero");
require(launchToken != address(0), "launch token not set");
require(
IERC20(launchToken).transferFrom(msg.sender, address(this), amount),
"Failed to transfer tokens"
);
team = amount * treasuryPerc / 100; //team share
treasuryShare += team; //incremental
amount -= team;
lp = amount * (100 - treasuryBttPerc) / (200 - treasuryBttPerc); //LP share
launch = amount - lp; //Launch share
launchShare += launch; //incremental
lpShare += lp; //incremental
setup = true;
return(team, lp, launch);
}
// preview setup liquidity into launch contract
function previewSetupLiquidity(uint256 amount) public view returns(uint256 team, uint256 lp, uint256 launch) {
team = amount * treasuryPerc / 100; //team share
amount -= team;
lp = amount * (100 - treasuryBttPerc) / (200 - treasuryBttPerc); //launch share
launch = amount - lp; //LP share
return(team, lp, launch);
}
// transfer liquidity to treasury and LP
function distributeLiquidity() public onlyAdmin {
require(setup, "liquidity not setup");
require(launchToken != address(0), "launch token not set");
require(getCap()>=100, "launch failed, BTT returns to users");
require(block.timestamp > startTime + duration, "sale not ended yet");
uint256 amount=totalRaised * treasuryBttPerc / 100;
address payable rec = payable(treasury);
(bool sent, ) = rec.call{value: amount}("");
require(sent, "Failed to send BTT to treasury");
rec = payable(msg.sender);
(sent, ) = rec.call{value: totalRaised-amount}("");
require(sent, "Failed to send BTT to LP");
require(
IERC20(launchToken).transfer(msg.sender, lpShare),
"Failed to send tokens to LP"
);
}
//claim vested treasury tokens
function claimTreasury() public onlyAdmin {
require(launchToken != address(0), "launch token not set");
require(block.timestamp > startTime + duration, "tokens still locked");
require(treasuryShare>0, "no tokens to redeem");
require(
IERC20(launchToken).transfer(treasury, treasuryShare),
"Failed to send tokens to Treasury"
);
}
function enableSale() public onlyAdmin {
require(startTime>0, "start time not set");
require(duration>0, "duration not set");
saleEnabled = true;
emit SaleEnabled(true, block.timestamp);
}
function enableRedeem() public onlyAdmin {
require(launchToken != address(0), "launch token not set");
require(block.timestamp > startTime+duration, "sale not ended yet");
require(setup, "liquidity not setup");
redeemEnabled = true;
reedemRatio = launchShare * 10**9 * 100 / totalRaisedLuck; //check
emit RedeemEnabled(true, block.timestamp);
}
function previewRedeem() public view returns(uint256 ratio){
ratio = launchShare * 10**9 * 100 / totalRaisedLuck;
return ratio;
}
function setSoftCap(uint256 _cap) public onlyAdmin {
softCap = _cap;
}
function setDuration(uint256 _hours) public onlyAdmin {
duration = _hours * 3600;
}
function setStart(uint256 _start) public onlyAdmin {
startTime = _start;
}
function setMax(uint256 _max) public onlyAdmin {
maxInvest = _max;
}
function getTiming() public view returns(uint256 timeToStart, uint256 timeToEnd, uint256 start, uint256 end){
if (block.timestamp < startTime){
timeToStart = startTime - block.timestamp;
} else {
timeToStart = 0;
}
if (block.timestamp < startTime + duration){
timeToEnd = startTime + duration - block.timestamp;
} else {
timeToEnd = 0;
}
return(timeToStart, timeToEnd, startTime, startTime + duration);
}
function getUserInfo(address user) public view returns(uint256 amount, bool claimed, uint256 share, uint256 tokens, uint256 luck){
if (totalRaised > 0) {
share = investors[user].amountInvested * 1000 * investors[user].luckFactor / totalRaisedLuck;
tokens = investors[user].amountInvested * launchShare * investors[user].luckFactor / totalRaisedLuck;
luck = investors[user].luckFactor;
}
return(investors[user].amountInvested, investors[user].claimed, share, tokens, luck);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
interface IBand {
/// A structure returned whenever someone requests for standard reference data.
struct ReferenceData {
uint256 rate; // base/quote exchange rate, multiplied by 1e18.
uint256 lastUpdatedBase; // UNIX epoch of the last time when base price gets updated.
uint256 lastUpdatedQuote; // UNIX epoch of the last time when quote price gets updated.
}
/// Returns the price data for the given base/quote pair. Revert if not available.
function getReferenceData(string memory _base, string memory _quote) external view returns (ReferenceData memory);
/// Similar to getReferenceData, but with multiple base/quote pairs at once.
function getReferenceDataBulk(string[] memory _bases, string[] memory _quotes) external view returns (ReferenceData[] memory);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 amount) external returns (bool);
}
// Roles.sol
// Based on OpenZeppelin contracts v2.5.1
// SPDX-License-Identifier: MIT
// solhint-disable-next-line
pragma solidity ^0.8.0;
/**
* @title Roles
* @dev Library for managing addresses assigned to a Role.
*/
library Roles {
struct Role {
mapping (address => bool) bearer;
}
/**
* @dev Give an account access to this role.
*/
function add(Role storage role, address account) internal {
require(!has(role, account), "Roles: account already has role");
role.bearer[account] = true;
}
/**
* @dev Remove an account's access to this role.
*/
function remove(Role storage role, address account) internal {
require(has(role, account), "Roles: account does not have role");
role.bearer[account] = false;
}
/**
* @dev Check if an account has this role.
* @return bool
*/
function has(Role storage role, address account) internal view returns (bool) {
require(account != address(0), "Roles: account is the zero address");
return role.bearer[account];
}
}
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"AdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"AdminRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Invest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"RedeemEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SaleEnabled","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_prevLuck","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bandRef","outputs":[{"internalType":"contract IBand","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableRedeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getLuck","outputs":[{"internalType":"uint256","name":"luck","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTiming","outputs":[{"internalType":"uint256","name":"timeToStart","type":"uint256"},{"internalType":"uint256","name":"timeToEnd","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"},{"internalType":"uint256","name":"share","type":"uint256"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"luck","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"invest","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investors","outputs":[{"internalType":"uint256","name":"amountInvested","type":"uint256"},{"internalType":"uint256","name":"luckFactor","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxInvest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLuck","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minLuck","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numInvested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"ratio","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"previewSetupLiquidity","outputs":[{"internalType":"uint256","name":"team","type":"uint256"},{"internalType":"uint256","name":"lp","type":"uint256"},{"internalType":"uint256","name":"launch","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"redeemEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reedemRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hours","type":"uint256"}],"name":"setDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_launchToken","type":"address"}],"name":"setLaunchToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_max","type":"uint256"}],"name":"setMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBand","name":"_band","type":"address"}],"name":"setOracleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cap","type":"uint256"}],"name":"setSoftCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_start","type":"uint256"}],"name":"setStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setupLiquidity","outputs":[{"internalType":"uint256","name":"team","type":"uint256"},{"internalType":"uint256","name":"lp","type":"uint256"},{"internalType":"uint256","name":"launch","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"softCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRaisedLuck","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryBttPerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryPerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawLaunchtoken","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b506000805460ff191660011790556200002a336200009c565b62015180600c556b1027e72f1f128130880000006005556b033b2e3c9fd0803ce8000000600e55600d805461ffff19169055600a6008556028600955606460145560c8601555600280546001600160a01b031916738c064bcf7c0da3b3b090babfe8f3323534d84d68179055620001f1565b620000a9600182620000e8565b6040516001600160a01b03821681527f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399060200160405180910390a150565b620000f482826200016c565b15620001475760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650060448201526064015b60405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620001d15760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b60648201526084016200013e565b506001600160a01b03166000908152602091909152604090205460ff1690565b61244a80620002016000396000f3fe6080604052600436106102925760003560e01c80637796ff371161015a578063be040fb0116100c1578063e8b5e51f1161007a578063e8b5e51f146107cb578063ebc38ab0146107d3578063f6a03ebf146107e9578063f6be71d114610809578063ff16e75014610829578063ff9d682a1461084957600080fd5b8063be040fb01461072c578063c5c4744c14610741578063c683d8e414610757578063cbd3b4031461076c578063d2f825361461078c578063d5cf5c72146107ab57600080fd5b8063906a26e011610113578063906a26e014610695578063945cc9f3146106ab578063a28a4d86146106c0578063ab280144146106e0578063ba0bba40146106f6578063bc80e4c61461071657600080fd5b80637796ff371461061257806378e97925146106285780638447e1f91461063e578063861d8e1314610654578063870407bf1461066a5780638bad0c0a1461068057600080fd5b80634c69c00f116101fe5780636386c1c7116101b75780636386c1c7146104fe5780636605bfda146105465780636cb05ea2146105665780636f7bc9be1461057c57806370480275146105d857806371b9b646146105f857600080fd5b80634c69c00f1461043e578063554d578d1461045e57806356f6609414610473578063604a85da1461048957806361d027b3146104a9578063630e799f146104c957600080fd5b80631fb9abf9116102505780631fb9abf9146103505780631fe9eabc1461038b57806324d7806c146103ab57806326b340c3146103db5780633110235a146104085780633c7843931461041e57600080fd5b80623bdc741461029757806302bd7e49146102ae578063061873e8146102d7578063078c74c3146102ec5780630acba5db146103025780630fb5a6b41461033a575b600080fd5b3480156102a357600080fd5b506102ac61085e565b005b3480156102ba57600080fd5b506102c460095481565b6040519081526020015b60405180910390f35b3480156102e357600080fd5b506102ac610a26565b3480156102f857600080fd5b506102c4600a5481565b34801561030e57600080fd5b50600254610322906001600160a01b031681565b6040516001600160a01b0390911681526020016102ce565b34801561034657600080fd5b506102c4600c5481565b34801561035c57600080fd5b5061037061036b3660046121af565b610b8b565b604080519384526020840192909252908201526060016102ce565b34801561039757600080fd5b506102ac6103a63660046121af565b610db3565b3480156103b757600080fd5b506103cb6103c63660046121dd565b610ddd565b60405190151581526020016102ce565b3480156103e757600080fd5b506102c46103f63660046121dd565b60176020526000908152604090205481565b34801561041457600080fd5b506102c4600e5481565b34801561042a57600080fd5b506103706104393660046121af565b610df0565b34801561044a57600080fd5b506102ac6104593660046121dd565b610e62565b34801561046a57600080fd5b506102c4610ea9565b34801561047f57600080fd5b506102c460155481565b34801561049557600080fd5b506102ac6104a43660046121dd565b610ecc565b3480156104b557600080fd5b50600454610322906001600160a01b031681565b3480156104d557600080fd5b506104de610f13565b6040805194855260208501939093529183015260608201526080016102ce565b34801561050a57600080fd5b5061051e6105193660046121dd565b610f9e565b604080519586529315156020860152928401919091526060830152608082015260a0016102ce565b34801561055257600080fd5b506102ac6105613660046121dd565b61108d565b34801561057257600080fd5b506102c460145481565b34801561058857600080fd5b506105bb6105973660046121dd565b60166020526000908152604090208054600182015460029092015490919060ff1683565b6040805193845260208401929092521515908201526060016102ce565b3480156105e457600080fd5b506102ac6105f33660046121dd565b6110d4565b34801561060457600080fd5b50600d546103cb9060ff1681565b34801561061e57600080fd5b506102c460115481565b34801561063457600080fd5b506102c4600b5481565b34801561064a57600080fd5b506102c460075481565b34801561066057600080fd5b506102c4600f5481565b34801561067657600080fd5b506102c460135481565b34801561068c57600080fd5b506102ac611105565b3480156106a157600080fd5b506102c460055481565b3480156106b757600080fd5b506102c461110e565b3480156106cc57600080fd5b50600354610322906001600160a01b031681565b3480156106ec57600080fd5b506102c460085481565b34801561070257600080fd5b50600d546103cb9062010000900460ff1681565b34801561072257600080fd5b506102c460105481565b34801561073857600080fd5b506102ac611130565b34801561074d57600080fd5b506102c460065481565b34801561076357600080fd5b506102ac611489565b34801561077857600080fd5b506102c46107873660046121dd565b61157f565b34801561079857600080fd5b50600d546103cb90610100900460ff1681565b3480156107b757600080fd5b506102ac6107c63660046121af565b611776565b6102ac6117a0565b3480156107df57600080fd5b506102c460125481565b3480156107f557600080fd5b506102ac6108043660046121af565b611a4e565b34801561081557600080fd5b506102ac6108243660046121af565b611a78565b34801561083557600080fd5b506102ac6108443660046121af565b611aaf565b34801561085557600080fd5b506102ac611c16565b61086733610ddd565b61088c5760405162461bcd60e51b815260040161088390612201565b60405180910390fd5b6003546001600160a01b03166108b45760405162461bcd60e51b81526004016108839061224f565b600c54600b546108c49190612293565b42116109085760405162461bcd60e51b81526020600482015260136024820152721d1bdad95b9cc81cdd1a5b1b081b1bd8dad959606a1b6044820152606401610883565b6000601154116109505760405162461bcd60e51b81526020600482015260136024820152726e6f20746f6b656e7320746f2072656465656d60681b6044820152606401610883565b6003546004805460115460405163a9059cbb60e01b81526001600160a01b039283169381019390935260248301529091169063a9059cbb906044016020604051808303816000875af11580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906122a6565b610a245760405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f2073656e6420746f6b656e7320746f20547265617375726044820152607960f81b6064820152608401610883565b565b610a2f33610ddd565b610a4b5760405162461bcd60e51b815260040161088390612201565b6003546001600160a01b0316610a735760405162461bcd60e51b81526004016108839061224f565b600c54600b54610a839190612293565b4211610ac65760405162461bcd60e51b81526020600482015260126024820152711cd85b19481b9bdd08195b991959081e595d60721b6044820152606401610883565b600d5462010000900460ff16610b145760405162461bcd60e51b815260206004820152601360248201527206c6971756964697479206e6f7420736574757606c1b6044820152606401610883565b600d805461ff001916610100179055600754601354610b3790633b9aca006122c8565b610b429060646122c8565b610b4c91906122f5565b60105560408051600181524260208201527fef5fd91dc9b012f3e4b41e00dc71466a39c83d97c3cc3879de5b9193f456c63091015b60405180910390a1565b6000806000610b9933610ddd565b610bb55760405162461bcd60e51b815260040161088390612201565b60008411610bfd5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e742063616e6e6f74206265207a65726f60581b6044820152606401610883565b6003546001600160a01b0316610c255760405162461bcd60e51b81526004016108839061224f565b6003546040516323b872dd60e01b8152336004820152306024820152604481018690526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca091906122a6565b610cec5760405162461bcd60e51b815260206004820152601960248201527f4661696c656420746f207472616e7366657220746f6b656e73000000000000006044820152606401610883565b606460085485610cfc91906122c8565b610d0691906122f5565b92508260116000828254610d1a9190612293565b90915550610d2a90508385612309565b935060095460c8610d3b9190612309565b600954610d49906064612309565b610d5390866122c8565b610d5d91906122f5565b9150610d698285612309565b90508060136000828254610d7d9190612293565b925050819055508160126000828254610d969190612293565b9091555050600d805462ff00001916620100001790559193909250565b610dbc33610ddd565b610dd85760405162461bcd60e51b815260040161088390612201565b600e55565b6000610dea600183611f9f565b92915050565b6000806000606460085485610e0591906122c8565b610e0f91906122f5565b9250610e1b8385612309565b935060095460c8610e2c9190612309565b600954610e3a906064612309565b610e4490866122c8565b610e4e91906122f5565b9150610e5a8285612309565b929491935050565b610e6b33610ddd565b610e875760405162461bcd60e51b815260040161088390612201565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60006005546006546064610ebd91906122c8565b610ec791906122f5565b905090565b610ed533610ddd565b610ef15760405162461bcd60e51b815260040161088390612201565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600080600080600b54421015610f385742600b54610f319190612309565b9350610f3d565b600093505b600c54600b54610f4d9190612293565b421015610f765742600c54600b54610f659190612293565b610f6f9190612309565b9250610f7b565b600092505b8383600b54600c54600b54610f909190612293565b935093509350935090919293565b600080600080600080600654111561105c576007546001600160a01b038716600090815260166020526040902060018101549054610fde906103e86122c8565b610fe891906122c8565b610ff291906122f5565b6007546001600160a01b038816600090815260166020526040902060018101546013549154939650919261102691906122c8565b61103091906122c8565b61103a91906122f5565b6001600160a01b03871660009081526016602052604090206001015490925090505b6001600160a01b0386166000908152601660205260409020805460029091015490955060ff16935091939590929450565b61109633610ddd565b6110b25760405162461bcd60e51b815260040161088390612201565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6110dd33610ddd565b6110f95760405162461bcd60e51b815260040161088390612201565b61110281612022565b50565b610a243361206d565b6000600754601354633b9aca0061112591906122c8565b610ebd9060646122c8565b60005460ff166111825760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610883565b6000805460ff19169055600d54610100900460ff166111d85760405162461bcd60e51b81526020600482015260126024820152711c995919595b481b9bdd08195b98589b195960721b6044820152606401610883565b33600090815260166020526040812060105460018201548254929392606492633b9aca0092909161120991906122c8565b61121391906122c8565b61121d91906122f5565b61122791906122f5565b90506000811161126c5760405162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b6044820152606401610883565b600282015460ff16156112b35760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b6044820152606401610883565b60646112bd610ea9565b106113805760035460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611313573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133791906122a6565b61137b5760405162461bcd60e51b81526020600482015260156024820152744661696c656420746f2073656e6420746f6b656e7360581b6044820152606401610883565b611413565b815460405133916000918391908381818185875af1925050503d80600081146113c5576040519150601f19603f3d011682016040523d82523d6000602084013e6113ca565b606091505b50509050806114105760405162461bcd60e51b815260206004820152601260248201527111985a5b1959081d1bc81cd95b990810951560721b6044820152606401610883565b50505b8154600a8054600090611427908490612293565b909155505081546040805133815260208101929092527f222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6910160405180910390a1506002018054600160ff199182168117909255600080549091169091179055565b61149233610ddd565b6114ae5760405162461bcd60e51b815260040161088390612201565b6000600b54116114f55760405162461bcd60e51b81526020600482015260126024820152711cdd185c9d081d1a5b59481b9bdd081cd95d60721b6044820152606401610883565b6000600c541161153a5760405162461bcd60e51b815260206004820152601060248201526f191d5c985d1a5bdb881b9bdd081cd95d60821b6044820152606401610883565b600d805460ff19166001908117909155604080519182524260208301527f020b56eb5031e351b28c7914a3185d679342016d533b3fe0d056b43fe5ecb8689101610b81565b60006115a560405180606001604052806000815260200160008152602001600081525090565b60025460405163195556f360e21b81526001600160a01b03909116906365555bcc906115d39060040161231c565b606060405180830381865afa1580156115f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116149190612359565b80516040805160208101929092526bffffffffffffffffffffffff19606087901b169082015242605482015290915060009060740160408051601f198184030181529190528051602090910120905061166e6064826123c3565b611679906064612293565b6001600160a01b038516600090815260176020526040902054909350830361176f5760025460405163195556f360e21b81526001600160a01b03909116906365555bcc906116c9906004016123d7565b606060405180830381865afa1580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190612359565b80516040805160208101929092526bffffffffffffffffffffffff19606088901b169082015242605482015290925060740160408051601f19818403018152919052805160209091012090506117616064826123c3565b61176c906064612293565b92505b5050919050565b61177f33610ddd565b61179b5760405162461bcd60e51b815260040161088390612201565b600555565b60005460ff166117f25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610883565b6000805460ff19169055600b544210156118405760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081cdd185c9d1959081e595d608a1b6044820152606401610883565b600c54600b546118509190612293565b421061188b5760405162461bcd60e51b815260206004820152600a6024820152691cd85b1948195b99195960b21b6044820152606401610883565b600d5460ff166118cf5760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd08195b98589b1959081e595d608a1b6044820152606401610883565b336000908152601660205260409020600e5481546118ee903490612293565b11156119325760405162461bcd60e51b81526020600482015260136024820152720d2dceccae6e8dacadce840e8dede40d0d2ced606b1b6044820152606401610883565b34600660008282546119449190612293565b90915550600090506119553361157f565b33600090815260176020526040812082905583549192500361198a576001600f60008282546119849190612293565b90915550505b8154611997903490612293565b825460018401546119a891906122c8565b6119b234846122c8565b6119bc9190612293565b6119c691906122f5565b60018301558154349083906000906119df908490612293565b909155506119ef905081346122c8565b60076000828254611a009190612293565b9091555050604080513381523460208201527fd90d253a9de34d2fdd5a75ae49ea17fcb43af32fc8ea08cc6d2341991dd3872e910160405180910390a150506000805460ff19166001179055565b611a5733610ddd565b611a735760405162461bcd60e51b815260040161088390612201565b600b55565b611a8133610ddd565b611a9d5760405162461bcd60e51b815260040161088390612201565b611aa981610e106122c8565b600c5550565b611ab833610ddd565b611ad45760405162461bcd60e51b815260040161088390612201565b6003546001600160a01b0316611afc5760405162461bcd60e51b81526004016108839061224f565b600c54600b54611b0c9190612293565b611b199062093a80612293565b4211611b5d5760405162461bcd60e51b81526020600482015260136024820152721d1bdad95b9cc81cdd1a5b1b081b1bd8dad959606a1b6044820152606401610883565b60035460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd291906122a6565b6111025760405162461bcd60e51b81526020600482015260156024820152744661696c656420746f2073656e6420746f6b656e7360581b6044820152606401610883565b611c1f33610ddd565b611c3b5760405162461bcd60e51b815260040161088390612201565b600d5462010000900460ff16611c895760405162461bcd60e51b815260206004820152601360248201527206c6971756964697479206e6f7420736574757606c1b6044820152606401610883565b6003546001600160a01b0316611cb15760405162461bcd60e51b81526004016108839061224f565b6064611cbb610ea9565b1015611d155760405162461bcd60e51b815260206004820152602360248201527f6c61756e6368206661696c65642c204254542072657475726e7320746f20757360448201526265727360e81b6064820152608401610883565b600c54600b54611d259190612293565b4211611d685760405162461bcd60e51b81526020600482015260126024820152711cd85b19481b9bdd08195b991959081e595d60721b6044820152606401610883565b60006064600954600654611d7c91906122c8565b611d8691906122f5565b6004546040519192506001600160a01b031690600090829084908381818185875af1925050503d8060008114611dd8576040519150601f19603f3d011682016040523d82523d6000602084013e611ddd565b606091505b5050905080611e2e5760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f2073656e642042545420746f20747265617375727900006044820152606401610883565b6006543392508290611e41908590612309565b604051600081818185875af1925050503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b50508091505080611ed55760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f2073656e642042545420746f204c5000000000000000006044820152606401610883565b60035460125460405163a9059cbb60e01b815233600482015260248101919091526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4e91906122a6565b611f9a5760405162461bcd60e51b815260206004820152601b60248201527f4661696c656420746f2073656e6420746f6b656e7320746f204c5000000000006044820152606401610883565b505050565b60006001600160a01b0382166120025760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b6064820152608401610883565b506001600160a01b03166000908152602091909152604090205460ff1690565b61202d6001826120b1565b6040516001600160a01b03821681527f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339906020015b60405180910390a150565b61207860018261212d565b6040516001600160a01b03821681527fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f90602001612062565b6120bb8282611f9f565b156121085760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c65006044820152606401610883565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6121378282611f9f565b61218d5760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b6064820152608401610883565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000602082840312156121c157600080fd5b5035919050565b6001600160a01b038116811461110257600080fd5b6000602082840312156121ef57600080fd5b81356121fa816121c8565b9392505050565b6020808252602e908201527f41646d696e526f6c653a2063616c6c657220646f6573206e6f7420686176652060408201526d7468652041646d696e20726f6c6560901b606082015260800190565b6020808252601490820152731b185d5b98da081d1bdad95b881b9bdd081cd95d60621b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610dea57610dea61227d565b6000602082840312156122b857600080fd5b815180151581146121fa57600080fd5b8082028115828204841417610dea57610dea61227d565b634e487b7160e01b600052601260045260246000fd5b600082612304576123046122df565b500490565b81810381811115610dea57610dea61227d565b60408152600360408201526242544360e81b6060820152608060208201526000610dea6080830160038152621554d160ea1b602082015260400190565b60006060828403121561236b57600080fd5b6040516060810181811067ffffffffffffffff8211171561239c57634e487b7160e01b600052604160045260246000fd5b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000826123d2576123d26122df565b500690565b60408152600360408201526208aa8960eb1b6060820152608060208201526000610dea6080830160038152621554d160ea1b60208201526040019056fea264697066735822122069431d6c2629e1ccf808c1864b535ae1091a31eeffecd6833c14a1777b47ecb064736f6c63430008140033
Deployed Bytecode
0x6080604052600436106102925760003560e01c80637796ff371161015a578063be040fb0116100c1578063e8b5e51f1161007a578063e8b5e51f146107cb578063ebc38ab0146107d3578063f6a03ebf146107e9578063f6be71d114610809578063ff16e75014610829578063ff9d682a1461084957600080fd5b8063be040fb01461072c578063c5c4744c14610741578063c683d8e414610757578063cbd3b4031461076c578063d2f825361461078c578063d5cf5c72146107ab57600080fd5b8063906a26e011610113578063906a26e014610695578063945cc9f3146106ab578063a28a4d86146106c0578063ab280144146106e0578063ba0bba40146106f6578063bc80e4c61461071657600080fd5b80637796ff371461061257806378e97925146106285780638447e1f91461063e578063861d8e1314610654578063870407bf1461066a5780638bad0c0a1461068057600080fd5b80634c69c00f116101fe5780636386c1c7116101b75780636386c1c7146104fe5780636605bfda146105465780636cb05ea2146105665780636f7bc9be1461057c57806370480275146105d857806371b9b646146105f857600080fd5b80634c69c00f1461043e578063554d578d1461045e57806356f6609414610473578063604a85da1461048957806361d027b3146104a9578063630e799f146104c957600080fd5b80631fb9abf9116102505780631fb9abf9146103505780631fe9eabc1461038b57806324d7806c146103ab57806326b340c3146103db5780633110235a146104085780633c7843931461041e57600080fd5b80623bdc741461029757806302bd7e49146102ae578063061873e8146102d7578063078c74c3146102ec5780630acba5db146103025780630fb5a6b41461033a575b600080fd5b3480156102a357600080fd5b506102ac61085e565b005b3480156102ba57600080fd5b506102c460095481565b6040519081526020015b60405180910390f35b3480156102e357600080fd5b506102ac610a26565b3480156102f857600080fd5b506102c4600a5481565b34801561030e57600080fd5b50600254610322906001600160a01b031681565b6040516001600160a01b0390911681526020016102ce565b34801561034657600080fd5b506102c4600c5481565b34801561035c57600080fd5b5061037061036b3660046121af565b610b8b565b604080519384526020840192909252908201526060016102ce565b34801561039757600080fd5b506102ac6103a63660046121af565b610db3565b3480156103b757600080fd5b506103cb6103c63660046121dd565b610ddd565b60405190151581526020016102ce565b3480156103e757600080fd5b506102c46103f63660046121dd565b60176020526000908152604090205481565b34801561041457600080fd5b506102c4600e5481565b34801561042a57600080fd5b506103706104393660046121af565b610df0565b34801561044a57600080fd5b506102ac6104593660046121dd565b610e62565b34801561046a57600080fd5b506102c4610ea9565b34801561047f57600080fd5b506102c460155481565b34801561049557600080fd5b506102ac6104a43660046121dd565b610ecc565b3480156104b557600080fd5b50600454610322906001600160a01b031681565b3480156104d557600080fd5b506104de610f13565b6040805194855260208501939093529183015260608201526080016102ce565b34801561050a57600080fd5b5061051e6105193660046121dd565b610f9e565b604080519586529315156020860152928401919091526060830152608082015260a0016102ce565b34801561055257600080fd5b506102ac6105613660046121dd565b61108d565b34801561057257600080fd5b506102c460145481565b34801561058857600080fd5b506105bb6105973660046121dd565b60166020526000908152604090208054600182015460029092015490919060ff1683565b6040805193845260208401929092521515908201526060016102ce565b3480156105e457600080fd5b506102ac6105f33660046121dd565b6110d4565b34801561060457600080fd5b50600d546103cb9060ff1681565b34801561061e57600080fd5b506102c460115481565b34801561063457600080fd5b506102c4600b5481565b34801561064a57600080fd5b506102c460075481565b34801561066057600080fd5b506102c4600f5481565b34801561067657600080fd5b506102c460135481565b34801561068c57600080fd5b506102ac611105565b3480156106a157600080fd5b506102c460055481565b3480156106b757600080fd5b506102c461110e565b3480156106cc57600080fd5b50600354610322906001600160a01b031681565b3480156106ec57600080fd5b506102c460085481565b34801561070257600080fd5b50600d546103cb9062010000900460ff1681565b34801561072257600080fd5b506102c460105481565b34801561073857600080fd5b506102ac611130565b34801561074d57600080fd5b506102c460065481565b34801561076357600080fd5b506102ac611489565b34801561077857600080fd5b506102c46107873660046121dd565b61157f565b34801561079857600080fd5b50600d546103cb90610100900460ff1681565b3480156107b757600080fd5b506102ac6107c63660046121af565b611776565b6102ac6117a0565b3480156107df57600080fd5b506102c460125481565b3480156107f557600080fd5b506102ac6108043660046121af565b611a4e565b34801561081557600080fd5b506102ac6108243660046121af565b611a78565b34801561083557600080fd5b506102ac6108443660046121af565b611aaf565b34801561085557600080fd5b506102ac611c16565b61086733610ddd565b61088c5760405162461bcd60e51b815260040161088390612201565b60405180910390fd5b6003546001600160a01b03166108b45760405162461bcd60e51b81526004016108839061224f565b600c54600b546108c49190612293565b42116109085760405162461bcd60e51b81526020600482015260136024820152721d1bdad95b9cc81cdd1a5b1b081b1bd8dad959606a1b6044820152606401610883565b6000601154116109505760405162461bcd60e51b81526020600482015260136024820152726e6f20746f6b656e7320746f2072656465656d60681b6044820152606401610883565b6003546004805460115460405163a9059cbb60e01b81526001600160a01b039283169381019390935260248301529091169063a9059cbb906044016020604051808303816000875af11580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906122a6565b610a245760405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f2073656e6420746f6b656e7320746f20547265617375726044820152607960f81b6064820152608401610883565b565b610a2f33610ddd565b610a4b5760405162461bcd60e51b815260040161088390612201565b6003546001600160a01b0316610a735760405162461bcd60e51b81526004016108839061224f565b600c54600b54610a839190612293565b4211610ac65760405162461bcd60e51b81526020600482015260126024820152711cd85b19481b9bdd08195b991959081e595d60721b6044820152606401610883565b600d5462010000900460ff16610b145760405162461bcd60e51b815260206004820152601360248201527206c6971756964697479206e6f7420736574757606c1b6044820152606401610883565b600d805461ff001916610100179055600754601354610b3790633b9aca006122c8565b610b429060646122c8565b610b4c91906122f5565b60105560408051600181524260208201527fef5fd91dc9b012f3e4b41e00dc71466a39c83d97c3cc3879de5b9193f456c63091015b60405180910390a1565b6000806000610b9933610ddd565b610bb55760405162461bcd60e51b815260040161088390612201565b60008411610bfd5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e742063616e6e6f74206265207a65726f60581b6044820152606401610883565b6003546001600160a01b0316610c255760405162461bcd60e51b81526004016108839061224f565b6003546040516323b872dd60e01b8152336004820152306024820152604481018690526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca091906122a6565b610cec5760405162461bcd60e51b815260206004820152601960248201527f4661696c656420746f207472616e7366657220746f6b656e73000000000000006044820152606401610883565b606460085485610cfc91906122c8565b610d0691906122f5565b92508260116000828254610d1a9190612293565b90915550610d2a90508385612309565b935060095460c8610d3b9190612309565b600954610d49906064612309565b610d5390866122c8565b610d5d91906122f5565b9150610d698285612309565b90508060136000828254610d7d9190612293565b925050819055508160126000828254610d969190612293565b9091555050600d805462ff00001916620100001790559193909250565b610dbc33610ddd565b610dd85760405162461bcd60e51b815260040161088390612201565b600e55565b6000610dea600183611f9f565b92915050565b6000806000606460085485610e0591906122c8565b610e0f91906122f5565b9250610e1b8385612309565b935060095460c8610e2c9190612309565b600954610e3a906064612309565b610e4490866122c8565b610e4e91906122f5565b9150610e5a8285612309565b929491935050565b610e6b33610ddd565b610e875760405162461bcd60e51b815260040161088390612201565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60006005546006546064610ebd91906122c8565b610ec791906122f5565b905090565b610ed533610ddd565b610ef15760405162461bcd60e51b815260040161088390612201565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600080600080600b54421015610f385742600b54610f319190612309565b9350610f3d565b600093505b600c54600b54610f4d9190612293565b421015610f765742600c54600b54610f659190612293565b610f6f9190612309565b9250610f7b565b600092505b8383600b54600c54600b54610f909190612293565b935093509350935090919293565b600080600080600080600654111561105c576007546001600160a01b038716600090815260166020526040902060018101549054610fde906103e86122c8565b610fe891906122c8565b610ff291906122f5565b6007546001600160a01b038816600090815260166020526040902060018101546013549154939650919261102691906122c8565b61103091906122c8565b61103a91906122f5565b6001600160a01b03871660009081526016602052604090206001015490925090505b6001600160a01b0386166000908152601660205260409020805460029091015490955060ff16935091939590929450565b61109633610ddd565b6110b25760405162461bcd60e51b815260040161088390612201565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6110dd33610ddd565b6110f95760405162461bcd60e51b815260040161088390612201565b61110281612022565b50565b610a243361206d565b6000600754601354633b9aca0061112591906122c8565b610ebd9060646122c8565b60005460ff166111825760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610883565b6000805460ff19169055600d54610100900460ff166111d85760405162461bcd60e51b81526020600482015260126024820152711c995919595b481b9bdd08195b98589b195960721b6044820152606401610883565b33600090815260166020526040812060105460018201548254929392606492633b9aca0092909161120991906122c8565b61121391906122c8565b61121d91906122f5565b61122791906122f5565b90506000811161126c5760405162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b6044820152606401610883565b600282015460ff16156112b35760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b6044820152606401610883565b60646112bd610ea9565b106113805760035460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611313573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133791906122a6565b61137b5760405162461bcd60e51b81526020600482015260156024820152744661696c656420746f2073656e6420746f6b656e7360581b6044820152606401610883565b611413565b815460405133916000918391908381818185875af1925050503d80600081146113c5576040519150601f19603f3d011682016040523d82523d6000602084013e6113ca565b606091505b50509050806114105760405162461bcd60e51b815260206004820152601260248201527111985a5b1959081d1bc81cd95b990810951560721b6044820152606401610883565b50505b8154600a8054600090611427908490612293565b909155505081546040805133815260208101929092527f222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6910160405180910390a1506002018054600160ff199182168117909255600080549091169091179055565b61149233610ddd565b6114ae5760405162461bcd60e51b815260040161088390612201565b6000600b54116114f55760405162461bcd60e51b81526020600482015260126024820152711cdd185c9d081d1a5b59481b9bdd081cd95d60721b6044820152606401610883565b6000600c541161153a5760405162461bcd60e51b815260206004820152601060248201526f191d5c985d1a5bdb881b9bdd081cd95d60821b6044820152606401610883565b600d805460ff19166001908117909155604080519182524260208301527f020b56eb5031e351b28c7914a3185d679342016d533b3fe0d056b43fe5ecb8689101610b81565b60006115a560405180606001604052806000815260200160008152602001600081525090565b60025460405163195556f360e21b81526001600160a01b03909116906365555bcc906115d39060040161231c565b606060405180830381865afa1580156115f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116149190612359565b80516040805160208101929092526bffffffffffffffffffffffff19606087901b169082015242605482015290915060009060740160408051601f198184030181529190528051602090910120905061166e6064826123c3565b611679906064612293565b6001600160a01b038516600090815260176020526040902054909350830361176f5760025460405163195556f360e21b81526001600160a01b03909116906365555bcc906116c9906004016123d7565b606060405180830381865afa1580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190612359565b80516040805160208101929092526bffffffffffffffffffffffff19606088901b169082015242605482015290925060740160408051601f19818403018152919052805160209091012090506117616064826123c3565b61176c906064612293565b92505b5050919050565b61177f33610ddd565b61179b5760405162461bcd60e51b815260040161088390612201565b600555565b60005460ff166117f25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610883565b6000805460ff19169055600b544210156118405760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081cdd185c9d1959081e595d608a1b6044820152606401610883565b600c54600b546118509190612293565b421061188b5760405162461bcd60e51b815260206004820152600a6024820152691cd85b1948195b99195960b21b6044820152606401610883565b600d5460ff166118cf5760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd08195b98589b1959081e595d608a1b6044820152606401610883565b336000908152601660205260409020600e5481546118ee903490612293565b11156119325760405162461bcd60e51b81526020600482015260136024820152720d2dceccae6e8dacadce840e8dede40d0d2ced606b1b6044820152606401610883565b34600660008282546119449190612293565b90915550600090506119553361157f565b33600090815260176020526040812082905583549192500361198a576001600f60008282546119849190612293565b90915550505b8154611997903490612293565b825460018401546119a891906122c8565b6119b234846122c8565b6119bc9190612293565b6119c691906122f5565b60018301558154349083906000906119df908490612293565b909155506119ef905081346122c8565b60076000828254611a009190612293565b9091555050604080513381523460208201527fd90d253a9de34d2fdd5a75ae49ea17fcb43af32fc8ea08cc6d2341991dd3872e910160405180910390a150506000805460ff19166001179055565b611a5733610ddd565b611a735760405162461bcd60e51b815260040161088390612201565b600b55565b611a8133610ddd565b611a9d5760405162461bcd60e51b815260040161088390612201565b611aa981610e106122c8565b600c5550565b611ab833610ddd565b611ad45760405162461bcd60e51b815260040161088390612201565b6003546001600160a01b0316611afc5760405162461bcd60e51b81526004016108839061224f565b600c54600b54611b0c9190612293565b611b199062093a80612293565b4211611b5d5760405162461bcd60e51b81526020600482015260136024820152721d1bdad95b9cc81cdd1a5b1b081b1bd8dad959606a1b6044820152606401610883565b60035460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd291906122a6565b6111025760405162461bcd60e51b81526020600482015260156024820152744661696c656420746f2073656e6420746f6b656e7360581b6044820152606401610883565b611c1f33610ddd565b611c3b5760405162461bcd60e51b815260040161088390612201565b600d5462010000900460ff16611c895760405162461bcd60e51b815260206004820152601360248201527206c6971756964697479206e6f7420736574757606c1b6044820152606401610883565b6003546001600160a01b0316611cb15760405162461bcd60e51b81526004016108839061224f565b6064611cbb610ea9565b1015611d155760405162461bcd60e51b815260206004820152602360248201527f6c61756e6368206661696c65642c204254542072657475726e7320746f20757360448201526265727360e81b6064820152608401610883565b600c54600b54611d259190612293565b4211611d685760405162461bcd60e51b81526020600482015260126024820152711cd85b19481b9bdd08195b991959081e595d60721b6044820152606401610883565b60006064600954600654611d7c91906122c8565b611d8691906122f5565b6004546040519192506001600160a01b031690600090829084908381818185875af1925050503d8060008114611dd8576040519150601f19603f3d011682016040523d82523d6000602084013e611ddd565b606091505b5050905080611e2e5760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f2073656e642042545420746f20747265617375727900006044820152606401610883565b6006543392508290611e41908590612309565b604051600081818185875af1925050503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b50508091505080611ed55760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f2073656e642042545420746f204c5000000000000000006044820152606401610883565b60035460125460405163a9059cbb60e01b815233600482015260248101919091526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4e91906122a6565b611f9a5760405162461bcd60e51b815260206004820152601b60248201527f4661696c656420746f2073656e6420746f6b656e7320746f204c5000000000006044820152606401610883565b505050565b60006001600160a01b0382166120025760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b6064820152608401610883565b506001600160a01b03166000908152602091909152604090205460ff1690565b61202d6001826120b1565b6040516001600160a01b03821681527f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339906020015b60405180910390a150565b61207860018261212d565b6040516001600160a01b03821681527fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f90602001612062565b6120bb8282611f9f565b156121085760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c65006044820152606401610883565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6121378282611f9f565b61218d5760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b6064820152608401610883565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000602082840312156121c157600080fd5b5035919050565b6001600160a01b038116811461110257600080fd5b6000602082840312156121ef57600080fd5b81356121fa816121c8565b9392505050565b6020808252602e908201527f41646d696e526f6c653a2063616c6c657220646f6573206e6f7420686176652060408201526d7468652041646d696e20726f6c6560901b606082015260800190565b6020808252601490820152731b185d5b98da081d1bdad95b881b9bdd081cd95d60621b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610dea57610dea61227d565b6000602082840312156122b857600080fd5b815180151581146121fa57600080fd5b8082028115828204841417610dea57610dea61227d565b634e487b7160e01b600052601260045260246000fd5b600082612304576123046122df565b500490565b81810381811115610dea57610dea61227d565b60408152600360408201526242544360e81b6060820152608060208201526000610dea6080830160038152621554d160ea1b602082015260400190565b60006060828403121561236b57600080fd5b6040516060810181811067ffffffffffffffff8211171561239c57634e487b7160e01b600052604160045260246000fd5b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000826123d2576123d26122df565b500690565b60408152600360408201526208aa8960eb1b6060820152608060208201526000610dea6080830160038152621554d160ea1b60208201526040019056fea264697066735822122069431d6c2629e1ccf808c1864b535ae1091a31eeffecd6833c14a1777b47ecb064736f6c63430008140033
Deployed Bytecode Sourcemap
151:13422:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10880:407;;;;;;;;;;;;;:::i;:::-;;755:30;;;;;;;;;;;;;;;;;;;160:25:4;;;148:2;133:18;755:30:0;;;;;;;;11532:406;;;;;;;;;;;;;:::i;837:26::-;;;;;;;;;;;;;;;;308:20;;;;;;;;;;-1:-1:-1;308:20:0;;;;-1:-1:-1;;;;;308:20:0;;;;;;-1:-1:-1;;;;;374:32:4;;;356:51;;344:2;329:18;308:20:0;196:217:4;951:23:0;;;;;;;;;;;;;;;;8566:927;;;;;;;;;;-1:-1:-1;8566:927:0;;;;;:::i;:::-;;:::i;:::-;;;;805:25:4;;;861:2;846:18;;839:34;;;;889:18;;;882:34;793:2;778:18;8566:927:0;603:319:4;12399:82:0;;;;;;;;;;-1:-1:-1;12399:82:0;;;;;:::i;:::-;;:::i;3309:115::-;;;;;;;;;;-1:-1:-1;3309:115:0;;;;;:::i;:::-;;:::i;:::-;;;1480:14:4;;1473:22;1455:41;;1443:2;1428:18;3309:115:0;1315:187:4;2358:44:0;;;;;;;;;;-1:-1:-1;2358:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;1211:24;;;;;;;;;;;;;;;;9554:412;;;;;;;;;;-1:-1:-1;9554:412:0;;;;;:::i;:::-;;:::i;7998:90::-;;;;;;;;;;-1:-1:-1;7998:90:0;;;;;:::i;:::-;;:::i;4839:101::-;;;;;;;;;;;;;:::i;1694:22::-;;;;;;;;;;;;;;;;7703:108;;;;;;;;;;-1:-1:-1;7703:108:0;;;;;:::i;:::-;;:::i;393:23::-;;;;;;;;;;-1:-1:-1;393:23:0;;;;-1:-1:-1;;;;;393:23:0;;;12489:526;;;;;;;;;;;;;:::i;:::-;;;;2212:25:4;;;2268:2;2253:18;;2246:34;;;;2296:18;;;2289:34;2354:2;2339:18;;2332:34;2199:3;2184:19;12489:526:0;1981:391:4;13023:547:0;;;;;;;;;;-1:-1:-1;13023:547:0;;;;;:::i;:::-;;:::i;:::-;;;;2630:25:4;;;2698:14;;2691:22;2686:2;2671:18;;2664:50;2730:18;;;2723:34;;;;2788:2;2773:18;;2766:34;2831:3;2816:19;;2809:35;2617:3;2602:19;13023:547:0;2377:473:4;7855:103:0;;;;;;;;;;-1:-1:-1;7855:103:0;;;;;:::i;:::-;;:::i;1631:22::-;;;;;;;;;;;;;;;;2302:49;;;;;;;;;;-1:-1:-1;2302:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3051:25:4;;;3107:2;3092:18;;3085:34;;;;3162:14;3155:22;3135:18;;;3128:50;3039:2;3024:18;2302:49:0;2855:329:4;3432:89:0;;;;;;;;;;-1:-1:-1;3432:89:0;;;;;:::i;:::-;;:::i;1030:23::-;;;;;;;;;;-1:-1:-1;1030:23:0;;;;;;;;1408:28;;;;;;;;;;;;;;;;895:24;;;;;;;;;;;;;;;;600:30;;;;;;;;;;;;;;;;1272:26;;;;;;;;;;;;;;;;1562;;;;;;;;;;;;;;;;3529:75;;;;;;;;;;;;;:::i;453:22::-;;;;;;;;;;;;;;;;11946:152;;;;;;;;;;;;;:::i;337:26::-;;;;;;;;;;-1:-1:-1;337:26:0;;;;-1:-1:-1;;;;;337:26:0;;;677:27;;;;;;;;;;;;;;;;1145:17;;;;;;;;;;-1:-1:-1;1145:17:0;;;;;;;;;;;1342:26;;;;;;;;;;;;;;;;6551:1097;;;;;;;;;;;;;:::i;540:26::-;;;;;;;;;;;;;;;;11295:229;;;;;;;;;;;;;:::i;4948:626::-;;;;;;;;;;-1:-1:-1;4948:626:0;;;;;:::i;:::-;;:::i;1087:25::-;;;;;;;;;;-1:-1:-1;1087:25:0;;;;;;;;;;;12106:84;;;;;;;;;;-1:-1:-1;12106:84:0;;;;;:::i;:::-;;:::i;5597:925::-;;;:::i;1495:22::-;;;;;;;;;;;;;;;;12303:88;;;;;;;;;;-1:-1:-1;12303:88:0;;;;;:::i;:::-;;:::i;12198:97::-;;;;;;;;;;-1:-1:-1;12198:97:0;;;;;:::i;:::-;;:::i;8151:362::-;;;;;;;;;;-1:-1:-1;8151:362:0;;;;;:::i;:::-;;:::i;10020:816::-;;;;;;;;;;;;;:::i;10880:407::-;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;;;;;;;;;10941:11:::1;::::0;-1:-1:-1;;;;;10941:11:0::1;10933:58;;;;-1:-1:-1::0;;;10933:58:0::1;;;;;;;:::i;:::-;11040:8;;11028:9;;:20;;;;:::i;:::-;11010:15;:38;11002:70;;;::::0;-1:-1:-1;;;11002:70:0;;4417:2:4;11002:70:0::1;::::0;::::1;4399:21:4::0;4456:2;4436:18;;;4429:30;-1:-1:-1;;;4475:18:4;;;4468:49;4534:18;;11002:70:0::1;4215:343:4::0;11002:70:0::1;11105:1;11091:13;;:15;11083:47;;;::::0;-1:-1:-1;;;11083:47:0;;4765:2:4;11083:47:0::1;::::0;::::1;4747:21:4::0;4804:2;4784:18;;;4777:30;-1:-1:-1;;;4823:18:4;;;4816:49;4882:18;;11083:47:0::1;4563:343:4::0;11083:47:0::1;11172:11;::::0;11194:8:::1;::::0;;11204:13:::1;::::0;11165:53:::1;::::0;-1:-1:-1;;;11165:53:0;;-1:-1:-1;;;;;11194:8:0;;::::1;11165:53:::0;;::::1;5085:51:4::0;;;;5152:18;;;5145:34;11172:11:0;;::::1;::::0;11165:28:::1;::::0;5058:18:4;;11165:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11143:136;;;::::0;-1:-1:-1;;;11143:136:0;;5674:2:4;11143:136:0::1;::::0;::::1;5656:21:4::0;5713:2;5693:18;;;5686:30;5752:34;5732:18;;;5725:62;-1:-1:-1;;;5803:18:4;;;5796:31;5844:19;;11143:136:0::1;5472:397:4::0;11143:136:0::1;10880:407::o:0;11532:406::-;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;11592:11:::1;::::0;-1:-1:-1;;;;;11592:11:0::1;11584:58;;;;-1:-1:-1::0;;;11584:58:0::1;;;;;;;:::i;:::-;11689:8;;11679:9;;:18;;;;:::i;:::-;11661:15;:36;11653:67;;;::::0;-1:-1:-1;;;11653:67:0;;6076:2:4;11653:67:0::1;::::0;::::1;6058:21:4::0;6115:2;6095:18;;;6088:30;-1:-1:-1;;;6134:18:4;;;6127:48;6192:18;;11653:67:0::1;5874:342:4::0;11653:67:0::1;11739:5;::::0;;;::::1;;;11731:37;;;::::0;-1:-1:-1;;;11731:37:0;;6423:2:4;11731:37:0::1;::::0;::::1;6405:21:4::0;6462:2;6442:18;;;6435:30;-1:-1:-1;;;6481:18:4;;;6474:49;6540:18;;11731:37:0::1;6221:343:4::0;11731:37:0::1;11779:13;:20:::0;;-1:-1:-1;;11779:20:0::1;;;::::0;;11852:15:::1;::::0;11824:11:::1;::::0;:19:::1;::::0;11838:5:::1;11824:19;:::i;:::-;:25;::::0;11846:3:::1;11824:25;:::i;:::-;:43;;;;:::i;:::-;11810:11;:57:::0;11894:36:::1;::::0;;11908:4:::1;7167:41:4::0;;11914:15:0::1;7239:2:4::0;7224:18;;7217:34;11894:36:0::1;::::0;7140:18:4;11894:36:0::1;;;;;;;;11532:406::o:0;8566:927::-;8631:12;8645:10;8657:14;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;8699:1:::1;8692:6;:8;8684:42;;;::::0;-1:-1:-1;;;8684:42:0;;7464:2:4;8684:42:0::1;::::0;::::1;7446:21:4::0;7503:2;7483:18;;;7476:30;-1:-1:-1;;;7522:18:4;;;7515:51;7583:18;;8684:42:0::1;7262:345:4::0;8684:42:0::1;8745:11;::::0;-1:-1:-1;;;;;8745:11:0::1;8737:58;;;;-1:-1:-1::0;;;8737:58:0::1;;;;;;;:::i;:::-;8835:11;::::0;8828:67:::1;::::0;-1:-1:-1;;;8828:67:0;;8861:10:::1;8828:67;::::0;::::1;7852:34:4::0;8881:4:0::1;7902:18:4::0;;;7895:43;7954:18;;;7947:34;;;-1:-1:-1;;;;;8835:11:0;;::::1;::::0;8828:32:::1;::::0;7787:18:4;;8828:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8806:142;;;::::0;-1:-1:-1;;;8806:142:0;;8194:2:4;8806:142:0::1;::::0;::::1;8176:21:4::0;8233:2;8213:18;;;8206:30;8272:27;8252:18;;;8245:55;8317:18;;8806:142:0::1;7992:349:4::0;8806:142:0::1;8992:3;8977:12;;8968:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;8961:34;;9048:4;9031:13;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;9106:14:0::1;::::0;-1:-1:-1;9116:4:0;9106:14;::::1;:::i;:::-;;;9180:15;;9174:3;:21;;;;:::i;:::-;9154:15;::::0;9148:21:::1;::::0;:3:::1;:21;:::i;:::-;9138:32;::::0;:6;:32:::1;:::i;:::-;:58;;;;:::i;:::-;9133:63:::0;-1:-1:-1;9229:11:0::1;9133:63:::0;9229:6;:11:::1;:::i;:::-;9220:20;;9309:6;9294:11;;:21;;;;;;;:::i;:::-;;;;;;;;9376:2;9365:7;;:13;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;9438:5:0::1;:12:::0;;-1:-1:-1;;9438:12:0::1;::::0;::::1;::::0;;8566:927;;;;;:::o;12399:82::-;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;12457:9:::1;:16:::0;12399:82::o;3309:115::-;3364:4;3388:28;:15;3408:7;3388:19;:28::i;:::-;3381:35;3309:115;-1:-1:-1;;3309:115:0:o;9554:412::-;9621:12;9635:10;9647:14;9705:3;9690:12;;9681:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;9674:34;-1:-1:-1;9746:14:0;9674:34;9746:14;;:::i;:::-;;;9820:15;;9814:3;:21;;;;:::i;:::-;9794:15;;9788:21;;:3;:21;:::i;:::-;9778:32;;:6;:32;:::i;:::-;:58;;;;:::i;:::-;9773:63;-1:-1:-1;9873:11:0;9773:63;9873:6;:11;:::i;:::-;9554:412;;;;-1:-1:-1;;9554:412:0:o;7998:90::-;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;8065:7:::1;:15:::0;;-1:-1:-1;;;;;;8065:15:0::1;-1:-1:-1::0;;;;;8065:15:0;;;::::1;::::0;;;::::1;::::0;;7998:90::o;4839:101::-;4877:7;4924;;4904:11;;4918:3;4904:17;;;;:::i;:::-;:27;;;;:::i;:::-;4896:36;;4839:101;:::o;7703:108::-;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;7777:11:::1;:26:::0;;-1:-1:-1;;;;;;7777:26:0::1;-1:-1:-1::0;;;;;7777:26:0;;;::::1;::::0;;;::::1;::::0;;7703:108::o;12489:526::-;12530:19;12551:17;12570:13;12585:11;12630:9;;12612:15;:27;12608:148;;;12681:15;12669:9;;:27;;;;:::i;:::-;12655:41;;12608:148;;;12743:1;12729:15;;12608:148;12802:8;;12790:9;;:20;;;;:::i;:::-;12772:15;:38;12768:166;;;12861:15;12850:8;;12838:9;;:20;;;;:::i;:::-;:38;;;;:::i;:::-;12826:50;;12768:166;;;12921:1;12909:13;;12768:166;12951:11;12964:9;12975;;12998:8;;12986:9;;:20;;;;:::i;:::-;12944:63;;;;;;;;12489:526;;;;:::o;13023:547::-;13078:14;13094:12;13108:13;13123:14;13139:12;13181:1;13167:11;;:15;13163:303;;;13276:15;;-1:-1:-1;;;;;13247:15:0;;;;;;:9;:15;;;;;:26;;;;13207:30;;:37;;13240:4;13207:37;:::i;:::-;:66;;;;:::i;:::-;:84;;;;:::i;:::-;13391:15;;-1:-1:-1;;;;;13362:15:0;;;;;;:9;:15;;;;;:26;;;;13348:11;;13315:30;;13199:92;;-1:-1:-1;13391:15:0;;13315:44;;13348:11;13315:44;:::i;:::-;:73;;;;:::i;:::-;:91;;;;:::i;:::-;-1:-1:-1;;;;;13428:15:0;;;;;;:9;:15;;;;;:26;;;13306:100;;-1:-1:-1;13428:26:0;-1:-1:-1;13163:303:0;-1:-1:-1;;;;;13485:15:0;;;;;;:9;:15;;;;;:30;;13517:23;;;;;13485:30;;-1:-1:-1;13517:23:0;;;-1:-1:-1;13023:547:0;;;;;;;:::o;7855:103::-;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;7930:8:::1;:20:::0;;-1:-1:-1;;;;;;7930:20:0::1;-1:-1:-1::0;;;;;7930:20:0;;;::::1;::::0;;;::::1;::::0;;7855:103::o;3432:89::-;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;3495:18:::1;3505:7;3495:9;:18::i;:::-;3432:89:::0;:::o;3529:75::-;3572:24;3585:10;3572:12;:24::i;11946:152::-;11991:13;12052:15;;12024:11;;12038:5;12024:19;;;;:::i;:::-;:25;;12046:3;12024:25;:::i;6551:1097::-;4500:11;;;;4492:55;;;;-1:-1:-1;;;4492:55:0;;8681:2:4;4492:55:0;;;8663:21:4;8720:2;8700:18;;;8693:30;8759:33;8739:18;;;8732:61;8810:18;;4492:55:0;8479:355:4;4492:55:0;4639:5;4625:19;;-1:-1:-1;;4625:19:0;;;6608:13:::1;::::0;4625:19;6608:13;::::1;4625:19:::0;6608:13:::1;6600:44;;;::::0;-1:-1:-1;;;6600:44:0;;9041:2:4;6600:44:0::1;::::0;::::1;9023:21:4::0;9080:2;9060:18;;;9053:30;-1:-1:-1;;;9099:18:4;;;9092:48;9157:18;;6600:44:0::1;8839:342:4::0;6600:44:0::1;6697:10;6655:29;6687:21:::0;;;:9:::1;:21;::::0;;;;6790:11:::1;::::0;6768:19:::1;::::0;::::1;::::0;6742:23;;6687:21;;6655:29;6812:3:::1;::::0;6804:5:::1;::::0;6790:11;;6742:45:::1;::::0;6768:19;6742:45:::1;:::i;:::-;:59;;;;:::i;:::-;:67;;;;:::i;:::-;:73;;;;:::i;:::-;6719:96;;6849:1;6834:12;:16;6826:45;;;::::0;-1:-1:-1;;;6826:45:0;;9388:2:4;6826:45:0::1;::::0;::::1;9370:21:4::0;9427:2;9407:18;;;9400:30;-1:-1:-1;;;9446:18:4;;;9439:46;9502:18;;6826:45:0::1;9186:340:4::0;6826:45:0::1;6891:16;::::0;::::1;::::0;::::1;;6890:17;6882:45;;;::::0;-1:-1:-1;;;6882:45:0;;9733:2:4;6882:45:0::1;::::0;::::1;9715:21:4::0;9772:2;9752:18;;;9745:30;-1:-1:-1;;;9791:18:4;;;9784:45;9846:18;;6882:45:0::1;9531:339:4::0;6882:45:0::1;6952:3;6942:8;:6;:8::i;:::-;:13;6938:559;;7058:11;::::0;7051:115:::1;::::0;-1:-1:-1;;;7051:115:0;;7102:10:::1;7051:115;::::0;::::1;5085:51:4::0;5152:18;;;5145:34;;;-1:-1:-1;;;;;7058:11:0;;::::1;::::0;7051:28:::1;::::0;5058:18:4;;7051:115:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7025:198;;;::::0;-1:-1:-1;;;7025:198:0;;10077:2:4;7025:198:0::1;::::0;::::1;10059:21:4::0;10116:2;10096:18;;;10089:30;-1:-1:-1;;;10135:18:4;;;10128:51;10196:18;;7025:198:0::1;9875:345:4::0;7025:198:0::1;6938:559;;;7407:23:::0;;7391:44:::1;::::0;7349:10:::1;::::0;7319:19:::1;::::0;7349:10;;7407:23;7319:19;7391:44;7319:19;7391:44;7407:23;7349:10;7391:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7375:60;;;7458:4;7450:35;;;::::0;-1:-1:-1;;;7450:35:0;;10637:2:4;7450:35:0::1;::::0;::::1;10619:21:4::0;10676:2;10656:18;;;10649:30;-1:-1:-1;;;10695:18:4;;;10688:48;10753:18;;7450:35:0::1;10435:342:4::0;7450:35:0::1;7241:256;;6938:559;7524:23:::0;;7509:11:::1;:38:::0;;7524:23:::1;::::0;7509:38:::1;::::0;7524:23;;7509:38:::1;:::i;:::-;::::0;;;-1:-1:-1;;7582:23:0;;7563:43:::1;::::0;;7570:10:::1;5085:51:4::0;;5167:2;5152:18;;5145:34;;;;7563:43:0::1;::::0;5058:18:4;7563:43:0::1;;;;;;;-1:-1:-1::0;7617:16:0::1;;:23:::0;;7636:4:::1;-1:-1:-1::0;;7617:23:0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;4805:18:0;;;;;;;;;;6551:1097::o;11295:229::-;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;11363:1:::1;11353:9;;:11;11345:42;;;::::0;-1:-1:-1;;;11345:42:0;;10984:2:4;11345:42:0::1;::::0;::::1;10966:21:4::0;11023:2;11003:18;;;10996:30;-1:-1:-1;;;11042:18:4;;;11035:48;11100:18;;11345:42:0::1;10782:342:4::0;11345:42:0::1;11415:1;11406:8;;:10;11398:39;;;::::0;-1:-1:-1;;;11398:39:0;;11331:2:4;11398:39:0::1;::::0;::::1;11313:21:4::0;11370:2;11350:18;;;11343:30;-1:-1:-1;;;11389:18:4;;;11382:46;11445:18;;11398:39:0::1;11129:340:4::0;11398:39:0::1;11448:11;:18:::0;;-1:-1:-1;;11448:18:0::1;11462:4;11448:18:::0;;::::1;::::0;;;11482:34:::1;::::0;;7167:41:4;;;11500:15:0::1;7239:2:4::0;7224:18;;7217:34;11482::0::1;::::0;7140:18:4;11482:34:0::1;6999:258:4::0;4948:626:0;4999:12;5023:31;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5023:31:0;5072:7;;:38;;-1:-1:-1;;;5072:38:0;;-1:-1:-1;;;;;5072:7:0;;;;:24;;:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5175:9;;5158:50;;;;;;12989:19:4;;;;-1:-1:-1;;13046:2:4;13042:15;;;13038:53;13024:12;;;13017:75;5192:15:0;13108:12:4;;;13101:28;5065:45:0;;-1:-1:-1;5123:12:0;;13145::4;;5158:50:0;;;-1:-1:-1;;5158:50:0;;;;;;;;;5148:61;;5158:50;5148:61;;;;;-1:-1:-1;5228:10:0;5235:3;5148:61;5228:10;:::i;:::-;:16;;5241:3;5228:16;:::i;:::-;-1:-1:-1;;;;;5296:15:0;;;;;;:9;:15;;;;;;5221:23;;-1:-1:-1;5288:23:0;;5284:261;;5334:7;;:38;;-1:-1:-1;;;5334:38:0;;-1:-1:-1;;;;;5334:7:0;;;;:24;;:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5431:9;;5414:50;;;;;;12989:19:4;;;;-1:-1:-1;;13046:2:4;13042:15;;;13038:53;13024:12;;;13017:75;5448:15:0;13108:12:4;;;13101:28;5431:9:0;;-1:-1:-1;13145:12:4;;5414:50:0;;;-1:-1:-1;;5414:50:0;;;;;;;;;5404:61;;5414:50;5404:61;;;;;-1:-1:-1;5488:10:0;5495:3;5404:61;5488:10;:::i;:::-;:16;;5501:3;5488:16;:::i;:::-;5481:23;;5284:261;5555:11;;4948:626;;;:::o;12106:84::-;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;12168:7:::1;:14:::0;12106:84::o;5597:925::-;4500:11;;;;4492:55;;;;-1:-1:-1;;;4492:55:0;;8681:2:4;4492:55:0;;;8663:21:4;8720:2;8700:18;;;8693:30;8759:33;8739:18;;;8732:61;8810:18;;4492:55:0;8479:355:4;4492:55:0;4639:5;4625:19;;-1:-1:-1;;4625:19:0;;;5680:9:::1;::::0;5661:15:::1;:28;;5653:56;;;::::0;-1:-1:-1;;;5653:56:0;;13993:2:4;5653:56:0::1;::::0;::::1;13975:21:4::0;14032:2;14012:18;;;14005:30;-1:-1:-1;;;14051:18:4;;;14044:45;14106:18;;5653:56:0::1;13791:339:4::0;5653:56:0::1;5756:8;;5746:9;;:18;;;;:::i;:::-;5728:15;:36;5720:59;;;::::0;-1:-1:-1;;;5720:59:0;;14337:2:4;5720:59:0::1;::::0;::::1;14319:21:4::0;14376:2;14356:18;;;14349:30;-1:-1:-1;;;14395:18:4;;;14388:40;14445:18;;5720:59:0::1;14135:334:4::0;5720:59:0::1;5798:11;::::0;::::1;;5790:39;;;::::0;-1:-1:-1;;;5790:39:0;;14676:2:4;5790:39:0::1;::::0;::::1;14658:21:4::0;14715:2;14695:18;;;14688:30;-1:-1:-1;;;14734:18:4;;;14727:45;14789:18;;5790:39:0::1;14474:339:4::0;5790:39:0::1;5884:10;5842:29;5874:21:::0;;;:9:::1;:21;::::0;;;;5955:9:::1;::::0;5916:23;;:35:::1;::::0;5942:9:::1;::::0;5916:35:::1;:::i;:::-;:48;;5908:80;;;::::0;-1:-1:-1;;;5908:80:0;;15020:2:4;5908:80:0::1;::::0;::::1;15002:21:4::0;15059:2;15039:18;;;15032:30;-1:-1:-1;;;15078:18:4;;;15071:49;15137:18;;5908:80:0::1;14818:343:4::0;5908:80:0::1;6016:9;6001:11;;:24;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;6038:16:0::1;::::0;-1:-1:-1;6057:19:0::1;6065:10;6057:7;:19::i;:::-;6119:10;6109:21;::::0;;;:9:::1;:21;::::0;;;;:32;;;6158:23;;6038:38;;-1:-1:-1;6158:28:0;6154:76:::1;;6217:1;6202:11;;:16;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;6154:76:0::1;6332:23:::0;;:35:::1;::::0;6358:9:::1;::::0;6332:35:::1;:::i;:::-;6306:23:::0;;6286:19:::1;::::0;::::1;::::0;:43:::1;::::0;6306:23;6286:43:::1;:::i;:::-;6265:18;6274:9;6265:8:::0;:18:::1;:::i;:::-;:64;;;;:::i;:::-;6264:104;;;;:::i;:::-;6242:19;::::0;::::1;:126:::0;6379:36;;6406:9:::1;::::0;6242:8;;6379:23:::1;::::0;:36:::1;::::0;6406:9;;6379:36:::1;:::i;:::-;::::0;;;-1:-1:-1;6447:20:0::1;::::0;-1:-1:-1;6459:8:0;6447:9:::1;:20;:::i;:::-;6428:15;;:39;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;6485:29:0::1;::::0;;6492:10:::1;5085:51:4::0;;6504:9:0::1;5167:2:4::0;5152:18;;5145:34;6485:29:0::1;::::0;5058:18:4;6485:29:0::1;;;;;;;-1:-1:-1::0;;4805:11:0;:18;;-1:-1:-1;;4805:18:0;4819:4;4805:18;;;5597:925::o;12303:88::-;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;12365:9:::1;:18:::0;12303:88::o;12198:97::-;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;12274:13:::1;:6:::0;12283:4:::1;12274:13;:::i;:::-;12263:8;:24:::0;-1:-1:-1;12198:97:0:o;8151:362::-;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;8232:11:::1;::::0;-1:-1:-1;;;;;8232:11:0::1;8224:58;;;;-1:-1:-1::0;;;8224:58:0::1;;;;;;;:::i;:::-;8331:8;;8319:9;;:20;;;;:::i;:::-;:32;::::0;8342:9:::1;8319:32;:::i;:::-;8301:15;:50;8293:82;;;::::0;-1:-1:-1;;;8293:82:0;;4417:2:4;8293:82:0::1;::::0;::::1;4399:21:4::0;4456:2;4436:18;;;4429:30;-1:-1:-1;;;4475:18:4;;;4468:49;4534:18;;8293:82:0::1;4215:343:4::0;8293:82:0::1;8415:11;::::0;8408:48:::1;::::0;-1:-1:-1;;;8408:48:0;;8437:10:::1;8408:48;::::0;::::1;5085:51:4::0;5152:18;;;5145:34;;;-1:-1:-1;;;;;8415:11:0;;::::1;::::0;8408:28:::1;::::0;5058:18:4;;8408:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8386:119;;;::::0;-1:-1:-1;;;8386:119:0;;10077:2:4;8386:119:0::1;::::0;::::1;10059:21:4::0;10116:2;10096:18;;;10089:30;-1:-1:-1;;;10135:18:4;;;10128:51;10196:18;;8386:119:0::1;9875:345:4::0;10020:816:0;3211:19;3219:10;3211:7;:19::i;:::-;3203:78;;;;-1:-1:-1;;;3203:78:0;;;;;;;:::i;:::-;10087:5:::1;::::0;;;::::1;;;10079:37;;;::::0;-1:-1:-1;;;10079:37:0;;6423:2:4;10079:37:0::1;::::0;::::1;6405:21:4::0;6462:2;6442:18;;;6435:30;-1:-1:-1;;;6481:18:4;;;6474:49;6540:18;;10079:37:0::1;6221:343:4::0;10079:37:0::1;10135:11;::::0;-1:-1:-1;;;;;10135:11:0::1;10127:58;;;;-1:-1:-1::0;;;10127:58:0::1;;;;;;;:::i;:::-;10214:3;10204:8;:6;:8::i;:::-;:13;;10196:61;;;::::0;-1:-1:-1;;;10196:61:0;;15368:2:4;10196:61:0::1;::::0;::::1;15350:21:4::0;15407:2;15387:18;;;15380:30;15446:34;15426:18;;;15419:62;-1:-1:-1;;;15497:18:4;;;15490:33;15540:19;;10196:61:0::1;15166:399:4::0;10196:61:0::1;10306:8;;10294:9;;:20;;;;:::i;:::-;10276:15;:38;10268:69;;;::::0;-1:-1:-1;;;10268:69:0;;6076:2:4;10268:69:0::1;::::0;::::1;6058:21:4::0;6115:2;6095:18;;;6088:30;-1:-1:-1;;;6134:18:4;;;6127:48;6192:18;;10268:69:0::1;5874:342:4::0;10268:69:0::1;10348:14;10395:3;10377:15;;10363:11;;:29;;;;:::i;:::-;:35;;;;:::i;:::-;10441:8;::::0;10471:27:::1;::::0;10348:50;;-1:-1:-1;;;;;;10441:8:0::1;::::0;10411:19:::1;::::0;10441:8;;10348:50;;10411:19;10471:27;10411:19;10471:27;10348:50;10441:8;10471:27:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10455:43;;;10511:4;10503:47;;;::::0;-1:-1:-1;;;10503:47:0;;15772:2:4;10503:47:0::1;::::0;::::1;15754:21:4::0;15811:2;15791:18;;;15784:30;15850:32;15830:18;;;15823:60;15900:18;;10503:47:0::1;15570:354:4::0;10503:47:0::1;10620:11;::::0;10577:10:::1;::::0;-1:-1:-1;10577:10:0;;10620:18:::1;::::0;10632:6;;10620:18:::1;:::i;:::-;10604:39;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10593:50;;;;;10656:4;10648:41;;;::::0;-1:-1:-1;;;10648:41:0;;16131:2:4;10648:41:0::1;::::0;::::1;16113:21:4::0;16170:2;16150:18;;;16143:30;16209:26;16189:18;;;16182:54;16253:18;;10648:41:0::1;15929:348:4::0;10648:41:0::1;10731:11;::::0;10765:7:::1;::::0;10724:49:::1;::::0;-1:-1:-1;;;10724:49:0;;10753:10:::1;10724:49;::::0;::::1;5085:51:4::0;5152:18;;;5145:34;;;;-1:-1:-1;;;;;10731:11:0;;::::1;::::0;10724:28:::1;::::0;5058:18:4;;10724:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10702:126;;;::::0;-1:-1:-1;;;10702:126:0;;16484:2:4;10702:126:0::1;::::0;::::1;16466:21:4::0;16523:2;16503:18;;;16496:30;16562:29;16542:18;;;16535:57;16609:18;;10702:126:0::1;16282:351:4::0;10702:126:0::1;10068:768;;;10020:816::o:0;930:203:3:-;1002:4;-1:-1:-1;;;;;1027:21:3;;1019:68;;;;-1:-1:-1;;;1019:68:3;;16840:2:4;1019:68:3;;;16822:21:4;16879:2;16859:18;;;16852:30;16918:34;16898:18;;;16891:62;-1:-1:-1;;;16969:18:4;;;16962:32;17011:19;;1019:68:3;16638:398:4;1019:68:3;-1:-1:-1;;;;;;1105:20:3;:11;:20;;;;;;;;;;;;;;;930:203::o;3612:127:0:-;3668:28;:15;3688:7;3668:19;:28::i;:::-;3712:19;;-1:-1:-1;;;;;374:32:4;;356:51;;3712:19:0;;344:2:4;329:18;3712:19:0;;;;;;;;3612:127;:::o;3747:135::-;3806:31;:15;3829:7;3806:22;:31::i;:::-;3853:21;;-1:-1:-1;;;;;374:32:4;;356:51;;3853:21:0;;344:2:4;329:18;3853:21:0;196:217:4;394:178:3;472:18;476:4;482:7;472:3;:18::i;:::-;471:19;463:63;;;;-1:-1:-1;;;463:63:3;;17243:2:4;463:63:3;;;17225:21:4;17282:2;17262:18;;;17255:30;17321:33;17301:18;;;17294:61;17372:18;;463:63:3;17041:355:4;463:63:3;-1:-1:-1;;;;;537:20:3;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;537:27:3;560:4;537:27;;;394:178::o;652:183::-;732:18;736:4;742:7;732:3;:18::i;:::-;724:64;;;;-1:-1:-1;;;724:64:3;;17603:2:4;724:64:3;;;17585:21:4;17642:2;17622:18;;;17615:30;17681:34;17661:18;;;17654:62;-1:-1:-1;;;17732:18:4;;;17725:31;17773:19;;724:64:3;17401:397:4;724:64:3;-1:-1:-1;;;;;799:20:3;822:5;799:20;;;;;;;;;;;:28;;-1:-1:-1;;799:28:3;;;652:183::o;418:180:4:-;477:6;530:2;518:9;509:7;505:23;501:32;498:52;;;546:1;543;536:12;498:52;-1:-1:-1;569:23:4;;418:180;-1:-1:-1;418:180:4:o;927:131::-;-1:-1:-1;;;;;1002:31:4;;992:42;;982:70;;1048:1;1045;1038:12;1063:247;1122:6;1175:2;1163:9;1154:7;1150:23;1146:32;1143:52;;;1191:1;1188;1181:12;1143:52;1230:9;1217:23;1249:31;1274:5;1249:31;:::i;:::-;1299:5;1063:247;-1:-1:-1;;;1063:247:4:o;3189:410::-;3391:2;3373:21;;;3430:2;3410:18;;;3403:30;3469:34;3464:2;3449:18;;3442:62;-1:-1:-1;;;3535:2:4;3520:18;;3513:44;3589:3;3574:19;;3189:410::o;3604:344::-;3806:2;3788:21;;;3845:2;3825:18;;;3818:30;-1:-1:-1;;;3879:2:4;3864:18;;3857:50;3939:2;3924:18;;3604:344::o;3953:127::-;4014:10;4009:3;4005:20;4002:1;3995:31;4045:4;4042:1;4035:15;4069:4;4066:1;4059:15;4085:125;4150:9;;;4171:10;;;4168:36;;;4184:18;;:::i;5190:277::-;5257:6;5310:2;5298:9;5289:7;5285:23;5281:32;5278:52;;;5326:1;5323;5316:12;5278:52;5358:9;5352:16;5411:5;5404:13;5397:21;5390:5;5387:32;5377:60;;5433:1;5430;5423:12;6569:168;6642:9;;;6673;;6690:15;;;6684:22;;6670:37;6660:71;;6711:18;;:::i;6742:127::-;6803:10;6798:3;6794:20;6791:1;6784:31;6834:4;6831:1;6824:15;6858:4;6855:1;6848:15;6874:120;6914:1;6940;6930:35;;6945:18;;:::i;:::-;-1:-1:-1;6979:9:4;;6874:120::o;8346:128::-;8413:9;;;8434:11;;;8431:37;;;8448:18;;:::i;11630:501::-;11933:2;11922:9;11915:21;11972:1;11967:2;11956:9;11952:18;11945:29;-1:-1:-1;;;12005:2:4;11994:9;11990:18;11983:33;12054:3;12047:4;12036:9;12032:20;12025:33;11896:4;12075:50;12120:3;12109:9;12105:19;11551:1;11539:14;;-1:-1:-1;;;11578:4:4;11569:14;;11562:29;11616:2;11607:12;;11474:151;12136:663;12237:6;12290:2;12278:9;12269:7;12265:23;12261:32;12258:52;;;12306:1;12303;12296:12;12258:52;12339:2;12333:9;12381:2;12373:6;12369:15;12450:6;12438:10;12435:22;12414:18;12402:10;12399:34;12396:62;12393:185;;;12500:10;12495:3;12491:20;12488:1;12481:31;12535:4;12532:1;12525:15;12563:4;12560:1;12553:15;12393:185;12598:10;12594:2;12587:22;;12639:9;12633:16;12625:6;12618:32;12704:2;12693:9;12689:18;12683:25;12678:2;12670:6;12666:15;12659:50;12763:2;12752:9;12748:18;12742:25;12737:2;12729:6;12725:15;12718:50;12787:6;12777:16;;;12136:663;;;;:::o;13168:112::-;13200:1;13226;13216:35;;13231:18;;:::i;:::-;-1:-1:-1;13265:9:4;;13168:112::o;13285:501::-;13588:2;13577:9;13570:21;13627:1;13622:2;13611:9;13607:18;13600:29;-1:-1:-1;;;13660:2:4;13649:9;13645:18;13638:33;13709:3;13702:4;13691:9;13687:20;13680:33;13551:4;13730:50;13775:3;13764:9;13760:19;11551:1;11539:14;;-1:-1:-1;;;11578:4:4;11569:14;;11562:29;11616:2;11607:12;;11474:151
Swarm Source
ipfs://69431d6c2629e1ccf808c1864b535ae1091a31eeffecd6833c14a1777b47ecb0
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.