Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 109 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 24591120 | 36 hrs ago | IN | 0 ETH | 0.00009564 | ||||
| Approve | 24589674 | 41 hrs ago | IN | 0 ETH | 0.00023444 | ||||
| Approve | 24587038 | 2 days ago | IN | 0 ETH | 0.00000713 | ||||
| Approve | 24565145 | 5 days ago | IN | 0 ETH | 0.00000886 | ||||
| Approve | 24546455 | 7 days ago | IN | 0 ETH | 0.0001416 | ||||
| Approve | 24539097 | 8 days ago | IN | 0 ETH | 0.00007372 | ||||
| Approve | 24537157 | 9 days ago | IN | 0 ETH | 0.00000743 | ||||
| Transfer | 24537151 | 9 days ago | IN | 0 ETH | 0.00078238 | ||||
| Transfer | 24537145 | 9 days ago | IN | 0 ETH | 0.00292987 | ||||
| Approve | 24536573 | 9 days ago | IN | 0 ETH | 0.00028384 | ||||
| Transfer | 24535695 | 9 days ago | IN | 0 ETH | 0.00232444 | ||||
| Approve | 24535306 | 9 days ago | IN | 0 ETH | 0.00013724 | ||||
| Approve | 24533313 | 9 days ago | IN | 0 ETH | 0.000376 | ||||
| Approve | 24532270 | 9 days ago | IN | 0 ETH | 0.00014111 | ||||
| Approve | 24531329 | 9 days ago | IN | 0 ETH | 0.00014169 | ||||
| Approve | 24529593 | 10 days ago | IN | 0 ETH | 0.00111848 | ||||
| Transfer | 24529588 | 10 days ago | IN | 0 ETH | 0.00257578 | ||||
| Approve | 24529191 | 10 days ago | IN | 0 ETH | 0.00014176 | ||||
| Approve | 24528631 | 10 days ago | IN | 0 ETH | 0.00014273 | ||||
| Approve | 24528602 | 10 days ago | IN | 0 ETH | 0.00023539 | ||||
| Approve | 24528418 | 10 days ago | IN | 0 ETH | 0.00023676 | ||||
| Approve | 24527899 | 10 days ago | IN | 0 ETH | 0.00015352 | ||||
| Approve | 24527651 | 10 days ago | IN | 0 ETH | 0.00024846 | ||||
| Approve | 24527486 | 10 days ago | IN | 0 ETH | 0.00015487 | ||||
| Approve | 24526360 | 10 days ago | IN | 0 ETH | 0.00000317 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 24591775 | 34 hrs ago | 0.00045775 ETH | ||||
| Transfer | 24591775 | 34 hrs ago | 0.00045775 ETH | ||||
| Deposit | 24591775 | 34 hrs ago | 0.00091551 ETH | ||||
| Transfer | 24591775 | 34 hrs ago | 0.00183103 ETH | ||||
| Transfer | 24591122 | 36 hrs ago | 0.00042975 ETH | ||||
| Transfer | 24591122 | 36 hrs ago | 0.00042975 ETH | ||||
| Deposit | 24591122 | 36 hrs ago | 0.00085951 ETH | ||||
| Transfer | 24591122 | 36 hrs ago | 0.00171903 ETH | ||||
| Transfer | 24590358 | 39 hrs ago | 0.00087023 ETH | ||||
| Transfer | 24590358 | 39 hrs ago | 0.00043399 ETH | ||||
| Deposit | 24590358 | 39 hrs ago | 0.00086799 ETH | ||||
| Transfer | 24590358 | 39 hrs ago | 0.00173599 ETH | ||||
| Transfer | 24590357 | 39 hrs ago | 0.00043623 ETH | ||||
| Deposit | 24590357 | 39 hrs ago | 0.00087247 ETH | ||||
| Transfer | 24590357 | 39 hrs ago | 0.00174495 ETH | ||||
| Transfer | 24589939 | 40 hrs ago | 0.00042558 ETH | ||||
| Transfer | 24589939 | 40 hrs ago | 0.00042558 ETH | ||||
| Deposit | 24589939 | 40 hrs ago | 0.00085116 ETH | ||||
| Transfer | 24589939 | 40 hrs ago | 0.00170232 ETH | ||||
| Transfer | 24589923 | 40 hrs ago | 0.00046194 ETH | ||||
| Transfer | 24589923 | 40 hrs ago | 0.00046194 ETH | ||||
| Deposit | 24589923 | 40 hrs ago | 0.00092388 ETH | ||||
| Transfer | 24589923 | 40 hrs ago | 0.00184777 ETH | ||||
| Transfer | 24589733 | 41 hrs ago | 0.00046604 ETH | ||||
| Transfer | 24589733 | 41 hrs ago | 0.00046604 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
BabyKimchiCoin
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2026-02-24
*/
/*
https://t.me/BABYKIMCHIETH
https://x.com/BABYKIMCHIETH
https://babykimchi.wtf
*/
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.24;
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address _owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this;
return msg.data;
}
}
contract Ownable is Context {
address public _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
authorizations[_owner] = true;
emit OwnershipTransferred(address(0), msgSender);
}
mapping (address => bool) internal authorizations;
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IDEXFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IDEXRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
interface IDividendDistributor {
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
function setShare(address shareholder, uint256 amount) external;
function deposit() external payable;
function process(uint256 gas) external;
}
contract DividendDistributor is IDividendDistributor {
using SafeMath for uint256;
address _token;
struct Share {
uint256 amount;
uint256 totalExcluded;
uint256 totalRealised;
}
IERC20 rewardtoken = IERC20(0xfCCD6fBCa272B4cc11069402F4123b070B7838F9);
address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
IDEXRouter router;
address[] shareholders;
mapping (address => uint256) shareholderIndexes;
mapping (address => uint256) shareholderClaims;
mapping (address => Share) public shares;
uint256 public totalShares;
uint256 public totalDividends;
uint256 public totalDistributed;
uint256 public dividendsPerShare;
uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;
uint256 public minPeriod = 45 * 60;
uint256 public minDistribution = 1 * (10 ** 6);
uint256 currentIndex;
bool initialized;
modifier initialization() {
require(!initialized);
_;
initialized = true;
}
modifier onlyToken() {
require(msg.sender == _token); _;
}
constructor (address _router) {
router = _router != address(0)
? IDEXRouter(_router)
: IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
_token = msg.sender;
}
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
minPeriod = _minPeriod;
minDistribution = _minDistribution;
}
function setRewardToken(address _rewardToken) external onlyToken{
rewardtoken = IERC20(_rewardToken);
}
function setShare(address shareholder, uint256 amount) external override onlyToken {
if(shares[shareholder].amount > 0){
distributeDividend(shareholder);
}
if(amount > 0 && shares[shareholder].amount == 0){
addShareholder(shareholder);
}else if(amount == 0 && shares[shareholder].amount > 0){
removeShareholder(shareholder);
}
totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
shares[shareholder].amount = amount;
shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
}
function deposit() external payable override onlyToken {
uint256 balanceBefore = rewardtoken.balanceOf(address(this));
address[] memory path = new address[](2);
path[0] = WETH;
path[1] = address(rewardtoken);
router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
0,
path,
address(this),
block.timestamp
);
uint256 amount = rewardtoken.balanceOf(address(this)).sub(balanceBefore);
totalDividends = totalDividends.add(amount);
dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
}
function process(uint256 gas) external override onlyToken {
uint256 shareholderCount = shareholders.length;
if(shareholderCount == 0) { return; }
uint256 gasUsed = 0;
uint256 gasLeft = gasleft();
uint256 iterations = 0;
while(gasUsed < gas && iterations < shareholderCount) {
if(currentIndex >= shareholderCount){
currentIndex = 0;
}
if(shouldDistribute(shareholders[currentIndex])){
distributeDividend(shareholders[currentIndex]);
}
gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
gasLeft = gasleft();
currentIndex++;
iterations++;
}
}
function shouldDistribute(address shareholder) internal view returns (bool) {
return shareholderClaims[shareholder] + minPeriod < block.timestamp
&& getUnpaidEarnings(shareholder) > minDistribution;
}
function distributeDividend(address shareholder) internal {
if(shares[shareholder].amount == 0){ return; }
uint256 amount = getUnpaidEarnings(shareholder);
if(amount > 0){
totalDistributed = totalDistributed.add(amount);
rewardtoken.transfer(shareholder, amount);
shareholderClaims[shareholder] = block.timestamp;
shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
}
}
function claimDividend(address shareholder) external onlyToken{
distributeDividend(shareholder);
}
function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyToken returns (bool success){
return IERC20(tokenAddress).transfer(_receiver, tokens);
}
function getUnpaidEarnings(address shareholder) public view returns (uint256) {
if(shares[shareholder].amount == 0){ return 0; }
uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
return shareholderTotalDividends.sub(shareholderTotalExcluded);
}
function getCumulativeDividends(uint256 share) internal view returns (uint256) {
return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
}
function addShareholder(address shareholder) internal {
shareholderIndexes[shareholder] = shareholders.length;
shareholders.push(shareholder);
}
function removeShareholder(address shareholder) internal {
shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
shareholders.pop();
}
}
contract BabyKimchiCoin is Ownable, IERC20 {
using SafeMath for uint256;
address WETH;
address rewardtoken = 0xfCCD6fBCa272B4cc11069402F4123b070B7838F9;
address DEAD = 0x000000000000000000000000000000000000dEaD;
address ZERO = 0x0000000000000000000000000000000000000000;
string constant _name = "Baby Kimchi Coin";
string constant _symbol = "BABYKIMCHI";
uint8 constant _decimals = 9;
uint256 _totalSupply = 1 * 10**13 * 10**_decimals;
uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
uint256 public _maxWalletToken = _totalSupply.mul(2).div(100);
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) _allowances;
mapping (address => bool) isFeeExempt;
mapping (address => bool) isTxLimitExempt;
mapping (address => bool) public isDividendExempt;
uint256 private liquidityFee = 1;
uint256 private rewardFee = 2;
uint256 private marketingFee = 0;
uint256 private ecosystemFee = 1;
uint256 private devFee = 0;
uint256 private burnFee = 0;
uint256 public totalFee = marketingFee + rewardFee + liquidityFee + ecosystemFee + burnFee + devFee;
uint256 private feeDenominator = 100;
uint256 sellMultiplier = 100;
uint256 buyMultiplier = 100;
uint256 transferMultiplier = 900;
address private autoLiquidityReceiver;
address public marketingFeeReceiver;
address private ecosystemFeeReceiver;
address private devFeeReceiver;
address private burnFeeReceiver;
uint256 targetLiquidity = 20;
uint256 targetLiquidityDenominator = 100;
IDEXRouter public router;
address public pair;
bool public tradingOpen = false;
uint256 launchblock;
DividendDistributor private distributor;
uint256 distributorGas = 5000000;
bool public swapEnabled = true;
uint256 public swapThreshold = _totalSupply * 8 / 1000;
bool inSwap;
modifier swapping() { inSwap = true; _; inSwap = false; }
constructor () {
router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
WETH = router.WETH();
pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
_allowances[address(this)][address(router)] = type(uint256).max;
distributor = new DividendDistributor(address(router));
isFeeExempt[msg.sender] = true;
isFeeExempt[marketingFeeReceiver] = true;
isTxLimitExempt[msg.sender] = true;
isTxLimitExempt[marketingFeeReceiver] = true;
isTxLimitExempt[pair] = true;
isTxLimitExempt[address(this)] = true;
isDividendExempt[pair] = true;
isDividendExempt[address(this)] = true;
isDividendExempt[DEAD] = true;
autoLiquidityReceiver = msg.sender;
marketingFeeReceiver = msg.sender;
ecosystemFeeReceiver = msg.sender;
devFeeReceiver = msg.sender;
burnFeeReceiver = DEAD;
_balances[msg.sender] = _totalSupply;
emit Transfer(address(0), msg.sender, _totalSupply);
}
receive() external payable { }
function totalSupply() external view override returns (uint256) { return _totalSupply; }
function decimals() external pure override returns (uint8) { return _decimals; }
function symbol() external pure override returns (string memory) { return _symbol; }
function name() external pure override returns (string memory) { return _name; }
function getOwner() external view override returns (address) {return owner();}
function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
function approve(address spender, uint256 amount) public override returns (bool) {
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function approveMax(address spender) external returns (bool) {
return approve(spender, type(uint256).max);
}
function transfer(address recipient, uint256 amount) external override returns (bool) {
return _transferFrom(msg.sender, recipient, amount);
}
function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
if(_allowances[sender][msg.sender] != type(uint256).max){
_allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
}
return _transferFrom(sender, recipient, amount);
}
function SetMaxWalletPercent(uint256 maxWallPercent_base1000) external onlyOwner {
require(_maxWalletToken >= _totalSupply / 1000);
_maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000;
}
function SetMaxTxPercent(uint256 maxTXPercentage_base1000) external onlyOwner {
require(_maxTxAmount >= _totalSupply / 1000);
_maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
}
function removelimits() external onlyOwner {
_maxWalletToken = _totalSupply;
_maxTxAmount = _totalSupply;
}
function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
if(inSwap){ return _basicTransfer(sender, recipient, amount); }
if(!authorizations[sender] && !authorizations[recipient]){
require(tradingOpen,"Trading not open yet");
}
if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != burnFeeReceiver && !isTxLimitExempt[recipient]){
uint256 heldTokens = balanceOf(recipient);
require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
checkTxLimit(sender, amount);
if(shouldSwapBack()){ swapBack(); }
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);
_balances[recipient] = _balances[recipient].add(amountReceived);
if(!isDividendExempt[sender]) {
try distributor.setShare(sender, _balances[sender]) {} catch {}
}
if(!isDividendExempt[recipient]) {
try distributor.setShare(recipient, _balances[recipient]) {} catch {}
}
if(rewardFee > 0){
try distributor.process(distributorGas) {} catch {}
}
emit Transfer(sender, recipient, amountReceived);
return true;
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function checkTxLimit(address sender, uint256 amount) internal view {
require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
}
function shouldTakeFee(address sender) internal view returns (bool) {
return !isFeeExempt[sender];
}
function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
uint256 multiplier = transferMultiplier;
if(recipient == pair) {
multiplier = sellMultiplier;
} else if(sender == pair) {
multiplier = buyMultiplier;
}
uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
uint256 contractTokens = feeAmount.sub(burnTokens);
_balances[address(this)] = _balances[address(this)].add(contractTokens);
_balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
emit Transfer(sender, address(this), contractTokens);
if(burnTokens > 0){
emit Transfer(sender, burnFeeReceiver, burnTokens);
}
return amount.sub(feeAmount);
}
function shouldSwapBack() internal view returns (bool) {
return msg.sender != pair
&& !inSwap
&& swapEnabled
&& _balances[address(this)] >= swapThreshold;
}
function clearforeignToken(address tokenAddress, uint256 tokens) external returns (bool success) {
require(isTxLimitExempt[msg.sender]);
if(tokens == 0){
tokens = IERC20(tokenAddress).balanceOf(address(this));
}
return IERC20(tokenAddress).transfer(msg.sender, tokens);
}
function setRewardToken(address _rewardToken) external onlyOwner {
distributor.setRewardToken(_rewardToken);
}
function setMultiplier(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
sellMultiplier = _sell;
buyMultiplier = _buy;
transferMultiplier = _trans;
}
function allowTrading() external onlyOwner {
sellMultiplier = 400;
buyMultiplier = 300;
tradingOpen = true;
}
function transfer() external {
payable(msg.sender).transfer(address(this).balance);
}
function swapBack() internal swapping {
uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
uint256 amountToSwap = swapThreshold.sub(amountToLiquify);
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WETH;
uint256 balanceBefore = address(this).balance;
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
amountToSwap,
0,
path,
address(this),
block.timestamp
);
uint256 amountETH = address(this).balance.sub(balanceBefore);
uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
uint256 amountETHreward = amountETH.mul(rewardFee).div(totalETHFee);
uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
uint256 amountETHecosystem = amountETH.mul(ecosystemFee).div(totalETHFee);
uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);
try distributor.deposit{value: amountETHreward}() {} catch {}
(bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
(tmpSuccess,) = payable(ecosystemFeeReceiver).call{value: amountETHecosystem, gas: 30000}("");
(tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev, gas: 30000}("");
tmpSuccess = false;
if(amountToLiquify > 0){
router.addLiquidityETH{value: amountETHLiquidity}(
address(this),
amountToLiquify,
0,
0,
autoLiquidityReceiver,
block.timestamp
);
emit AutoLiquify(amountETHLiquidity, amountToLiquify);
}
}
function setIsDividendExempt(address holder, bool exempt) public onlyOwner {
require(holder != address(this) && holder != pair);
isDividendExempt[holder] = exempt;
if(exempt){
distributor.setShare(holder, 0);
}else{
distributor.setShare(holder, _balances[holder]);
}
}
function setIsFeeExempt(address[] calldata addresses, bool status) public onlyOwner {
for (uint256 i; i < addresses.length; ++i) {
isFeeExempt[addresses[i]] = status;
}
}
function setIsTxLimitExempt(address[] calldata addresses, bool status) public onlyOwner {
for (uint256 i; i < addresses.length; ++i) {
isTxLimitExempt[addresses[i]] = status;
}
}
function setPresalePartner(address holder, bool exempt) external onlyOwner {
isFeeExempt[holder] = exempt;
isTxLimitExempt[holder] = exempt;
}
function setFees(uint256 _liquidityFee, uint256 _rewardFee, uint256 _marketingFee, uint256 _ecosystemFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) public onlyOwner {
liquidityFee = _liquidityFee;
rewardFee = _rewardFee;
marketingFee = _marketingFee;
ecosystemFee = _ecosystemFee;
devFee = _devFee;
burnFee = _burnFee;
totalFee = _liquidityFee + _rewardFee + _marketingFee + _ecosystemFee + _burnFee + _devFee;
feeDenominator = _feeDenominator;
require(totalFee < feeDenominator/2, "Fees cannot be more than 49%");
}
function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _ecosystemFeeReceiver, address _burnFeeReceiver, address _devFeeReceiver ) public onlyOwner {
autoLiquidityReceiver = _autoLiquidityReceiver;
marketingFeeReceiver = _marketingFeeReceiver;
ecosystemFeeReceiver = _ecosystemFeeReceiver;
burnFeeReceiver = _burnFeeReceiver;
devFeeReceiver = _devFeeReceiver;
}
function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
swapEnabled = _enabled;
swapThreshold = _amount;
}
function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner {
targetLiquidity = _target;
targetLiquidityDenominator = _denominator;
}
function setDistributorSettings(uint256 gas) external onlyOwner {
require(gas < 750000);
distributorGas = gas;
}
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) public onlyOwner {
distributor.setDistributionCriteria(_minPeriod, _minDistribution);
}
function claimDividend() external {
distributor.claimDividend(msg.sender);
}
function rescueDToken(address tokenAddress,address _receiver, uint256 tokens) external returns (bool success) {
require(isTxLimitExempt[msg.sender]);
return distributor.rescueToken(tokenAddress, _receiver,tokens);
}
function getCirculatingSupply() public view returns (uint256) {
return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
}
function getLiquidityBacking(uint256 accuracy) private view returns (uint256) {
return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
}
function isOverLiquified(uint256 target, uint256 accuracy) private view returns (bool) {
return getLiquidityBacking(accuracy) > target;
}
event AutoLiquify(uint256 amountETH, uint256 amountTokens);
}
//Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"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"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"SetMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"SetMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearforeignToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removelimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueDToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_ecosystemFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_ecosystemFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setPresalePartner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardToken","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052600380546001600160a01b031990811673fccd6fbca272b4cc11069402f4123b070b7838f91790915560048054821661dead179055600580549091169055620000506009600a6200074e565b62000062906509184e72a0006200075e565b600681905562000083906064906200007c9060026200051d565b90620005b0565b6007556006546200009e906064906200007c9060026200051d565b6008556001600e556002600f555f60105560016011555f6012555f601355601254601354601154600e54600f54601054620000da919062000778565b620000e6919062000778565b620000f2919062000778565b620000fe919062000778565b6200010a919062000778565b60149081556064601581905560168190556017819055610384601855601e91909155601f556021805460ff60a01b19169055624c4b406024556025805460ff191660011790556006546103e890620001649060086200075e565b6200017091906200078e565b6026553480156200017f575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081178255604080516315ab88c960e31b81529051919263ad5c4648926004808401938290030181865afa15801562000237573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025d9190620007ae565b600280546001600160a01b0319166001600160a01b03928316179055602080546040805163c45a015560e01b81529051919093169263c45a01559260048083019391928290030181865afa158015620002b8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002de9190620007ae565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af11580156200032d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003539190620007ae565b602180546001600160a01b0319166001600160a01b03928316179055305f908152600a602090815260408083208254851684528252918290205f199055549051911690620003a19062000633565b6001600160a01b039091168152602001604051809103905ff080158015620003cb573d5f803e3d5ffd5b50602380546001600160a01b039283166001600160a01b031991821617909155335f818152600b60209081526040808320805460ff199081166001908117909255601a8054891686528386208054831684179055868652600c855283862080548316841790558054891686528386208054831684179055602180548a168752848720805484168517905530808852858820805485168617905590548a168752600d8652848720805484168517905586528386208054831684179055600480548a1687528487208054909316909317909155601980548816871790558054871686179055601b8054871686179055601c805487168617905554601d8054909616961695909517909355600654828252600984528482208190559351938452909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000824565b5f825f036200052e57505f620005aa565b5f6200053b83856200075e565b9050826200054a85836200078e565b14620005a75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f620005a783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620005f960201b60201c565b5f81836200061c5760405162461bcd60e51b81526004016200059e9190620007d6565b505f6200062a84866200078e565b95945050505050565b61110c8062002fe483390190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200069557815f190482111562000679576200067962000641565b808516156200068757918102915b93841c93908002906200065a565b509250929050565b5f82620006ad57506001620005aa565b81620006bb57505f620005aa565b8160018114620006d45760028114620006df57620006ff565b6001915050620005aa565b60ff841115620006f357620006f362000641565b50506001821b620005aa565b5060208310610133831016604e8410600b841016171562000724575081810a620005aa565b62000730838362000655565b805f190482111562000746576200074662000641565b029392505050565b5f620005a760ff8416836200069d565b8082028115828204841417620005aa57620005aa62000641565b80820180821115620005aa57620005aa62000641565b5f82620007a957634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620007bf575f80fd5b81516001600160a01b0381168114620005a7575f80fd5b5f602080835283518060208501525f5b818110156200080457858101830151858201604001528201620007e6565b505f604082860101526040601f19601f8301168501019250505092915050565b6127b280620008325f395ff3fe608060405260043610610278575f3560e01c8063893d20e81161014a578063da2e3bad116100be578063f0fc6bca11610078578063f0fc6bca14610797578063f2fde38b146107ab578063f543df45146107ca578063f708a64f146107e9578063f887ea4014610808578063ffb54a9914610827575f80fd5b8063da2e3bad146106b8578063dd62ed3e146106d7578063df20fd491461071b578063dfc3dce21461073a578063e96fada214610759578063ee19828a14610778575f80fd5b80639d1944f51161010f5780639d1944f5146105ff578063a8aa1b311461061e578063a9059cbb1461063d578063a91deb1d1461065c578063b2bdfa7b1461067b578063c6501c8914610699575f80fd5b8063893d20e81461054e5780638a4068dd1461057e5780638aee8127146105925780638da5cb5b146105b157806395d89b41146105cd575f80fd5b8063313ce567116101ec5780636b1ebc54116101a65780636b1ebc54146104a45780636ddd1713146104c357806370a08231146104dc578063715018a61461051057806378109e54146105245780637d1db4a514610539575f80fd5b8063313ce567146103ea5780634355855a146104055780635074f36f14610433578063570636dc14610452578063571ac8b0146104715780635e4ae81b14610490575f80fd5b80631df4ccfc1161023d5780631df4ccfc14610350578063201e79911461036557806323b872dd146103845780632b112e49146103a35780632d48e896146103b75780632e5b4c43146103d6575f80fd5b80630445b6671461028357806306fdde03146102ab578063095ea7b3146102ec57806318160ddd1461031b57806318abb6351461032f575f80fd5b3661027f57005b5f80fd5b34801561028e575f80fd5b5061029860265481565b6040519081526020015b60405180910390f35b3480156102b6575f80fd5b5060408051808201909152601081526f2130b13c9025b4b6b1b4349021b7b4b760811b60208201525b6040516102a291906122de565b3480156102f7575f80fd5b5061030b610306366004612345565b610847565b60405190151581526020016102a2565b348015610326575f80fd5b50600654610298565b34801561033a575f80fd5b5061034e61034936600461236d565b6108b3565b005b34801561035b575f80fd5b5061029860145481565b348015610370575f80fd5b5061034e61037f3660046123ce565b610944565b34801561038f575f80fd5b5061030b61039e3660046123ee565b610978565b3480156103ae575f80fd5b50610298610a36565b3480156103c2575f80fd5b5061034e6103d13660046123ce565b610a86565b3480156103e1575f80fd5b5061034e610b14565b3480156103f5575f80fd5b50604051600981526020016102a2565b348015610410575f80fd5b5061030b61041f366004612427565b600d6020525f908152604090205460ff1681565b34801561043e575f80fd5b5061034e61044d36600461244d565b610b5e565b34801561045d575f80fd5b5061034e61046c3660046124cc565b610bf1565b34801561047c575f80fd5b5061030b61048b366004612427565b610c58565b34801561049b575f80fd5b5061034e610c64565b3480156104af575f80fd5b5061034e6104be36600461244d565b610c9a565b3480156104ce575f80fd5b5060255461030b9060ff1681565b3480156104e7575f80fd5b506102986104f6366004612427565b6001600160a01b03165f9081526009602052604090205490565b34801561051b575f80fd5b5061034e610d27565b34801561052f575f80fd5b5061029860085481565b348015610544575f80fd5b5061029860075481565b348015610559575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102a2565b348015610589575f80fd5b5061034e610d98565b34801561059d575f80fd5b5061034e6105ac366004612427565b610dc4565b3480156105bc575f80fd5b505f546001600160a01b0316610566565b3480156105d8575f80fd5b5060408051808201909152600a815269424142594b494d43484960b01b60208201526102df565b34801561060a575f80fd5b5061034e6106193660046124cc565b610e4a565b348015610629575f80fd5b50602154610566906001600160a01b031681565b348015610648575f80fd5b5061030b610657366004612345565b610e86565b348015610667575f80fd5b5061034e6106763660046124e3565b610e92565b348015610686575f80fd5b505f54610566906001600160a01b031681565b3480156106a4575f80fd5b5061030b6106b33660046123ee565b610ef8565b3480156106c3575f80fd5b5061034e6106d2366004612518565b610f8e565b3480156106e2575f80fd5b506102986106f136600461255f565b6001600160a01b039182165f908152600a6020908152604080832093909416825291909152205490565b348015610726575f80fd5b5061034e610735366004612590565b611077565b348015610745575f80fd5b5061034e6107543660046124cc565b6110b7565b348015610764575f80fd5b50601a54610566906001600160a01b031681565b348015610783575f80fd5b5061034e6107923660046125ac565b61111e565b3480156107a2575f80fd5b5061034e611158565b3480156107b6575f80fd5b5061034e6107c5366004612427565b6111ac565b3480156107d5575f80fd5b5061030b6107e4366004612345565b611293565b3480156107f4575f80fd5b5061034e6108033660046124e3565b61138b565b348015610813575f80fd5b50602054610566906001600160a01b031681565b348015610832575f80fd5b5060215461030b90600160a01b900460ff1681565b335f818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108a19086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146108e55760405162461bcd60e51b81526004016108dc906125d5565b60405180910390fd5b601980546001600160a01b03199081166001600160a01b0397881617909155601a8054821695871695909517909455601b8054851693861693909317909255601d80548416918516919091179055601c80549092169216919091179055565b5f546001600160a01b0316331461096d5760405162461bcd60e51b81526004016108dc906125d5565b601e91909155601f55565b6001600160a01b0383165f908152600a602090815260408083203384529091528120545f1914610a21576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600a825283812033825290915291909120546109fd918490611493565b6001600160a01b0385165f908152600a602090815260408083203384529091529020555b610a2c8484846114cb565b90505b9392505050565b6005546001600160a01b03165f90815260096020526040812054610a81906004546001600160a01b03165f90815260096020526040902054610a7b90600654906119ac565b906119ac565b905090565b5f546001600160a01b03163314610aaf5760405162461bcd60e51b81526004016108dc906125d5565b6023546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b5f604051808303815f87803b158015610afa575f80fd5b505af1158015610b0c573d5f803e3d5ffd5b505050505050565b5f546001600160a01b03163314610b3d5760405162461bcd60e51b81526004016108dc906125d5565b61019060165561012c6017556021805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610b875760405162461bcd60e51b81526004016108dc906125d5565b5f5b82811015610beb5781600b5f868685818110610ba757610ba761260a565b9050602002016020810190610bbc9190612427565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610b89565b50505050565b5f546001600160a01b03163314610c1a5760405162461bcd60e51b81526004016108dc906125d5565b6103e8600654610c2a9190612632565b6007541015610c37575f80fd5b6103e881600654610c489190612651565b610c529190612632565b60075550565b5f6108ad825f19610847565b5f546001600160a01b03163314610c8d5760405162461bcd60e51b81526004016108dc906125d5565b6006546008819055600755565b5f546001600160a01b03163314610cc35760405162461bcd60e51b81526004016108dc906125d5565b5f5b82811015610beb5781600c5f868685818110610ce357610ce361260a565b9050602002016020810190610cf89190612427565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610cc5565b5f546001600160a01b03163314610d505760405162461bcd60e51b81526004016108dc906125d5565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60405133904780156108fc02915f818181858888f19350505050158015610dc1573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610ded5760405162461bcd60e51b81526004016108dc906125d5565b602354604051638aee812760e01b81526001600160a01b03838116600483015290911690638aee8127906024015f604051808303815f87803b158015610e31575f80fd5b505af1158015610e43573d5f803e3d5ffd5b5050505050565b5f546001600160a01b03163314610e735760405162461bcd60e51b81526004016108dc906125d5565b620b71b08110610e81575f80fd5b602455565b5f610a2f3384846114cb565b5f546001600160a01b03163314610ebb5760405162461bcd60e51b81526004016108dc906125d5565b6001600160a01b039091165f908152600b60209081526040808320805494151560ff199586168117909155600c9092529091208054909216179055565b335f908152600c602052604081205460ff16610f12575f80fd5b60235460405163e5711e8b60e01b81526001600160a01b0386811660048301528581166024830152604482018590529091169063e5711e8b906064016020604051808303815f875af1158015610f6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2c9190612668565b5f546001600160a01b03163314610fb75760405162461bcd60e51b81526004016108dc906125d5565b600e879055600f869055601085905560118490556012839055601382905582828587610fe38a8c612683565b610fed9190612683565b610ff79190612683565b6110019190612683565b61100b9190612683565b601455601581905561101e600282612632565b6014541061106e5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203439250000000060448201526064016108dc565b50505050505050565b5f546001600160a01b031633146110a05760405162461bcd60e51b81526004016108dc906125d5565b6025805460ff191692151592909217909155602655565b5f546001600160a01b031633146110e05760405162461bcd60e51b81526004016108dc906125d5565b6103e86006546110f09190612632565b60085410156110fd575f80fd5b6103e88160065461110e9190612651565b6111189190612632565b60085550565b5f546001600160a01b031633146111475760405162461bcd60e51b81526004016108dc906125d5565b601691909155601791909155601855565b602354604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e906024015f604051808303815f87803b15801561119a575f80fd5b505af1158015610beb573d5f803e3d5ffd5b5f546001600160a01b031633146111d55760405162461bcd60e51b81526004016108dc906125d5565b6001600160a01b03811661123a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108dc565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b335f908152600c602052604081205460ff166112ad575f80fd5b815f0361131d576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156112f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131a9190612696565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015611367573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2f9190612668565b5f546001600160a01b031633146113b45760405162461bcd60e51b81526004016108dc906125d5565b6001600160a01b03821630148015906113db57506021546001600160a01b03838116911614155b6113e3575f80fd5b6001600160a01b0382165f908152600d60205260409020805460ff1916821580159190911790915561144757602354604051630a5b654b60e11b81526001600160a01b0384811660048301525f6024830152909116906314b6ca9690604401610ae3565b6023546001600160a01b038381165f8181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610ae3565b5050565b5f81848411156114b65760405162461bcd60e51b81526004016108dc91906122de565b505f6114c284866126ad565b95945050505050565b6027545f9060ff16156114ea576114e38484846119ed565b9050610a2f565b6001600160a01b0384165f9081526001602052604090205460ff1615801561152a57506001600160a01b0383165f9081526001602052604090205460ff16155b1561157f57602154600160a01b900460ff1661157f5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108dc565b6001600160a01b0384165f9081526001602052604090205460ff161580156115b057506001600160a01b0383163014155b80156115ca57506004546001600160a01b03848116911614155b80156115e457506021546001600160a01b03848116911614155b80156115fe5750601a546001600160a01b03848116911614155b80156116185750601d546001600160a01b03848116911614155b801561163c57506001600160a01b0383165f908152600c602052604090205460ff16155b156116dc576001600160a01b0383165f908152600960205260409020546008546116668483612683565b11156116da5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016108dc565b505b6116e68483611abd565b6116ee611b25565b156116fb576116fb611b72565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526009909152919091205461174c918490611493565b6001600160a01b0385165f90815260096020908152604080832093909355600b90529081205460ff168061179757506001600160a01b0384165f908152600b602052604090205460ff165b6117ab576117a6858486611fcb565b6117ad565b825b6001600160a01b0385165f908152600960205260409020549091506117d29082612145565b6001600160a01b038086165f908152600960209081526040808320949094559188168152600d909152205460ff16611871576023546001600160a01b038681165f8181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b15801561185e575f80fd5b505af192505050801561186f575060015b505b6001600160a01b0384165f908152600d602052604090205460ff166118fd576023546001600160a01b038581165f8181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b1580156118ea575f80fd5b505af19250505080156118fb575060015b505b600f5415611967576023546024546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c4799161193d9160040190815260200190565b5f604051808303815f87803b158015611954575f80fd5b505af1925050508015611965575060015b505b836001600160a01b0316856001600160a01b03165f8051602061275d8339815191528360405161199991815260200190565b60405180910390a3506001949350505050565b5f610a2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611493565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600990915291822054611a3d918490611493565b6001600160a01b038086165f908152600960205260408082209390935590851681522054611a6b9083612145565b6001600160a01b038085165f8181526009602052604090819020939093559151908616905f8051602061275d83398151915290611aab9086815260200190565b60405180910390a35060019392505050565b60075481111580611ae557506001600160a01b0382165f908152600c602052604090205460ff165b61148f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108dc565b6021545f906001600160a01b03163314801590611b45575060275460ff16155b8015611b53575060255460ff165b8015610a81575050602654305f90815260096020526040902054101590565b6027805460ff19166001179055601e54601f545f91611b90916121a3565b611b9c57600e54611b9e565b5f5b90505f611bc76002611bc1601454611bc1866026546121b690919063ffffffff16565b90612234565b90505f611bdf826026546119ac90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611c1757611c1761260a565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611c4857611c4861260a565b6001600160a01b039283166020918202929092018101919091525460405163791ac94760e01b81524792919091169063791ac94790611c939086905f908790309042906004016126c0565b5f604051808303815f87803b158015611caa575f80fd5b505af1158015611cbc573d5f803e3d5ffd5b505050505f611cd482476119ac90919063ffffffff16565b90505f611cee611ce5886002612234565b601454906119ac565b90505f611d026002611bc18481878d6121b6565b90505f611d1e83611bc1600f54876121b690919063ffffffff16565b90505f611d3a84611bc1601054886121b690919063ffffffff16565b90505f611d5685611bc1601154896121b690919063ffffffff16565b90505f611d7286611bc16012548a6121b690919063ffffffff16565b905060235f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004015f604051808303818588803b158015611dc1575f80fd5b505af193505050508015611dd3575060015b50601a546040515f916001600160a01b03169061753090869084818181858888f193505050503d805f8114611e23576040519150601f19603f3d011682016040523d82523d5f602084013e611e28565b606091505b5050601b546040519192506001600160a01b0316906175309085905f818181858888f193505050503d805f8114611e7a576040519150601f19603f3d011682016040523d82523d5f602084013e611e7f565b606091505b5050601c546040519192506001600160a01b0316906175309084905f818181858888f193505050503d805f8114611ed1576040519150601f19603f3d011682016040523d82523d5f602084013e611ed6565b606091505b505f9250508c159050611fb25760205460195460405163f305d71960e01b8152306004820152602481018f90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990889060c40160606040518083038185885af1158015611f50573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611f759190612731565b505060408051888152602081018f90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506027805460ff191690555050505050505050505050565b6018546021545f91906001600160a01b0390811690841603611ff0575060165461200b565b6021546001600160a01b039081169086160361200b57506017545b5f61203d601554606461201e9190612651565b611bc1846120376014548a6121b690919063ffffffff16565b906121b6565b90505f61205b601454611bc1601354856121b690919063ffffffff16565b90505f61206883836119ac565b305f908152600960205260409020549091506120849082612145565b305f9081526009602052604080822092909255601d546001600160a01b0316815220546120b19083612145565b601d546001600160a01b039081165f9081526009602090815260409182902093909355518381523092918b16915f8051602061275d833981519152910160405180910390a3811561212f57601d546040518381526001600160a01b03918216918a16905f8051602061275d8339815191529060200160405180910390a35b61213987846119ac565b98975050505050505050565b5f806121518385612683565b905083811015610a2f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108dc565b5f826121ae83612275565b119392505050565b5f825f036121c557505f6108ad565b5f6121d08385612651565b9050826121dd8583612632565b14610a2f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108dc565b5f610a2f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122b2565b5f6108ad612281610a36565b6021546001600160a01b03165f90815260096020526040902054611bc1906122ab90600290612037565b85906121b6565b5f81836122d25760405162461bcd60e51b81526004016108dc91906122de565b505f6114c28486612632565b5f602080835283518060208501525f5b8181101561230a578581018301518582016040015282016122ee565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114612340575f80fd5b919050565b5f8060408385031215612356575f80fd5b61235f8361232a565b946020939093013593505050565b5f805f805f60a08688031215612381575f80fd5b61238a8661232a565b94506123986020870161232a565b93506123a66040870161232a565b92506123b46060870161232a565b91506123c26080870161232a565b90509295509295909350565b5f80604083850312156123df575f80fd5b50508035926020909101359150565b5f805f60608486031215612400575f80fd5b6124098461232a565b92506124176020850161232a565b9150604084013590509250925092565b5f60208284031215612437575f80fd5b610a2f8261232a565b8015158114610dc1575f80fd5b5f805f6040848603121561245f575f80fd5b833567ffffffffffffffff80821115612476575f80fd5b818601915086601f830112612489575f80fd5b813581811115612497575f80fd5b8760208260051b85010111156124ab575f80fd5b602092830195509350508401356124c181612440565b809150509250925092565b5f602082840312156124dc575f80fd5b5035919050565b5f80604083850312156124f4575f80fd5b6124fd8361232a565b9150602083013561250d81612440565b809150509250929050565b5f805f805f805f60e0888a03121561252e575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215612570575f80fd5b6125798361232a565b91506125876020840161232a565b90509250929050565b5f80604083850312156125a1575f80fd5b823561235f81612440565b5f805f606084860312156125be575f80fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261264c57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176108ad576108ad61261e565b5f60208284031215612678575f80fd5b8151610a2f81612440565b808201808211156108ad576108ad61261e565b5f602082840312156126a6575f80fd5b5051919050565b818103818111156108ad576108ad61261e565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156127105784516001600160a01b0316835293830193918301916001016126eb565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612743575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e10ac29584153a2dd3a61ac1a0944eccfc8f41a9975eaeb42bc56ce83af0444764736f6c634300081800336080604052600180546001600160a01b031990811673fccd6fbca272b4cc11069402f4123b070b7838f9179091556002805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556ec097ce7bc90715b34b9f1000000000600c55610a8c600d55620f4240600e55348015610077575f80fd5b5060405161110c38038061110c833981016040819052610096916100ef565b6001600160a01b0381166100be57737a250d5630b4cf539739df2c5dacb4c659f2488d6100c0565b805b600380546001600160a01b03929092166001600160a01b03199283161790555f8054909116331790555061011c565b5f602082840312156100ff575f80fd5b81516001600160a01b0381168114610115575f80fd5b9392505050565b610fe3806101295f395ff3fe6080604052600436106100ef575f3560e01c8063997664d711610087578063e5711e8b11610057578063e5711e8b14610269578063efca2eed14610298578063ffb2c479146102ad578063ffd49c84146102cc575f80fd5b8063997664d7146101e2578063ce7c2ac2146101f7578063d0e30db01461024c578063e2d2e21914610254575f80fd5b80632d48e896116100c25780632d48e8961461017a5780633a98ef39146101995780634fab0ae8146101ae5780638aee8127146101c3575f80fd5b806311ce023d146100f357806314b6ca961461011b57806315f7e05e1461013c57806328fd31981461015b575b5f80fd5b3480156100fe575f80fd5b50610108600c5481565b6040519081526020015b60405180910390f35b348015610126575f80fd5b5061013a610135366004610d60565b6102e1565b005b348015610147575f80fd5b5061013a610156366004610d88565b61044f565b348015610166575f80fd5b50610108610175366004610d88565b610470565b348015610185575f80fd5b5061013a610194366004610da1565b6104f6565b3480156101a4575f80fd5b5061010860085481565b3480156101b9575f80fd5b50610108600e5481565b3480156101ce575f80fd5b5061013a6101dd366004610d88565b610516565b3480156101ed575f80fd5b5061010860095481565b348015610202575f80fd5b50610231610211366004610d88565b60076020525f908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610112565b61013a61054d565b34801561025f575f80fd5b50610108600b5481565b348015610274575f80fd5b50610288610283366004610dc1565b61076d565b6040519015158152602001610112565b3480156102a3575f80fd5b50610108600a5481565b3480156102b8575f80fd5b5061013a6102c7366004610dfa565b6107f3565b3480156102d7575f80fd5b50610108600d5481565b5f546001600160a01b031633146102f6575f80fd5b6001600160a01b0382165f908152600760205260409020541561031c5761031c826108ee565b5f8111801561034057506001600160a01b0382165f90815260076020526040902054155b156103a557600480546001600160a01b0384165f818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556103d7565b801580156103c957506001600160a01b0382165f9081526007602052604090205415155b156103d7576103d782610a05565b6001600160a01b0382165f9081526007602052604090205460085461040791839161040191610b15565b90610b5f565b6008556001600160a01b0382165f90815260076020526040902081905561042d81610bc2565b6001600160a01b039092165f9081526007602052604090206001019190915550565b5f546001600160a01b03163314610464575f80fd5b61046d816108ee565b50565b6001600160a01b0381165f90815260076020526040812054810361049557505f919050565b6001600160a01b0382165f908152600760205260408120546104b690610bc2565b6001600160a01b0384165f908152600760205260409020600101549091508082116104e457505f9392505050565b6104ee8282610b15565b949350505050565b5f546001600160a01b0316331461050b575f80fd5b600d91909155600e55565b5f546001600160a01b0316331461052b575f80fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610562575f80fd5b6001546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156105a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105cc9190610e11565b6040805160028082526060820183529293505f929091602083019080368337505060025482519293506001600160a01b0316918391505f9061061057610610610e28565b6001600160a01b039283166020918202929092010152600180548351921691839190811061064057610640610e28565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de95903490610685905f90869030904290600401610e3c565b5f604051808303818588803b15801561069c575f80fd5b505af11580156106ae573d5f803e3d5ffd5b50506001546040516370a0823160e01b81523060048201525f945061072b93508692506001600160a01b03909116906370a0823190602401602060405180830381865afa158015610701573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107259190610e11565b90610b15565b60095490915061073b9082610b5f565b600955600854600c546107659161075c916107569085610bde565b90610c5c565b600b5490610b5f565b600b55505050565b5f80546001600160a01b03163314610783575f80fd5b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303815f875af11580156107cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ee9190610ea6565b5f546001600160a01b03163314610808575f80fd5b6004545f819003610817575050565b5f805a90505f5b848310801561082c57508381105b156108e75783600f541061083f575f600f555b6108706004600f548154811061085757610857610e28565b5f918252602090912001546001600160a01b0316610c9d565b156108a6576108a66004600f548154811061088d5761088d610e28565b5f918252602090912001546001600160a01b03166108ee565b6108bb6108b45a8490610b15565b8490610b5f565b92505a600f80549193505f6108cf83610ed9565b919050555080806108df90610ed9565b91505061081e565b5050505050565b6001600160a01b0381165f90815260076020526040812054900361090f5750565b5f61091982610470565b90508015610a0157600a5461092e9082610b5f565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af1158015610981573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a59190610ea6565b506001600160a01b0382165f90815260066020908152604080832042905560079091529020600201546109d89082610b5f565b6001600160a01b0383165f90815260076020526040902060028101919091555461042d90610bc2565b5050565b60048054610a1590600190610ef1565b81548110610a2557610a25610e28565b5f9182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a6257610a62610e28565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546004805491939291610aad90600190610ef1565b81548110610abd57610abd610e28565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556004805480610af257610af2610f04565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f610b5683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ce1565b90505b92915050565b5f80610b6b8385610f18565b905083811015610b565760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b5f610b59600c54610756600b5485610bde90919063ffffffff16565b5f825f03610bed57505f610b59565b5f610bf88385610f2b565b905082610c058583610f42565b14610b565760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bb9565b5f610b5683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d19565b600d546001600160a01b0382165f9081526006602052604081205490914291610cc69190610f18565b108015610b595750600e54610cda83610470565b1192915050565b5f8184841115610d045760405162461bcd60e51b8152600401610bb99190610f61565b505f610d108486610ef1565b95945050505050565b5f8183610d395760405162461bcd60e51b8152600401610bb99190610f61565b505f610d108486610f42565b80356001600160a01b0381168114610d5b575f80fd5b919050565b5f8060408385031215610d71575f80fd5b610d7a83610d45565b946020939093013593505050565b5f60208284031215610d98575f80fd5b610b5682610d45565b5f8060408385031215610db2575f80fd5b50508035926020909101359150565b5f805f60608486031215610dd3575f80fd5b610ddc84610d45565b9250610dea60208501610d45565b9150604084013590509250925092565b5f60208284031215610e0a575f80fd5b5035919050565b5f60208284031215610e21575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f6080820186835260206080602085015281875180845260a0860191506020890193505f5b81811015610e865784516001600160a01b031683529383019391830191600101610e61565b50506001600160a01b039690961660408501525050506060015292915050565b5f60208284031215610eb6575f80fd5b81518015158114610b56575f80fd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201610eea57610eea610ec5565b5060010190565b81810381811115610b5957610b59610ec5565b634e487b7160e01b5f52603160045260245ffd5b80820180821115610b5957610b59610ec5565b8082028115828204841417610b5957610b59610ec5565b5f82610f5c57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602080835283518060208501525f5b81811015610f8d57858101830151858201604001528201610f71565b505f604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220ef04c700acb0c45da42da8706f440ec81b507fd60c67af86802d3dba0b2ed70a64736f6c63430008180033
Deployed Bytecode
0x608060405260043610610278575f3560e01c8063893d20e81161014a578063da2e3bad116100be578063f0fc6bca11610078578063f0fc6bca14610797578063f2fde38b146107ab578063f543df45146107ca578063f708a64f146107e9578063f887ea4014610808578063ffb54a9914610827575f80fd5b8063da2e3bad146106b8578063dd62ed3e146106d7578063df20fd491461071b578063dfc3dce21461073a578063e96fada214610759578063ee19828a14610778575f80fd5b80639d1944f51161010f5780639d1944f5146105ff578063a8aa1b311461061e578063a9059cbb1461063d578063a91deb1d1461065c578063b2bdfa7b1461067b578063c6501c8914610699575f80fd5b8063893d20e81461054e5780638a4068dd1461057e5780638aee8127146105925780638da5cb5b146105b157806395d89b41146105cd575f80fd5b8063313ce567116101ec5780636b1ebc54116101a65780636b1ebc54146104a45780636ddd1713146104c357806370a08231146104dc578063715018a61461051057806378109e54146105245780637d1db4a514610539575f80fd5b8063313ce567146103ea5780634355855a146104055780635074f36f14610433578063570636dc14610452578063571ac8b0146104715780635e4ae81b14610490575f80fd5b80631df4ccfc1161023d5780631df4ccfc14610350578063201e79911461036557806323b872dd146103845780632b112e49146103a35780632d48e896146103b75780632e5b4c43146103d6575f80fd5b80630445b6671461028357806306fdde03146102ab578063095ea7b3146102ec57806318160ddd1461031b57806318abb6351461032f575f80fd5b3661027f57005b5f80fd5b34801561028e575f80fd5b5061029860265481565b6040519081526020015b60405180910390f35b3480156102b6575f80fd5b5060408051808201909152601081526f2130b13c9025b4b6b1b4349021b7b4b760811b60208201525b6040516102a291906122de565b3480156102f7575f80fd5b5061030b610306366004612345565b610847565b60405190151581526020016102a2565b348015610326575f80fd5b50600654610298565b34801561033a575f80fd5b5061034e61034936600461236d565b6108b3565b005b34801561035b575f80fd5b5061029860145481565b348015610370575f80fd5b5061034e61037f3660046123ce565b610944565b34801561038f575f80fd5b5061030b61039e3660046123ee565b610978565b3480156103ae575f80fd5b50610298610a36565b3480156103c2575f80fd5b5061034e6103d13660046123ce565b610a86565b3480156103e1575f80fd5b5061034e610b14565b3480156103f5575f80fd5b50604051600981526020016102a2565b348015610410575f80fd5b5061030b61041f366004612427565b600d6020525f908152604090205460ff1681565b34801561043e575f80fd5b5061034e61044d36600461244d565b610b5e565b34801561045d575f80fd5b5061034e61046c3660046124cc565b610bf1565b34801561047c575f80fd5b5061030b61048b366004612427565b610c58565b34801561049b575f80fd5b5061034e610c64565b3480156104af575f80fd5b5061034e6104be36600461244d565b610c9a565b3480156104ce575f80fd5b5060255461030b9060ff1681565b3480156104e7575f80fd5b506102986104f6366004612427565b6001600160a01b03165f9081526009602052604090205490565b34801561051b575f80fd5b5061034e610d27565b34801561052f575f80fd5b5061029860085481565b348015610544575f80fd5b5061029860075481565b348015610559575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102a2565b348015610589575f80fd5b5061034e610d98565b34801561059d575f80fd5b5061034e6105ac366004612427565b610dc4565b3480156105bc575f80fd5b505f546001600160a01b0316610566565b3480156105d8575f80fd5b5060408051808201909152600a815269424142594b494d43484960b01b60208201526102df565b34801561060a575f80fd5b5061034e6106193660046124cc565b610e4a565b348015610629575f80fd5b50602154610566906001600160a01b031681565b348015610648575f80fd5b5061030b610657366004612345565b610e86565b348015610667575f80fd5b5061034e6106763660046124e3565b610e92565b348015610686575f80fd5b505f54610566906001600160a01b031681565b3480156106a4575f80fd5b5061030b6106b33660046123ee565b610ef8565b3480156106c3575f80fd5b5061034e6106d2366004612518565b610f8e565b3480156106e2575f80fd5b506102986106f136600461255f565b6001600160a01b039182165f908152600a6020908152604080832093909416825291909152205490565b348015610726575f80fd5b5061034e610735366004612590565b611077565b348015610745575f80fd5b5061034e6107543660046124cc565b6110b7565b348015610764575f80fd5b50601a54610566906001600160a01b031681565b348015610783575f80fd5b5061034e6107923660046125ac565b61111e565b3480156107a2575f80fd5b5061034e611158565b3480156107b6575f80fd5b5061034e6107c5366004612427565b6111ac565b3480156107d5575f80fd5b5061030b6107e4366004612345565b611293565b3480156107f4575f80fd5b5061034e6108033660046124e3565b61138b565b348015610813575f80fd5b50602054610566906001600160a01b031681565b348015610832575f80fd5b5060215461030b90600160a01b900460ff1681565b335f818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108a19086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146108e55760405162461bcd60e51b81526004016108dc906125d5565b60405180910390fd5b601980546001600160a01b03199081166001600160a01b0397881617909155601a8054821695871695909517909455601b8054851693861693909317909255601d80548416918516919091179055601c80549092169216919091179055565b5f546001600160a01b0316331461096d5760405162461bcd60e51b81526004016108dc906125d5565b601e91909155601f55565b6001600160a01b0383165f908152600a602090815260408083203384529091528120545f1914610a21576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600a825283812033825290915291909120546109fd918490611493565b6001600160a01b0385165f908152600a602090815260408083203384529091529020555b610a2c8484846114cb565b90505b9392505050565b6005546001600160a01b03165f90815260096020526040812054610a81906004546001600160a01b03165f90815260096020526040902054610a7b90600654906119ac565b906119ac565b905090565b5f546001600160a01b03163314610aaf5760405162461bcd60e51b81526004016108dc906125d5565b6023546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b5f604051808303815f87803b158015610afa575f80fd5b505af1158015610b0c573d5f803e3d5ffd5b505050505050565b5f546001600160a01b03163314610b3d5760405162461bcd60e51b81526004016108dc906125d5565b61019060165561012c6017556021805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610b875760405162461bcd60e51b81526004016108dc906125d5565b5f5b82811015610beb5781600b5f868685818110610ba757610ba761260a565b9050602002016020810190610bbc9190612427565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610b89565b50505050565b5f546001600160a01b03163314610c1a5760405162461bcd60e51b81526004016108dc906125d5565b6103e8600654610c2a9190612632565b6007541015610c37575f80fd5b6103e881600654610c489190612651565b610c529190612632565b60075550565b5f6108ad825f19610847565b5f546001600160a01b03163314610c8d5760405162461bcd60e51b81526004016108dc906125d5565b6006546008819055600755565b5f546001600160a01b03163314610cc35760405162461bcd60e51b81526004016108dc906125d5565b5f5b82811015610beb5781600c5f868685818110610ce357610ce361260a565b9050602002016020810190610cf89190612427565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610cc5565b5f546001600160a01b03163314610d505760405162461bcd60e51b81526004016108dc906125d5565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60405133904780156108fc02915f818181858888f19350505050158015610dc1573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610ded5760405162461bcd60e51b81526004016108dc906125d5565b602354604051638aee812760e01b81526001600160a01b03838116600483015290911690638aee8127906024015f604051808303815f87803b158015610e31575f80fd5b505af1158015610e43573d5f803e3d5ffd5b5050505050565b5f546001600160a01b03163314610e735760405162461bcd60e51b81526004016108dc906125d5565b620b71b08110610e81575f80fd5b602455565b5f610a2f3384846114cb565b5f546001600160a01b03163314610ebb5760405162461bcd60e51b81526004016108dc906125d5565b6001600160a01b039091165f908152600b60209081526040808320805494151560ff199586168117909155600c9092529091208054909216179055565b335f908152600c602052604081205460ff16610f12575f80fd5b60235460405163e5711e8b60e01b81526001600160a01b0386811660048301528581166024830152604482018590529091169063e5711e8b906064016020604051808303815f875af1158015610f6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2c9190612668565b5f546001600160a01b03163314610fb75760405162461bcd60e51b81526004016108dc906125d5565b600e879055600f869055601085905560118490556012839055601382905582828587610fe38a8c612683565b610fed9190612683565b610ff79190612683565b6110019190612683565b61100b9190612683565b601455601581905561101e600282612632565b6014541061106e5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203439250000000060448201526064016108dc565b50505050505050565b5f546001600160a01b031633146110a05760405162461bcd60e51b81526004016108dc906125d5565b6025805460ff191692151592909217909155602655565b5f546001600160a01b031633146110e05760405162461bcd60e51b81526004016108dc906125d5565b6103e86006546110f09190612632565b60085410156110fd575f80fd5b6103e88160065461110e9190612651565b6111189190612632565b60085550565b5f546001600160a01b031633146111475760405162461bcd60e51b81526004016108dc906125d5565b601691909155601791909155601855565b602354604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e906024015f604051808303815f87803b15801561119a575f80fd5b505af1158015610beb573d5f803e3d5ffd5b5f546001600160a01b031633146111d55760405162461bcd60e51b81526004016108dc906125d5565b6001600160a01b03811661123a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108dc565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b335f908152600c602052604081205460ff166112ad575f80fd5b815f0361131d576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156112f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131a9190612696565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015611367573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2f9190612668565b5f546001600160a01b031633146113b45760405162461bcd60e51b81526004016108dc906125d5565b6001600160a01b03821630148015906113db57506021546001600160a01b03838116911614155b6113e3575f80fd5b6001600160a01b0382165f908152600d60205260409020805460ff1916821580159190911790915561144757602354604051630a5b654b60e11b81526001600160a01b0384811660048301525f6024830152909116906314b6ca9690604401610ae3565b6023546001600160a01b038381165f8181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610ae3565b5050565b5f81848411156114b65760405162461bcd60e51b81526004016108dc91906122de565b505f6114c284866126ad565b95945050505050565b6027545f9060ff16156114ea576114e38484846119ed565b9050610a2f565b6001600160a01b0384165f9081526001602052604090205460ff1615801561152a57506001600160a01b0383165f9081526001602052604090205460ff16155b1561157f57602154600160a01b900460ff1661157f5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108dc565b6001600160a01b0384165f9081526001602052604090205460ff161580156115b057506001600160a01b0383163014155b80156115ca57506004546001600160a01b03848116911614155b80156115e457506021546001600160a01b03848116911614155b80156115fe5750601a546001600160a01b03848116911614155b80156116185750601d546001600160a01b03848116911614155b801561163c57506001600160a01b0383165f908152600c602052604090205460ff16155b156116dc576001600160a01b0383165f908152600960205260409020546008546116668483612683565b11156116da5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016108dc565b505b6116e68483611abd565b6116ee611b25565b156116fb576116fb611b72565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526009909152919091205461174c918490611493565b6001600160a01b0385165f90815260096020908152604080832093909355600b90529081205460ff168061179757506001600160a01b0384165f908152600b602052604090205460ff165b6117ab576117a6858486611fcb565b6117ad565b825b6001600160a01b0385165f908152600960205260409020549091506117d29082612145565b6001600160a01b038086165f908152600960209081526040808320949094559188168152600d909152205460ff16611871576023546001600160a01b038681165f8181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b15801561185e575f80fd5b505af192505050801561186f575060015b505b6001600160a01b0384165f908152600d602052604090205460ff166118fd576023546001600160a01b038581165f8181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b1580156118ea575f80fd5b505af19250505080156118fb575060015b505b600f5415611967576023546024546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c4799161193d9160040190815260200190565b5f604051808303815f87803b158015611954575f80fd5b505af1925050508015611965575060015b505b836001600160a01b0316856001600160a01b03165f8051602061275d8339815191528360405161199991815260200190565b60405180910390a3506001949350505050565b5f610a2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611493565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600990915291822054611a3d918490611493565b6001600160a01b038086165f908152600960205260408082209390935590851681522054611a6b9083612145565b6001600160a01b038085165f8181526009602052604090819020939093559151908616905f8051602061275d83398151915290611aab9086815260200190565b60405180910390a35060019392505050565b60075481111580611ae557506001600160a01b0382165f908152600c602052604090205460ff165b61148f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108dc565b6021545f906001600160a01b03163314801590611b45575060275460ff16155b8015611b53575060255460ff165b8015610a81575050602654305f90815260096020526040902054101590565b6027805460ff19166001179055601e54601f545f91611b90916121a3565b611b9c57600e54611b9e565b5f5b90505f611bc76002611bc1601454611bc1866026546121b690919063ffffffff16565b90612234565b90505f611bdf826026546119ac90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611c1757611c1761260a565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611c4857611c4861260a565b6001600160a01b039283166020918202929092018101919091525460405163791ac94760e01b81524792919091169063791ac94790611c939086905f908790309042906004016126c0565b5f604051808303815f87803b158015611caa575f80fd5b505af1158015611cbc573d5f803e3d5ffd5b505050505f611cd482476119ac90919063ffffffff16565b90505f611cee611ce5886002612234565b601454906119ac565b90505f611d026002611bc18481878d6121b6565b90505f611d1e83611bc1600f54876121b690919063ffffffff16565b90505f611d3a84611bc1601054886121b690919063ffffffff16565b90505f611d5685611bc1601154896121b690919063ffffffff16565b90505f611d7286611bc16012548a6121b690919063ffffffff16565b905060235f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004015f604051808303818588803b158015611dc1575f80fd5b505af193505050508015611dd3575060015b50601a546040515f916001600160a01b03169061753090869084818181858888f193505050503d805f8114611e23576040519150601f19603f3d011682016040523d82523d5f602084013e611e28565b606091505b5050601b546040519192506001600160a01b0316906175309085905f818181858888f193505050503d805f8114611e7a576040519150601f19603f3d011682016040523d82523d5f602084013e611e7f565b606091505b5050601c546040519192506001600160a01b0316906175309084905f818181858888f193505050503d805f8114611ed1576040519150601f19603f3d011682016040523d82523d5f602084013e611ed6565b606091505b505f9250508c159050611fb25760205460195460405163f305d71960e01b8152306004820152602481018f90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990889060c40160606040518083038185885af1158015611f50573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611f759190612731565b505060408051888152602081018f90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506027805460ff191690555050505050505050505050565b6018546021545f91906001600160a01b0390811690841603611ff0575060165461200b565b6021546001600160a01b039081169086160361200b57506017545b5f61203d601554606461201e9190612651565b611bc1846120376014548a6121b690919063ffffffff16565b906121b6565b90505f61205b601454611bc1601354856121b690919063ffffffff16565b90505f61206883836119ac565b305f908152600960205260409020549091506120849082612145565b305f9081526009602052604080822092909255601d546001600160a01b0316815220546120b19083612145565b601d546001600160a01b039081165f9081526009602090815260409182902093909355518381523092918b16915f8051602061275d833981519152910160405180910390a3811561212f57601d546040518381526001600160a01b03918216918a16905f8051602061275d8339815191529060200160405180910390a35b61213987846119ac565b98975050505050505050565b5f806121518385612683565b905083811015610a2f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108dc565b5f826121ae83612275565b119392505050565b5f825f036121c557505f6108ad565b5f6121d08385612651565b9050826121dd8583612632565b14610a2f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108dc565b5f610a2f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122b2565b5f6108ad612281610a36565b6021546001600160a01b03165f90815260096020526040902054611bc1906122ab90600290612037565b85906121b6565b5f81836122d25760405162461bcd60e51b81526004016108dc91906122de565b505f6114c28486612632565b5f602080835283518060208501525f5b8181101561230a578581018301518582016040015282016122ee565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114612340575f80fd5b919050565b5f8060408385031215612356575f80fd5b61235f8361232a565b946020939093013593505050565b5f805f805f60a08688031215612381575f80fd5b61238a8661232a565b94506123986020870161232a565b93506123a66040870161232a565b92506123b46060870161232a565b91506123c26080870161232a565b90509295509295909350565b5f80604083850312156123df575f80fd5b50508035926020909101359150565b5f805f60608486031215612400575f80fd5b6124098461232a565b92506124176020850161232a565b9150604084013590509250925092565b5f60208284031215612437575f80fd5b610a2f8261232a565b8015158114610dc1575f80fd5b5f805f6040848603121561245f575f80fd5b833567ffffffffffffffff80821115612476575f80fd5b818601915086601f830112612489575f80fd5b813581811115612497575f80fd5b8760208260051b85010111156124ab575f80fd5b602092830195509350508401356124c181612440565b809150509250925092565b5f602082840312156124dc575f80fd5b5035919050565b5f80604083850312156124f4575f80fd5b6124fd8361232a565b9150602083013561250d81612440565b809150509250929050565b5f805f805f805f60e0888a03121561252e575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215612570575f80fd5b6125798361232a565b91506125876020840161232a565b90509250929050565b5f80604083850312156125a1575f80fd5b823561235f81612440565b5f805f606084860312156125be575f80fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261264c57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176108ad576108ad61261e565b5f60208284031215612678575f80fd5b8151610a2f81612440565b808201808211156108ad576108ad61261e565b5f602082840312156126a6575f80fd5b5051919050565b818103818111156108ad576108ad61261e565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156127105784516001600160a01b0316835293830193918301916001016126eb565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612743575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e10ac29584153a2dd3a61ac1a0944eccfc8f41a9975eaeb42bc56ce83af0444764736f6c63430008180033
Deployed Bytecode Sourcemap
11462:15735:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13440:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;13440:54:0;;;;;;;;15027:80;;;;;;;;;;-1:-1:-1;15099:5:0;;;;;;;;;;;;-1:-1:-1;;;15099:5:0;;;;15027:80;;;;;;;:::i;15449:216::-;;;;;;;;;;-1:-1:-1;15449:216:0;;;;;:::i;:::-;;:::i;:::-;;;1351:14:1;;1344:22;1326:41;;1314:2;1299:18;15449:216:0;1186:187:1;14757:88:0;;;;;;;;;;-1:-1:-1;14830:12:0;;14757:88;;25142:451;;;;;;;;;;-1:-1:-1;25142:451:0;;;;;:::i;:::-;;:::i;:::-;;12618:106;;;;;;;;;;;;;;;;25764:187;;;;;;;;;;-1:-1:-1;25764:187:0;;;;;:::i;:::-;;:::i;15967:370::-;;;;;;;;;;-1:-1:-1;15967:370:0;;;;;:::i;:::-;;:::i;26647:142::-;;;;;;;;;;;;;:::i;26102:185::-;;;;;;;;;;-1:-1:-1;26102:185:0;;;;;:::i;:::-;;:::i;21152:151::-;;;;;;;;;;;;;:::i;14851:80::-;;;;;;;;;;-1:-1:-1;14851:80:0;;11889:1;2595:36:1;;2583:2;2568:18;14851:80:0;2453:184:1;12308:49:0;;;;;;;;;;-1:-1:-1;12308:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23886:206;;;;;;;;;;-1:-1:-1;23886:206:0;;;;;:::i;:::-;;:::i;16578:217::-;;;;;;;;;;-1:-1:-1;16578:217:0;;;;;:::i;:::-;;:::i;15673:122::-;;;;;;;;;;-1:-1:-1;15673:122:0;;;;;:::i;:::-;;:::i;16809:133::-;;;;;;;;;;;;;:::i;24100:215::-;;;;;;;;;;-1:-1:-1;24100:215:0;;;;;:::i;:::-;;:::i;13403:30::-;;;;;;;;;;-1:-1:-1;13403:30:0;;;;;;;;15197:105;;;;;;;;;;-1:-1:-1;15197:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;15281:18:0;15263:7;15281:18;;;:9;:18;;;;;;;15197:105;3141:148;;;;;;;;;;;;;:::i;12022:61::-;;;;;;;;;;;;;;;;11957:58;;;;;;;;;;;;;;;;15113:78;;;;;;;;;;-1:-1:-1;15165:7:0;2992:6;-1:-1:-1;;;;;2992:6:0;15113:78;;;-1:-1:-1;;;;;4060:32:1;;;4042:51;;4030:2;4015:18;15113:78:0;3896:203:1;21317:110:0;;;;;;;;;;;;;:::i;20778:124::-;;;;;;;;;;-1:-1:-1;20778:124:0;;;;;:::i;:::-;;:::i;2927:79::-;;;;;;;;;;-1:-1:-1;2965:7:0;2992:6;-1:-1:-1;;;;;2992:6:0;2927:79;;14937:84;;;;;;;;;;-1:-1:-1;15011:7:0;;;;;;;;;;;;-1:-1:-1;;;15011:7:0;;;;14937:84;;25959:135;;;;;;;;;;-1:-1:-1;25959:135:0;;;;;:::i;:::-;;:::i;13212:19::-;;;;;;;;;;-1:-1:-1;13212:19:0;;;;-1:-1:-1;;;;;13212:19:0;;;15803:156;;;;;;;;;;-1:-1:-1;15803:156:0;;;;;:::i;:::-;;:::i;24327:165::-;;;;;;;;;;-1:-1:-1;24327:165:0;;;;;:::i;:::-;;:::i;2547:21::-;;;;;;;;;;-1:-1:-1;2547:21:0;;;;-1:-1:-1;;;;;2547:21:0;;;26395:238;;;;;;;;;;-1:-1:-1;26395:238:0;;;;;:::i;:::-;;:::i;24506:628::-;;;;;;;;;;-1:-1:-1;24506:628:0;;;;;:::i;:::-;;:::i;15308:133::-;;;;;;;;;;-1:-1:-1;15308:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;15410:19:0;;;15392:7;15410:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15308:133;25601:155;;;;;;;;;;-1:-1:-1;25601:155:0;;;;;:::i;:::-;;:::i;16345:225::-;;;;;;;;;;-1:-1:-1;16345:225:0;;;;;:::i;:::-;;:::i;12935:35::-;;;;;;;;;;-1:-1:-1;12935:35:0;;;;-1:-1:-1;;;;;12935:35:0;;;20918:226;;;;;;;;;;-1:-1:-1;20918:226:0;;;;;:::i;:::-;;:::i;26295:90::-;;;;;;;;;;;;;:::i;3297:244::-;;;;;;;;;;-1:-1:-1;3297:244:0;;;;;:::i;:::-;;:::i;20445:325::-;;;;;;;;;;-1:-1:-1;20445:325:0;;;;;:::i;:::-;;:::i;23529:344::-;;;;;;;;;;-1:-1:-1;23529:344:0;;;;;:::i;:::-;;:::i;13181:24::-;;;;;;;;;;-1:-1:-1;13181:24:0;;;;-1:-1:-1;;;;;13181:24:0;;;13244:31;;;;;;;;;;-1:-1:-1;13244:31:0;;;;-1:-1:-1;;;13244:31:0;;;;;;15449:216;15553:10;15524:4;15541:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15541:32:0;;;;;;;;;;:41;;;15598:37;15524:4;;15541:32;;15598:37;;;;15576:6;160:25:1;;148:2;133:18;;14:177;15598:37:0;;;;;;;;-1:-1:-1;15653:4:0;15449:216;;;;;:::o;25142:451::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;;;;;;;;;25341:21:::1;:46:::0;;-1:-1:-1;;;;;;25341:46:0;;::::1;-1:-1:-1::0;;;;;25341:46:0;;::::1;;::::0;;;25398:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;25453:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;25508:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;25553:14:::1;:32:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;25142:451::o;25764:187::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;25861:15:::1;:25:::0;;;;25897:26:::1;:41:::0;25764:187::o;15967:370::-;-1:-1:-1;;;;;16087:19:0;;16067:4;16087:19;;;:11;:19;;;;;;;;16107:10;16087:31;;;;;;;;-1:-1:-1;;16087:52:0;16084:186;;16189:69;;;;;;;;;;;-1:-1:-1;;;16189:69:0;;;;;;;;-1:-1:-1;;;;;16189:19:0;;-1:-1:-1;16189:19:0;;;:11;:19;;;;;16209:10;16189:31;;;;;;;;;;:69;;16225:6;;16189:35;:69::i;:::-;-1:-1:-1;;;;;16155:19:0;;;;;;:11;:19;;;;;;;;16175:10;16155:31;;;;;;;:103;16084:186;16289:40;16303:6;16311:9;16322:6;16289:13;:40::i;:::-;16282:47;;15967:370;;;;;;:::o;26647:142::-;26775:4;;-1:-1:-1;;;;;26775:4:0;26700:7;15281:18;;;:9;:18;;;;;;26727:54;;26754:4;;-1:-1:-1;;;;;26754:4:0;15263:7;15281:18;;;:9;:18;;;;;;26727:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;26720:61;;26647:142;:::o;26102:185::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;26209:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;26209:65:0;;::::1;::::0;::::1;6682:25:1::0;;;6723:18;;;6716:34;;;-1:-1:-1;;;;;26209:11:0;;::::1;::::0;:35:::1;::::0;6655:18:1;;26209:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26102:185:::0;;:::o;21152:151::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;21223:3:::1;21206:14;:20:::0;21253:3:::1;21237:13;:19:::0;21267:11:::1;:18:::0;;-1:-1:-1;;;;21267:18:0::1;-1:-1:-1::0;;;21267:18:0::1;::::0;;21152:151::o;23886:206::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;23986:9:::1;23981:104;23997:20:::0;;::::1;23981:104;;;24067:6;24039:11;:25;24051:9;;24061:1;24051:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24039:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;24039:25:0;:34;;-1:-1:-1;;24039:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;24019:3:0::1;23981:104;;;;23886:206:::0;;;:::o;16578:217::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;16707:4:::1;16692:12;;:19;;;;:::i;:::-;16676:12;;:35;;16668:44;;;::::0;::::1;;16783:4;16754:24;16739:12;;:39;;;;:::i;:::-;16738:49;;;;:::i;:::-;16723:12;:64:::0;-1:-1:-1;16578:217:0:o;15673:122::-;15728:4;15752:35;15760:7;-1:-1:-1;;15752:7:0;:35::i;16809:133::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;16882:12:::1;::::0;16864:15:::1;:30:::0;;;16905:12:::1;:27:::0;16809:133::o;24100:215::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;24204:9:::1;24199:108;24215:20:::0;;::::1;24199:108;;;24289:6;24257:15;:29;24273:9;;24283:1;24273:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24257:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;24257:29:0;:38;;-1:-1:-1;;24257:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;24237:3:0::1;24199:108;;3141:148:::0;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;3248:1:::1;3232:6:::0;;3211:40:::1;::::0;-1:-1:-1;;;;;3232:6:0;;::::1;::::0;3211:40:::1;::::0;3248:1;;3211:40:::1;3279:1;3262:19:::0;;-1:-1:-1;;;;;;3262:19:0::1;::::0;;3141:148::o;21317:110::-;21362:51;;21370:10;;21391:21;21362:51;;;;;;;;;21391:21;21370:10;21362:51;;;;;;;;;;;;;;;;;;;;;21317:110::o;20778:124::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;20854:11:::1;::::0;:40:::1;::::0;-1:-1:-1;;;20854:40:0;;-1:-1:-1;;;;;4060:32:1;;;20854:40:0::1;::::0;::::1;4042:51:1::0;20854:11:0;;::::1;::::0;:26:::1;::::0;4015:18:1;;20854:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20778:124:::0;:::o;25959:135::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;26048:6:::1;26042:3;:12;26034:21;;;::::0;::::1;;26066:14;:20:::0;25959:135::o;15803:156::-;15883:4;15907:44;15921:10;15933:9;15944:6;15907:13;:44::i;24327:165::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24413:19:0;;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:28;;;::::1;;-1:-1:-1::0;;24413:28:0;;::::1;::::0;::::1;::::0;;;24452:15:::1;:23:::0;;;;;;:32;;;;::::1;;::::0;;24327:165::o;26395:238::-;26540:10;26491:12;26524:27;;;:15;:27;;;;;;;;26516:36;;;;;;26570:11;;:55;;-1:-1:-1;;;26570:55:0;;-1:-1:-1;;;;;7678:15:1;;;26570:55:0;;;7660:34:1;7730:15;;;7710:18;;;7703:43;7762:18;;;7755:34;;;26570:11:0;;;;:23;;7595:18:1;;26570:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24506:628::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;24700:12:::1;:28:::0;;;24739:9:::1;:22:::0;;;24772:12:::1;:28:::0;;;24819:12:::1;:28:::0;;;24858:6:::1;:16:::0;;;24885:7:::1;:18:::0;;;24867:7;24895:8;24834:13;24787;24925:26:::1;24751:10:::0;24715:13;24925:26:::1;:::i;:::-;:42;;;;:::i;:::-;:58;;;;:::i;:::-;:69;;;;:::i;:::-;:79;;;;:::i;:::-;24914:8;:90:::0;25015:14:::1;:32:::0;;;25077:16:::1;25092:1;25032:15:::0;25077:16:::1;:::i;:::-;25066:8;;:27;25058:68;;;::::0;-1:-1:-1;;;25058:68:0;;8382:2:1;25058:68:0::1;::::0;::::1;8364:21:1::0;8421:2;8401:18;;;8394:30;8460;8440:18;;;8433:58;8508:18;;25058:68:0::1;8180:352:1::0;25058:68:0::1;24506:628:::0;;;;;;;:::o;25601:155::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;25692:11:::1;:22:::0;;-1:-1:-1;;25692:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;25725:13:::1;:23:::0;25601:155::o;16345:225::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;16480:4:::1;16465:12;;:19;;;;:::i;:::-;16446:15;;:38;;16438:47;;;::::0;::::1;;16558:4;16530:23;16515:12;;:38;;;;:::i;:::-;16514:48;;;;:::i;:::-;16496:15;:66:::0;-1:-1:-1;16345:225:0:o;20918:226::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;21016:14:::1;:22:::0;;;;21049:13:::1;:20:::0;;;;21080:18:::1;:27:::0;20918:226::o;26295:90::-;26340:11;;:37;;-1:-1:-1;;;26340:37:0;;26366:10;26340:37;;;4042:51:1;-1:-1:-1;;;;;26340:11:0;;;;:25;;4015:18:1;;26340:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3297:244;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3386:22:0;::::1;3378:73;;;::::0;-1:-1:-1;;;3378:73:0;;8739:2:1;3378:73:0::1;::::0;::::1;8721:21:1::0;8778:2;8758:18;;;8751:30;8817:34;8797:18;;;8790:62;-1:-1:-1;;;8868:18:1;;;8861:36;8914:19;;3378:73:0::1;8537:402:1::0;3378:73:0::1;3488:6;::::0;;3467:38:::1;::::0;-1:-1:-1;;;;;3467:38:0;;::::1;::::0;3488:6;::::1;::::0;3467:38:::1;::::0;::::1;3516:6;:17:::0;;-1:-1:-1;;;;;;3516:17:0::1;-1:-1:-1::0;;;;;3516:17:0;;;::::1;::::0;;;::::1;::::0;;3297:244::o;20445:325::-;20577:10;20528:12;20561:27;;;:15;:27;;;;;;;;20553:36;;;;;;20603:6;20613:1;20603:11;20600:96;;20639:45;;-1:-1:-1;;;20639:45:0;;20678:4;20639:45;;;4042:51:1;-1:-1:-1;;;;;20639:30:0;;;;;4015:18:1;;20639:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20630:54;;20600:96;20713:49;;-1:-1:-1;;;20713:49:0;;20743:10;20713:49;;;9307:51:1;9374:18;;;9367:34;;;-1:-1:-1;;;;;20713:29:0;;;;;9280:18:1;;20713:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23529:344::-;3054:6;;-1:-1:-1;;;;;3054:6:0;2364:10;3054:22;3046:67;;;;-1:-1:-1;;;3046:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23623:23:0;::::1;23641:4;23623:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;23660:4:0::1;::::0;-1:-1:-1;;;;;23650:14:0;;::::1;23660:4:::0;::::1;23650:14;;23623:41;23615:50;;;::::0;::::1;;-1:-1:-1::0;;;;;23676:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;23676:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;23720:146:::1;;23745:11;::::0;:31:::1;::::0;-1:-1:-1;;;23745:31:0;;-1:-1:-1;;;;;9325:32:1;;;23745:31:0::1;::::0;::::1;9307:51:1::0;23745:11:0::1;9374:18:1::0;;;9367:34;23745:11:0;;::::1;::::0;:20:::1;::::0;9280:18:1;;23745:31:0::1;9133:274:1::0;23720:146:0::1;23807:11;::::0;-1:-1:-1;;;;;23836:17:0;;::::1;23807:11;23836:17:::0;;;:9:::1;:17;::::0;;;;;;;23807:47;;-1:-1:-1;;;23807:47:0;;::::1;::::0;::::1;9307:51:1::0;;;;9374:18;;;9367:34;23807:11:0;::::1;::::0;:20:::1;::::0;9280:18:1;;23807:47:0::1;9133:274:1::0;23720:146:0::1;23529:344:::0;;:::o;527:192::-;613:7;649:12;641:6;;;;633:29;;;;-1:-1:-1;;;633:29:0;;;;;;;;:::i;:::-;-1:-1:-1;673:9:0;685:5;689:1;685;:5;:::i;:::-;673:17;527:192;-1:-1:-1;;;;;527:192:0:o;16950:1674::-;17062:6;;17042:4;;17062:6;;17059:63;;;17078:41;17093:6;17101:9;17112:6;17078:14;:41::i;:::-;17071:48;;;;17059:63;-1:-1:-1;;;;;17140:22:0;;;;;;:14;:22;;;;;;;;17139:23;:53;;;;-1:-1:-1;;;;;;17167:25:0;;;;;;:14;:25;;;;;;;;17166:26;17139:53;17136:148;;;17216:11;;-1:-1:-1;;;17216:11:0;;;;17208:43;;;;-1:-1:-1;;;17208:43:0;;10034:2:1;17208:43:0;;;10016:21:1;10073:2;10053:18;;;10046:30;-1:-1:-1;;;10092:18:1;;;10085:50;10152:18;;17208:43:0;9832:344:1;17208:43:0;-1:-1:-1;;;;;17336:22:0;;;;;;:14;:22;;;;;;;;17335:23;:53;;;;-1:-1:-1;;;;;;17362:26:0;;17383:4;17362:26;;17335:53;:84;;;;-1:-1:-1;17414:4:0;;-1:-1:-1;;;;;17393:26:0;;;17414:4;;17393:26;;17335:84;:105;;;;-1:-1:-1;17436:4:0;;-1:-1:-1;;;;;17423:17:0;;;17436:4;;17423:17;;17335:105;:142;;;;-1:-1:-1;17457:20:0;;-1:-1:-1;;;;;17444:33:0;;;17457:20;;17444:33;;17335:142;:174;;;;-1:-1:-1;17494:15:0;;-1:-1:-1;;;;;17481:28:0;;;17494:15;;17481:28;;17335:174;:205;;;;-1:-1:-1;;;;;;17514:26:0;;;;;;:15;:26;;;;;;;;17513:27;17335:205;17331:397;;;-1:-1:-1;;;;;15281:18:0;;17556;15281;;;:9;:18;;;;;;17645:15;;17621:19;17634:6;15281:18;17621:19;:::i;:::-;17620:40;;17612:114;;;;-1:-1:-1;;;17612:114:0;;10383:2:1;17612:114:0;;;10365:21:1;10422:2;10402:18;;;10395:30;10461:34;10441:18;;;10434:62;10532:32;10512:18;;;10505:60;10582:19;;17612:114:0;10181:426:1;17612:114:0;17541:187;17331:397;17775:28;17788:6;17796;17775:12;:28::i;:::-;17819:16;:14;:16::i;:::-;17816:35;;;17838:10;:8;:10::i;:::-;17883:53;;;;;;;;;;;-1:-1:-1;;;17883:53:0;;;;;;;;-1:-1:-1;;;;;17883:17:0;;-1:-1:-1;17883:17:0;;;:9;:17;;;;;;;;:53;;17905:6;;17883:21;:53::i;:::-;-1:-1:-1;;;;;17863:17:0;;;;;;:9;:17;;;;;;;;:73;;;;17975:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;17998:22:0;;;;;;:11;:22;;;;;;;;17975:45;17974:93;;18033:34;18041:6;18049;18057:9;18033:7;:34::i;:::-;17974:93;;;18024:6;17974:93;-1:-1:-1;;;;;18101:20:0;;;;;;:9;:20;;;;;;17949:118;;-1:-1:-1;18101:40:0;;17949:118;18101:24;:40::i;:::-;-1:-1:-1;;;;;18078:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;18158:24;;;;;:16;:24;;;;;;;18154:119;;18203:11;;-1:-1:-1;;;;;18232:17:0;;;18203:11;18232:17;;;:9;:17;;;;;;;;18203:47;;-1:-1:-1;;;18203:47:0;;;;;9307:51:1;;;;9374:18;;;9367:34;18203:11:0;;;:20;;9280:18:1;;18203:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18199:63;;-1:-1:-1;;;;;18289:27:0;;;;;;:16;:27;;;;;;;;18285:129;;18337:11;;-1:-1:-1;;;;;18369:20:0;;;18337:11;18369:20;;;:9;:20;;;;;;;;18337:53;;-1:-1:-1;;;18337:53:0;;;;;9307:51:1;;;;9374:18;;;9367:34;18337:11:0;;;:20;;9280:18:1;;18337:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18333:69;;18429:9;;:13;18426:98;;18462:11;;18482:14;;18462:35;;-1:-1:-1;;;;;;18462:35:0;;-1:-1:-1;;;;;18462:11:0;;;;:19;;:35;;;;160:25:1;;;148:2;133:18;;14:177;18462:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18458:51;;18568:9;-1:-1:-1;;;;;18551:43:0;18560:6;-1:-1:-1;;;;;18551:43:0;-1:-1:-1;;;;;;;;;;;18579:14:0;18551:43;;;;160:25:1;;148:2;133:18;;14:177;18551:43:0;;;;;;;;-1:-1:-1;18612:4:0;;16950:1674;-1:-1:-1;;;;16950:1674:0:o;385:136::-;443:7;470:43;474:1;477;470:43;;;;;;;;;;;;;;;;;:3;:43::i;18636:330::-;18766:53;;;;;;;;;;;-1:-1:-1;;;18766:53:0;;;;;;;;-1:-1:-1;;;;;18766:17:0;;18729:4;18766:17;;;:9;:17;;;;;;;:53;;18788:6;;18766:21;:53::i;:::-;-1:-1:-1;;;;;18746:17:0;;;;;;;:9;:17;;;;;;:73;;;;18853:20;;;;;;;:32;;18878:6;18853:24;:32::i;:::-;-1:-1:-1;;;;;18830:20:0;;;;;;;:9;:20;;;;;;;:55;;;;18901:35;;;;;;-1:-1:-1;;;;;;;;;;;18901:35:0;;;18929:6;160:25:1;;148:2;133:18;;14:177;18901:35:0;;;;;;;;-1:-1:-1;18954:4:0;18636:330;;;;;:::o;18974:166::-;19071:12;;19061:6;:22;;:49;;;-1:-1:-1;;;;;;19087:23:0;;;;;;:15;:23;;;;;;;;19061:49;19053:79;;;;-1:-1:-1;;;19053:79:0;;10814:2:1;19053:79:0;;;10796:21:1;10853:2;10833:18;;;10826:30;-1:-1:-1;;;10872:18:1;;;10865:47;10929:18;;19053:79:0;10612:341:1;20238:197:0;20325:4;;20287;;-1:-1:-1;;;;;20325:4:0;20311:10;:18;;;;:38;;-1:-1:-1;20343:6:0;;;;20342:7;20311:38;:62;;;;-1:-1:-1;20362:11:0;;;;20311:62;:116;;;;-1:-1:-1;;20414:13:0;;20404:4;20386:24;;;;:9;:24;;;;;;:41;;;20238:197::o;21433:2088::-;13541:6;:13;;-1:-1:-1;;13541:13:0;13550:4;13541:13;;;21528:15:::1;::::0;21545:26:::1;::::0;13541:6;;21512:60:::1;::::0;:15:::1;:60::i;:::-;:79;;21579:12;;21512:79;;;21575:1;21512:79;21482:109;;21602:23;21628:59;21685:1;21628:52;21671:8;;21628:38;21646:19;21628:13;;:17;;:38;;;;:::i;:::-;:42:::0;::::1;:52::i;:59::-;21602:85;;21698:20;21721:34;21739:15;21721:13;;:17;;:34;;;;:::i;:::-;21792:16;::::0;;21806:1:::1;21792:16:::0;;;;;::::1;::::0;;21698:57;;-1:-1:-1;21768:21:0::1;::::0;21792:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21792:16:0::1;21768:40;;21837:4;21819;21824:1;21819:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21819:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21863:4:::1;::::0;21853:7;;21863:4;::::1;::::0;21853;;21863;;21853:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;21853:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;21946:6;:188:::1;::::0;-1:-1:-1;;;21946:188:0;;21912:21:::1;::::0;21946:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;22018:12;;21888:21:::1;::::0;22061:4;;22088::::1;::::0;22108:15:::1;::::0;21946:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22147:17;22167:40;22193:13;22167:21;:25;;:40;;;;:::i;:::-;22147:60:::0;-1:-1:-1;22220:19:0::1;22242:40;22255:26;:19:::0;22279:1:::1;22255:23;:26::i;:::-;22242:8;::::0;;:12:::1;:40::i;:::-;22220:62:::0;-1:-1:-1;22303:26:0::1;22332:58;22388:1;22332:51;22220:62:::0;22332:51;:9;22346:19;22332:13:::1;:34::i;:58::-;22303:87;;22401:23;22427:41;22456:11;22427:24;22441:9;;22427;:13;;:24;;;;:::i;:41::-;22401:67;;22479:26;22508:44;22540:11;22508:27;22522:12;;22508:9;:13;;:27;;;;:::i;:44::-;22479:73;;22563:26;22592:44;22624:11;22592:27;22606:12;;22592:9;:13;;:27;;;;:::i;:44::-;22563:73;;22647:20;22670:38;22696:11;22670:21;22684:6;;22670:9;:13;;:21;;;;:::i;:38::-;22647:61;;22729:11;;;;;;;;;-1:-1:-1::0;;;;;22729:11:0::1;-1:-1:-1::0;;;;;22729:19:0::1;;22756:15;22729:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;22825:20:0::1;::::0;22817:77:::1;::::0;22797:15:::1;::::0;-1:-1:-1;;;;;22825:20:0::1;::::0;22884:5:::1;::::0;22859:18;;22797:15;22817:77;22797:15;22817:77;22859:18;22825:20;22884:5;22817:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22929:20:0::1;::::0;22921:77:::1;::::0;22796:98;;-1:-1:-1;;;;;;22929:20:0::1;::::0;22988:5:::1;::::0;22963:18;;22921:77:::1;::::0;;;22963:18;22929:20;22988:5;22921:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;23033:14:0::1;::::0;23025:65:::1;::::0;22905:93;;-1:-1:-1;;;;;;23033:14:0::1;::::0;23080:5:::1;::::0;23061:12;;23025:65:::1;::::0;;;23061:12;23033:14;23080:5;23025:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23134:5:0::1;::::0;-1:-1:-1;;23155:19:0;;;-1:-1:-1;23152:362:0::1;;23190:6;::::0;23364:21:::1;::::0;23190:244:::1;::::0;-1:-1:-1;;;23190:244:0;;23266:4:::1;23190:244;::::0;::::1;12626:34:1::0;12676:18;;;12669:34;;;23190:6:0::1;12719:18:1::0;;;12712:34;;;12762:18;;;12755:34;-1:-1:-1;;;;;23364:21:0;;::::1;12805:19:1::0;;;12798:44;23404:15:0::1;12858:19:1::0;;;12851:35;23190:6:0;::::1;::::0;:22:::1;::::0;23220:18;;12560:19:1;;23190:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;23454:48:0::1;::::0;;6682:25:1;;;6738:2;6723:18;;6716:34;;;23454:48:0::1;::::0;-1:-1:-1;6655:18:1;23454:48:0::1;;;;;;;23152:362;-1:-1:-1::0;;13559:6:0;:14;;-1:-1:-1;;13559:14:0;;;-1:-1:-1;;;;;;;;;;;21433:2088:0:o;19276:954::-;19413:18;;19460:4;;19362:7;;19413:18;-1:-1:-1;;;;;19460:4:0;;;19447:17;;;;19444:154;;-1:-1:-1;19494:14:0;;19444:154;;;19539:4;;-1:-1:-1;;;;;19539:4:0;;;19529:14;;;;19526:72;;-1:-1:-1;19573:13:0;;19526:72;19610:17;19630:62;19671:14;;19688:3;19671:20;;;;:::i;:::-;19630:36;19655:10;19630:20;19641:8;;19630:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;19610:82;;19703:18;19724:36;19751:8;;19724:22;19738:7;;19724:9;:13;;:22;;;;:::i;:36::-;19703:57;-1:-1:-1;19771:22:0;19796:25;:9;19703:57;19796:13;:25::i;:::-;19879:4;19861:24;;;;:9;:24;;;;;;19771:50;;-1:-1:-1;19861:44:0;;19771:50;19861:28;:44::i;:::-;19852:4;19834:24;;;;:9;:24;;;;;;:71;;;;19955:15;;-1:-1:-1;;;;;19955:15:0;19945:26;;;;:42;;19976:10;19945:30;:42::i;:::-;19926:15;;-1:-1:-1;;;;;19926:15:0;;;19916:26;;;;:9;:26;;;;;;;;;:71;;;;20003:47;160:25:1;;;20028:4:0;;20003:47;;;;-1:-1:-1;;;;;;;;;;;20003:47:0;133:18:1;20003:47:0;;;;;;;20074:14;;20071:99;;20126:15;;20109:45;;160:25:1;;;-1:-1:-1;;;;;20126:15:0;;;;20109:45;;;-1:-1:-1;;;;;;;;;;;20109:45:0;148:2:1;133:18;20109:45:0;;;;;;;20071:99;20191:21;:6;20202:9;20191:10;:21::i;:::-;20184:28;19276:954;-1:-1:-1;;;;;;;;19276:954:0:o;198:181::-;256:7;;288:5;292:1;288;:5;:::i;:::-;276:17;;317:1;312;:6;;304:46;;;;-1:-1:-1;;;304:46:0;;13410:2:1;304:46:0;;;13392:21:1;13449:2;13429:18;;;13422:30;13488:29;13468:18;;;13461:57;13535:18;;304:46:0;13208:351:1;26973:151:0;27054:4;27110:6;27078:29;27098:8;27078:19;:29::i;:::-;:38;;26973:151;-1:-1:-1;;;26973:151:0:o;725:250::-;783:7;807:1;812;807:6;803:47;;-1:-1:-1;837:1:0;830:8;;803:47;862:9;874:5;878:1;874;:5;:::i;:::-;862:17;-1:-1:-1;907:1:0;898:5;902:1;862:17;898:5;:::i;:::-;:10;890:56;;;;-1:-1:-1;;;890:56:0;;13766:2:1;890:56:0;;;13748:21:1;13805:2;13785:18;;;13778:30;13844:34;13824:18;;;13817:62;-1:-1:-1;;;13895:18:1;;;13888:31;13936:19;;890:56:0;13564:397:1;981:132:0;1039:7;1066:39;1070:1;1073;1066:39;;;;;;;;;;;;;;;;;:3;:39::i;26797:168::-;26866:7;26893:64;26934:22;:20;:22::i;:::-;26916:4;;-1:-1:-1;;;;;26916:4:0;15263:7;15281:18;;;:9;:18;;;;;;26893:36;;26906:22;;26926:1;;26906:15;15197:105;26906:22;26893:8;;:12;:36::i;1119:189::-;1205:7;1240:12;1233:5;1225:28;;;;-1:-1:-1;;;1225:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1264:9:0;1276:5;1280:1;1276;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:173::-;817:20;;-1:-1:-1;;;;;866:31:1;;856:42;;846:70;;912:1;909;902:12;846:70;749:173;;;:::o;927:254::-;995:6;1003;1056:2;1044:9;1035:7;1031:23;1027:32;1024:52;;;1072:1;1069;1062:12;1024:52;1095:29;1114:9;1095:29;:::i;:::-;1085:39;1171:2;1156:18;;;;1143:32;;-1:-1:-1;;;927:254:1:o;1378:484::-;1473:6;1481;1489;1497;1505;1558:3;1546:9;1537:7;1533:23;1529:33;1526:53;;;1575:1;1572;1565:12;1526:53;1598:29;1617:9;1598:29;:::i;:::-;1588:39;;1646:38;1680:2;1669:9;1665:18;1646:38;:::i;:::-;1636:48;;1703:38;1737:2;1726:9;1722:18;1703:38;:::i;:::-;1693:48;;1760:38;1794:2;1783:9;1779:18;1760:38;:::i;:::-;1750:48;;1817:39;1851:3;1840:9;1836:19;1817:39;:::i;:::-;1807:49;;1378:484;;;;;;;;:::o;1867:248::-;1935:6;1943;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;;2035:23:1;;;2105:2;2090:18;;;2077:32;;-1:-1:-1;1867:248:1:o;2120:328::-;2197:6;2205;2213;2266:2;2254:9;2245:7;2241:23;2237:32;2234:52;;;2282:1;2279;2272:12;2234:52;2305:29;2324:9;2305:29;:::i;:::-;2295:39;;2353:38;2387:2;2376:9;2372:18;2353:38;:::i;:::-;2343:48;;2438:2;2427:9;2423:18;2410:32;2400:42;;2120:328;;;;;:::o;2642:186::-;2701:6;2754:2;2742:9;2733:7;2729:23;2725:32;2722:52;;;2770:1;2767;2760:12;2722:52;2793:29;2812:9;2793:29;:::i;2833:118::-;2919:5;2912:13;2905:21;2898:5;2895:32;2885:60;;2941:1;2938;2931:12;2956:750;3048:6;3056;3064;3117:2;3105:9;3096:7;3092:23;3088:32;3085:52;;;3133:1;3130;3123:12;3085:52;3173:9;3160:23;3202:18;3243:2;3235:6;3232:14;3229:34;;;3259:1;3256;3249:12;3229:34;3297:6;3286:9;3282:22;3272:32;;3342:7;3335:4;3331:2;3327:13;3323:27;3313:55;;3364:1;3361;3354:12;3313:55;3404:2;3391:16;3430:2;3422:6;3419:14;3416:34;;;3446:1;3443;3436:12;3416:34;3501:7;3494:4;3484:6;3481:1;3477:14;3473:2;3469:23;3465:34;3462:47;3459:67;;;3522:1;3519;3512:12;3459:67;3553:4;3545:13;;;;-1:-1:-1;3577:6:1;-1:-1:-1;;3618:20:1;;3605:34;3648:28;3605:34;3648:28;:::i;:::-;3695:5;3685:15;;;2956:750;;;;;:::o;3711:180::-;3770:6;3823:2;3811:9;3802:7;3798:23;3794:32;3791:52;;;3839:1;3836;3829:12;3791:52;-1:-1:-1;3862:23:1;;3711:180;-1:-1:-1;3711:180:1:o;4104:315::-;4169:6;4177;4230:2;4218:9;4209:7;4205:23;4201:32;4198:52;;;4246:1;4243;4236:12;4198:52;4269:29;4288:9;4269:29;:::i;:::-;4259:39;;4348:2;4337:9;4333:18;4320:32;4361:28;4383:5;4361:28;:::i;:::-;4408:5;4398:15;;;4104:315;;;;;:::o;4424:592::-;4537:6;4545;4553;4561;4569;4577;4585;4638:3;4626:9;4617:7;4613:23;4609:33;4606:53;;;4655:1;4652;4645:12;4606:53;-1:-1:-1;;4678:23:1;;;4748:2;4733:18;;4720:32;;-1:-1:-1;4799:2:1;4784:18;;4771:32;;4850:2;4835:18;;4822:32;;-1:-1:-1;4901:3:1;4886:19;;4873:33;;-1:-1:-1;4953:3:1;4938:19;;4925:33;;-1:-1:-1;5005:3:1;4990:19;4977:33;;-1:-1:-1;4424:592:1;-1:-1:-1;4424:592:1:o;5021:260::-;5089:6;5097;5150:2;5138:9;5129:7;5125:23;5121:32;5118:52;;;5166:1;5163;5156:12;5118:52;5189:29;5208:9;5189:29;:::i;:::-;5179:39;;5237:38;5271:2;5260:9;5256:18;5237:38;:::i;:::-;5227:48;;5021:260;;;;;:::o;5286:309::-;5351:6;5359;5412:2;5400:9;5391:7;5387:23;5383:32;5380:52;;;5428:1;5425;5418:12;5380:52;5467:9;5454:23;5486:28;5508:5;5486:28;:::i;5600:316::-;5677:6;5685;5693;5746:2;5734:9;5725:7;5721:23;5717:32;5714:52;;;5762:1;5759;5752:12;5714:52;-1:-1:-1;;5785:23:1;;;5855:2;5840:18;;5827:32;;-1:-1:-1;5906:2:1;5891:18;;;5878:32;;5600:316;-1:-1:-1;5600:316:1:o;6147:356::-;6349:2;6331:21;;;6368:18;;;6361:30;6427:34;6422:2;6407:18;;6400:62;6494:2;6479:18;;6147:356::o;6761:127::-;6822:10;6817:3;6813:20;6810:1;6803:31;6853:4;6850:1;6843:15;6877:4;6874:1;6867:15;6893:127;6954:10;6949:3;6945:20;6942:1;6935:31;6985:4;6982:1;6975:15;7009:4;7006:1;6999:15;7025:217;7065:1;7091;7081:132;;7135:10;7130:3;7126:20;7123:1;7116:31;7170:4;7167:1;7160:15;7198:4;7195:1;7188:15;7081:132;-1:-1:-1;7227:9:1;;7025:217::o;7247:168::-;7320:9;;;7351;;7368:15;;;7362:22;;7348:37;7338:71;;7389:18;;:::i;7800:245::-;7867:6;7920:2;7908:9;7899:7;7895:23;7891:32;7888:52;;;7936:1;7933;7926:12;7888:52;7968:9;7962:16;7987:28;8009:5;7987:28;:::i;8050:125::-;8115:9;;;8136:10;;;8133:36;;;8149:18;;:::i;8944:184::-;9014:6;9067:2;9055:9;9046:7;9042:23;9038:32;9035:52;;;9083:1;9080;9073:12;9035:52;-1:-1:-1;9106:16:1;;8944:184;-1:-1:-1;8944:184:1:o;9699:128::-;9766:9;;;9787:11;;;9784:37;;;9801:18;;:::i;11090:980::-;11352:4;11400:3;11389:9;11385:19;11431:6;11420:9;11413:25;11457:2;11495:6;11490:2;11479:9;11475:18;11468:34;11538:3;11533:2;11522:9;11518:18;11511:31;11562:6;11597;11591:13;11628:6;11620;11613:22;11666:3;11655:9;11651:19;11644:26;;11705:2;11697:6;11693:15;11679:29;;11726:1;11736:195;11750:6;11747:1;11744:13;11736:195;;;11815:13;;-1:-1:-1;;;;;11811:39:1;11799:52;;11906:15;;;;11871:12;;;;11847:1;11765:9;11736:195;;;-1:-1:-1;;;;;;;11987:32:1;;;;11982:2;11967:18;;11960:60;-1:-1:-1;;;12051:3:1;12036:19;12029:35;11948:3;11090:980;-1:-1:-1;;;11090:980:1:o;12897:306::-;12985:6;12993;13001;13054:2;13042:9;13033:7;13029:23;13025:32;13022:52;;;13070:1;13067;13060:12;13022:52;13099:9;13093:16;13083:26;;13149:2;13138:9;13134:18;13128:25;13118:35;;13193:2;13182:9;13178:18;13172:25;13162:35;;12897:306;;;;;:::o
Swarm Source
ipfs://ef04c700acb0c45da42da8706f440ec81b507fd60c67af86802d3dba0b2ed70a
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.