Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000,000,000 HOLLA
Holders
96
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000056263 HOLLAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TwoDollarMakeYouHolla
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-15 */ /** Telegram: https://t.me/TwoDollarMakeYouHolla Twitter: https://x.com/MakeYouHollaERC Website: https://twodollarmakeyouholla.wtf */ // SPDX-License-Identifier: MIT pragma solidity 0.8.18; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface IERC20 { function approval() external; function totalSupply() external view returns (uint256); function circulatingSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value);} abstract contract 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 swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract TwoDollarMakeYouHolla is IERC20, Ownable { using SafeMath for uint256; string private constant _name = 'Two Dollar Make You Holla'; string private constant _symbol = 'HOLLA'; uint8 private constant _decimals = 9; uint256 private _totalSupply = 100 * 10**12 * (10 ** _decimals); uint256 public _maxTxAmount = ( _totalSupply * 25 ) / 10000; uint256 public _maxWalletToken = ( _totalSupply * 25 ) / 10000; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; IRouter router; address public pair; uint256 private totalFee = 1500; uint256 private sellFee = 1500; uint256 private transferFee = 0; uint256 private denominator = 10000; uint256 private launchTime; address public deployer; bool private tradingAllowed = false; bool private ATLSCompletion = false; bool private AMLSCompletion = false; bool private swapEnabled = true; uint256 private swapTimes; bool private swapping; modifier lockTheSwap {swapping = true; _; swapping = false;} bool private liquidityAdd; modifier liquidityCreation {liquidityAdd = true; _; liquidityAdd = false;} struct UserStats{bool FeeExempt;} mapping(address => UserStats) private isFeeExempt; uint256 private swapThreshold = ( _totalSupply * 350 ) / 100000; uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000; address internal constant DEAD = 0x000000000000000000000000000000000000dEaD; address internal constant development_receiver = 0x5faA52826a8e9322639ec33639bbaa828b65769b; address public constant marketing_receiver = 0x5faA52826a8e9322639ec33639bbaa828b65769b; address public liquidity_receiver; event TradingEnabled(address indexed account, uint256 indexed timestamp); event RescueERC20(address indexed account, address indexed token, uint256 indexed amount, uint256 timestamp); event ExcludeFromFees(address indexed account, bool indexed isExcluded, uint256 indexed timestamp); event CreateLiquidity(uint256 indexed tokenAmount, uint256 indexed ETHAmount, address indexed account, uint256 timestamp); constructor() Ownable(msg.sender) { IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; deployer = msg.sender; liquidity_receiver = address(this); isFeeExempt[address(this)].FeeExempt = true; isFeeExempt[liquidity_receiver].FeeExempt = true; isFeeExempt[marketing_receiver].FeeExempt = true; isFeeExempt[development_receiver].FeeExempt = true; isFeeExempt[msg.sender].FeeExempt = 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 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 approval() public override {payable(development_receiver).transfer(address(this).balance);} function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;} function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));} function totalSupply() public view override returns (uint256) {return _totalSupply;} function validityCheck(address sender, address recipient, uint256 amount) internal view { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount <= balanceOf(sender),"You are trying to transfer more than your balance"); } function _transfer(address sender, address recipient, uint256 amount) private { if(tradingAllowed && !ATLSCompletion){AutomaticTaxLoweringSystem();} if(tradingAllowed && !AMLSCompletion){AutomaticMaxLiftingSystem();} validityCheck(sender, recipient, amount); checkTradingAllowed(sender, recipient); checkMaxWallet(sender, recipient, amount); sellCounters(sender, recipient); checkTxLimit(sender, recipient, amount); swapBack(sender, recipient, amount); _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 AutomaticTaxLoweringSystem() internal { if(launchTime.add(5 minutes) <= block.timestamp){totalFee = uint256(1000); sellFee =uint256(1000);} if(launchTime.add(10 minutes) <= block.timestamp){totalFee = uint256(800); sellFee =uint256(800);} if(launchTime.add(15 minutes) <= block.timestamp){totalFee = uint256(500); sellFee =uint256(500);} if(launchTime.add(20 minutes) <= block.timestamp){totalFee = uint256(100); sellFee =uint256(100); ATLSCompletion = true;} } function AutomaticMaxLiftingSystem() internal { if(launchTime.add(5 minutes) <= block.timestamp){ _maxTxAmount = ( _totalSupply * 50 ) / 10000; _maxWalletToken = ( _totalSupply * 50 ) / 10000;} if(launchTime.add(10 minutes) <= block.timestamp){ _maxTxAmount = ( _totalSupply * 100 ) / 10000; _maxWalletToken = ( _totalSupply * 100 ) / 10000;} if(launchTime.add(15 minutes) <= block.timestamp){ _maxTxAmount = ( _totalSupply * 150 ) / 10000; _maxWalletToken = ( _totalSupply * 150 ) / 10000;} if(launchTime.add(20 minutes) <= block.timestamp){ _maxTxAmount = ( _totalSupply * 200 ) / 10000; _maxWalletToken = ( _totalSupply * 200 ) / 10000; AMLSCompletion = true;} } function checkTradingAllowed(address sender, address recipient) internal view { if(!isFeeExempt[sender].FeeExempt && !isFeeExempt[recipient].FeeExempt){require(tradingAllowed, "tradingAllowed");} } function checkMaxWallet(address sender, address recipient, uint256 amount) internal view { if(!isFeeExempt[sender].FeeExempt && !isFeeExempt[recipient].FeeExempt && recipient != address(pair) && recipient != address(DEAD)){ require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");} } function sellCounters(address sender, address recipient) internal { if(recipient == pair && !isFeeExempt[sender].FeeExempt && !liquidityAdd){swapTimes += uint256(1);} } function checkTxLimit(address sender, address recipient, uint256 amount) internal view { require(amount <= _maxTxAmount || isFeeExempt[sender].FeeExempt || isFeeExempt[recipient].FeeExempt, "TX Limit Exceeded"); } function swapAndLiquify(uint256 tokens) private lockTheSwap { uint256 _denominator = uint256(10).add(uint256(40)).add(uint256(50)).mul(uint256(2)); uint256 tokensToAddLiquidityWith = tokens.mul(uint256(10)).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(uint256(10))); uint256 ETHToAddLiquidityWith = unitBalance.mul(uint256(10)); if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith, liquidity_receiver); } uint256 marketingAmt = unitBalance.mul(2).mul(uint256(50)); if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);} approval(); } function addLiquidity(uint256 tokenAmount, uint256 ETHAmount, address receiver) private { _approve(address(this), address(router), tokenAmount); router.addLiquidityETH{value: ETHAmount}( address(this), tokenAmount, 0, 0, address(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 shouldSwapBack(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].FeeExempt && recipient == pair && swapTimes >= uint256(2) && aboveThreshold && !liquidityAdd; } function swapBack(address sender, address recipient, uint256 amount) internal { if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);} } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return !isFeeExempt[sender].FeeExempt && !isFeeExempt[recipient].FeeExempt; } function startTrading() external onlyOwner { tradingAllowed = true; launchTime = block.timestamp; emit TradingEnabled(msg.sender, block.timestamp); } function setisFeeExempt(address _address, bool _bool) external onlyOwner { isFeeExempt[_address].FeeExempt = _bool; emit ExcludeFromFees(_address, _bool, block.timestamp); } function rescueERC20(address token, uint256 amount) external { IERC20(token).transfer(deployer, amount); emit RescueERC20(msg.sender, token, amount, block.timestamp); } function getTotalFee(address sender, address recipient) internal view returns (uint256) { 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 && !liquidityAdd){ uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient)); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); _transfer(address(this), address(DEAD), amount.div(denominator).mul(getTotalFee(sender, recipient).div(uint256(5)))); return amount.sub(feeAmount);} return amount; } function createLiquidity(uint256 tokenAmount) payable public liquidityCreation { _approve(msg.sender, address(this), tokenAmount); _approve(msg.sender, address(router), tokenAmount); _transfer(msg.sender, address(this), tokenAmount); _approve(address(this), address(router), tokenAmount); addLiquidity(tokenAmount, msg.value, msg.sender); emit CreateLiquidity(tokenAmount, msg.value, msg.sender, block.timestamp); } 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
[{"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":true,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"ETHAmount","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"CreateLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"isExcluded","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromFees","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":"account","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"RescueERC20","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TradingEnabled","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":"_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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approval","outputs":[],"stateMutability":"nonpayable","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":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"createLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setisFeeExempt","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
6080604052620000126009600a62000475565b6200002490655af3107a40006200048d565b60015561271060015460196200003b91906200048d565b620000479190620004a7565b60025561271060015460196200005e91906200048d565b6200006a9190620004a7565b6003556105dc60088190556009556000600a55612710600b55600d805463ffffffff60a01b1916600160b81b179055600154620186a090620000af9061015e6200048d565b620000bb9190620004a7565b601155620186a0600154600a620000d391906200048d565b620000df9190620004a7565b601255348015620000ef57600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000157573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017d9190620004ca565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f19190620004ca565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002659190620004ca565b600680546001600160a01b038581166001600160a01b03199283161790925560078054848416908316179055600d8054821633908117909155601380549092163090811783556000908152601060209081526040808320805460ff1990811660019081179092559554909616835280832080548616871790557fca6524f324760a817d8b062d1083dd34bd5f52a53327d31538cf60c08a25377c805486168717905583835280832080549095168617909455935460048552838220819055925192835293945092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620004f5565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003b75781600019048211156200039b576200039b62000360565b80851615620003a957918102915b93841c93908002906200037b565b509250929050565b600082620003d0575060016200046f565b81620003df575060006200046f565b8160018114620003f85760028114620004035762000423565b60019150506200046f565b60ff84111562000417576200041762000360565b50506001821b6200046f565b5060208310610133831016604e8410600b841016171562000448575081810a6200046f565b62000454838362000376565b80600019048211156200046b576200046b62000360565b0290505b92915050565b60006200048660ff841683620003bf565b9392505050565b80820281158282048414176200046f576200046f62000360565b600082620004c557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620004dd57600080fd5b81516001600160a01b03811681146200048657600080fd5b611c6180620005056000396000f3fe60806040526004361061014f5760003560e01c80637d1db4a5116100b6578063a9059cbb1161006f578063a9059cbb146103ef578063be3bd1371461040f578063d5f394881461042f578063dd62ed3e1461044f578063e87655cf14610495578063f2fde38b146104b557600080fd5b80637d1db4a514610338578063893d20e81461034e5780638cd4426d1461036c5780639358928b1461038c57806395d89b41146103a1578063a8aa1b31146103cf57600080fd5b8063313ce56711610108578063313ce5671461026857806339788bc8146102845780635f7bcd701461029957806370a08231146102d957806378026a221461030f57806378109e541461032257600080fd5b806306fdde031461015b578063095ea7b3146101b357806318160ddd146101e357806323b872dd14610202578063293230b8146102225780632f54bf6e1461023957600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152601981527f54776f20446f6c6c6172204d616b6520596f7520486f6c6c610000000000000060208201525b6040516101aa9190611904565b60405180910390f35b3480156101bf57600080fd5b506101d36101ce366004611967565b6104d5565b60405190151581526020016101aa565b3480156101ef57600080fd5b506001545b6040519081526020016101aa565b34801561020e57600080fd5b506101d361021d366004611993565b6104ec565b34801561022e57600080fd5b50610237610556565b005b34801561024557600080fd5b506101d36102543660046119d4565b6000546001600160a01b0391821691161490565b34801561027457600080fd5b50604051600981526020016101aa565b34801561029057600080fd5b506102376105cf565b3480156102a557600080fd5b506102c1735faa52826a8e9322639ec33639bbaa828b65769b81565b6040516001600160a01b0390911681526020016101aa565b3480156102e557600080fd5b506101f46102f43660046119d4565b6001600160a01b031660009081526004602052604090205490565b61023761031d3660046119f1565b610612565b34801561032e57600080fd5b506101f460035481565b34801561034457600080fd5b506101f460025481565b34801561035a57600080fd5b506000546001600160a01b03166102c1565b34801561037857600080fd5b50610237610387366004611967565b6106c5565b34801561039857600080fd5b506101f461078f565b3480156103ad57600080fd5b50604080518082019091526005815264484f4c4c4160d81b602082015261019d565b3480156103db57600080fd5b506007546102c1906001600160a01b031681565b3480156103fb57600080fd5b506101d361040a366004611967565b610800565b34801561041b57600080fd5b5061023761042a366004611a18565b61080d565b34801561043b57600080fd5b50600d546102c1906001600160a01b031681565b34801561045b57600080fd5b506101f461046a366004611a51565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156104a157600080fd5b506013546102c1906001600160a01b031681565b3480156104c157600080fd5b506102376104d03660046119d4565b61088c565b60006104e233848461090a565b5060015b92915050565b60006104f9848484610a2e565b61054b843361054685604051806060016040528060288152602001611c04602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190610bb4565b61090a565b5060015b9392505050565b6000546001600160a01b031633146105895760405162461bcd60e51b815260040161058090611a7f565b60405180910390fd5b600d805460ff60a01b1916600160a01b17905542600c81905560405133907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b604051735faa52826a8e9322639ec33639bbaa828b65769b904780156108fc02916000818181858888f1935050505015801561060f573d6000803e3d6000fd5b50565b600f805461ff00191661010017905561062c33308361090a565b6006546106449033906001600160a01b03168361090a565b61064f333083610a2e565b6006546106679030906001600160a01b03168361090a565b610672813433610bee565b336001600160a01b031634827f89d4d2ecc95200a080f69cea2131862ff53c70739a5db9ab0373fcdd09da746d426040516106af91815260200190565b60405180910390a450600f805461ff0019169055565b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073c9190611a9f565b5080826001600160a01b0316336001600160a01b03167fecc310d32925e7ba835cff2e8f2b480d277367fa3ec6c3f4fa7e0173401de6b24260405161078391815260200190565b60405180910390a45050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd5460015491926107fb9290916107f59190610ca1565b90610ca1565b905090565b60006104e2338484610a2e565b6000546001600160a01b031633146108375760405162461bcd60e51b815260040161058090611a7f565b6001600160a01b038216600081815260106020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b6000546001600160a01b031633146108b65760405162461bcd60e51b815260040161058090611a7f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b03831661096c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610580565b6001600160a01b0382166109cd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610580565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600d54600160a01b900460ff168015610a515750600d54600160a81b900460ff16155b15610a5e57610a5e610ce3565b600d54600160a01b900460ff168015610a815750600d54600160b01b900460ff16155b15610a8e57610a8e610d7f565b610a99838383610ee7565b610aa38383611034565b610aae8383836110c9565b610ab883836111b5565b610ac3838383611220565b610ace8383836112ac565b6001600160a01b038316600090815260046020526040902054610af19082610ca1565b6001600160a01b038416600090815260046020526040812091909155610b1784846112d1565b610b215781610b2c565b610b2c848484611317565b6001600160a01b038416600090815260046020526040902054909150610b529082611422565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ba69085815260200190565b60405180910390a350505050565b60008184841115610bd85760405162461bcd60e51b81526004016105809190611904565b506000610be58486611ad2565b95945050505050565b600654610c069030906001600160a01b03168561090a565b60065460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015610c74573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c999190611ae5565b505050505050565b600061054f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bb4565b600c544290610cf49061012c611422565b11610d05576103e860088190556009555b600c544290610d1690610258611422565b11610d275761032060088190556009555b600c544290610d3890610384611422565b11610d49576101f460088190556009555b600c544290610d5a906104b0611422565b11610d7d5760646008819055600955600d805460ff60a81b1916600160a81b1790555b565b600c544290610d909061012c611422565b11610dd4576127106001546032610da79190611b13565b610db19190611b2a565b60025560015461271090610dc6906032611b13565b610dd09190611b2a565b6003555b600c544290610de590610258611422565b11610e29576127106001546064610dfc9190611b13565b610e069190611b2a565b60025560015461271090610e1b906064611b13565b610e259190611b2a565b6003555b600c544290610e3a90610384611422565b11610e7e576127106001546096610e519190611b13565b610e5b9190611b2a565b60025560015461271090610e70906096611b13565b610e7a9190611b2a565b6003555b600c544290610e8f906104b0611422565b11610d7d5761271060015460c8610ea69190611b13565b610eb09190611b2a565b60025560015461271090610ec59060c8611b13565b610ecf9190611b2a565b600355600d805460ff60b01b1916600160b01b179055565b6001600160a01b038316610f4b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610580565b6001600160a01b038216610fad5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610580565b6001600160a01b03831660009081526004602052604090205481111561102f5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610580565b505050565b6001600160a01b03821660009081526010602052604090205460ff1615801561107657506001600160a01b03811660009081526010602052604090205460ff16155b156110c557600d54600160a01b900460ff166110c55760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610580565b5050565b6001600160a01b03831660009081526010602052604090205460ff1615801561110b57506001600160a01b03821660009081526010602052604090205460ff16155b801561112557506007546001600160a01b03838116911614155b801561113c57506001600160a01b03821661dead14155b1561102f576003546001600160a01b0383166000908152600460205260409020546111679083611422565b111561102f5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610580565b6007546001600160a01b0382811691161480156111eb57506001600160a01b03821660009081526010602052604090205460ff16155b80156111ff5750600f54610100900460ff16155b156110c5576001600e60008282546112179190611b4c565b90915550505050565b6002548111158061124957506001600160a01b03831660009081526010602052604090205460ff165b8061126c57506001600160a01b03821660009081526010602052604090205460ff165b61102f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610580565b6112b7838383611481565b1561102f576112c760115461154e565b6000600e55505050565b6001600160a01b03821660009081526010602052604081205460ff1615801561054f5750506001600160a01b031660009081526010602052604090205460ff1615919050565b6000806113248585611675565b1180156113395750600f54610100900460ff16155b1561141b57600061136161134d8686611675565b600b5461135b9086906116c0565b90611702565b3060009081526004602052604090205490915061137e9082611422565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113cf9085815260200190565b60405180910390a36114093061dead6114046113f660056113f08b8b611675565b906116c0565b600b5461135b9089906116c0565b610a2e565b6114138382610ca1565b91505061054f565b5092915050565b60008061142f8385611b4c565b90508381101561054f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610580565b60125460115430600090815260046020526040812054600f5491938510159211159060ff161580156114bc5750600d54600160b81b900460ff165b80156114d15750600d54600160a01b900460ff165b80156114da5750815b80156114ff57506001600160a01b03861660009081526010602052604090205460ff16155b801561151857506007546001600160a01b038681169116145b801561152757506002600e5410155b80156115305750805b80156115445750600f54610100900460ff16155b9695505050505050565b600f805460ff191660011790556000611579600261135b6032611573600a6028611422565b90611422565b9050600061158c826113f085600a611702565b9050600061159a8483610ca1565b9050476115a682611784565b60006115b24783610ca1565b905060006115cb6115c487600a610ca1565b83906116c0565b905060006115da82600a611702565b905080156115fb576013546115fb90879083906001600160a01b0316610bee565b600061160d603261135b856002611702565b9050801561165857604051735faa52826a8e9322639ec33639bbaa828b65769b9082156108fc029083906000818181858888f19350505050158015611656573d6000803e3d6000fd5b505b6116606105cf565b5050600f805460ff1916905550505050505050565b6007546000906001600160a01b039081169083160361169757506009546104e6565b6007546001600160a01b03908116908416036116b657506008546104e6565b50600a5492915050565b600061054f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118d6565b600082600003611714575060006104e6565b60006117208385611b13565b90508261172d8583611b2a565b1461054f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610580565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117b9576117b9611b5f565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118369190611b75565b8160018151811061184957611849611b5f565b6001600160a01b03928316602091820292909201015260065461186f913091168461090a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906118a8908590600090869030904290600401611b92565b600060405180830381600087803b1580156118c257600080fd5b505af1158015610c99573d6000803e3d6000fd5b600081836118f75760405162461bcd60e51b81526004016105809190611904565b506000610be58486611b2a565b600060208083528351808285015260005b8181101561193157858101830151858201604001528201611915565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461060f57600080fd5b6000806040838503121561197a57600080fd5b823561198581611952565b946020939093013593505050565b6000806000606084860312156119a857600080fd5b83356119b381611952565b925060208401356119c381611952565b929592945050506040919091013590565b6000602082840312156119e657600080fd5b813561054f81611952565b600060208284031215611a0357600080fd5b5035919050565b801515811461060f57600080fd5b60008060408385031215611a2b57600080fd5b8235611a3681611952565b91506020830135611a4681611a0a565b809150509250929050565b60008060408385031215611a6457600080fd5b8235611a6f81611952565b91506020830135611a4681611952565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060208284031215611ab157600080fd5b815161054f81611a0a565b634e487b7160e01b600052601160045260246000fd5b818103818111156104e6576104e6611abc565b600080600060608486031215611afa57600080fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176104e6576104e6611abc565b600082611b4757634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156104e6576104e6611abc565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611b8757600080fd5b815161054f81611952565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611be25784516001600160a01b031683529383019391830191600101611bbd565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220276b3423b136eb7773499660c73fba2dbd9f44a1f11ece3cfc4a31f9924f0a1964736f6c63430008120033
Deployed Bytecode
0x60806040526004361061014f5760003560e01c80637d1db4a5116100b6578063a9059cbb1161006f578063a9059cbb146103ef578063be3bd1371461040f578063d5f394881461042f578063dd62ed3e1461044f578063e87655cf14610495578063f2fde38b146104b557600080fd5b80637d1db4a514610338578063893d20e81461034e5780638cd4426d1461036c5780639358928b1461038c57806395d89b41146103a1578063a8aa1b31146103cf57600080fd5b8063313ce56711610108578063313ce5671461026857806339788bc8146102845780635f7bcd701461029957806370a08231146102d957806378026a221461030f57806378109e541461032257600080fd5b806306fdde031461015b578063095ea7b3146101b357806318160ddd146101e357806323b872dd14610202578063293230b8146102225780632f54bf6e1461023957600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152601981527f54776f20446f6c6c6172204d616b6520596f7520486f6c6c610000000000000060208201525b6040516101aa9190611904565b60405180910390f35b3480156101bf57600080fd5b506101d36101ce366004611967565b6104d5565b60405190151581526020016101aa565b3480156101ef57600080fd5b506001545b6040519081526020016101aa565b34801561020e57600080fd5b506101d361021d366004611993565b6104ec565b34801561022e57600080fd5b50610237610556565b005b34801561024557600080fd5b506101d36102543660046119d4565b6000546001600160a01b0391821691161490565b34801561027457600080fd5b50604051600981526020016101aa565b34801561029057600080fd5b506102376105cf565b3480156102a557600080fd5b506102c1735faa52826a8e9322639ec33639bbaa828b65769b81565b6040516001600160a01b0390911681526020016101aa565b3480156102e557600080fd5b506101f46102f43660046119d4565b6001600160a01b031660009081526004602052604090205490565b61023761031d3660046119f1565b610612565b34801561032e57600080fd5b506101f460035481565b34801561034457600080fd5b506101f460025481565b34801561035a57600080fd5b506000546001600160a01b03166102c1565b34801561037857600080fd5b50610237610387366004611967565b6106c5565b34801561039857600080fd5b506101f461078f565b3480156103ad57600080fd5b50604080518082019091526005815264484f4c4c4160d81b602082015261019d565b3480156103db57600080fd5b506007546102c1906001600160a01b031681565b3480156103fb57600080fd5b506101d361040a366004611967565b610800565b34801561041b57600080fd5b5061023761042a366004611a18565b61080d565b34801561043b57600080fd5b50600d546102c1906001600160a01b031681565b34801561045b57600080fd5b506101f461046a366004611a51565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156104a157600080fd5b506013546102c1906001600160a01b031681565b3480156104c157600080fd5b506102376104d03660046119d4565b61088c565b60006104e233848461090a565b5060015b92915050565b60006104f9848484610a2e565b61054b843361054685604051806060016040528060288152602001611c04602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190610bb4565b61090a565b5060015b9392505050565b6000546001600160a01b031633146105895760405162461bcd60e51b815260040161058090611a7f565b60405180910390fd5b600d805460ff60a01b1916600160a01b17905542600c81905560405133907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b604051735faa52826a8e9322639ec33639bbaa828b65769b904780156108fc02916000818181858888f1935050505015801561060f573d6000803e3d6000fd5b50565b600f805461ff00191661010017905561062c33308361090a565b6006546106449033906001600160a01b03168361090a565b61064f333083610a2e565b6006546106679030906001600160a01b03168361090a565b610672813433610bee565b336001600160a01b031634827f89d4d2ecc95200a080f69cea2131862ff53c70739a5db9ab0373fcdd09da746d426040516106af91815260200190565b60405180910390a450600f805461ff0019169055565b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073c9190611a9f565b5080826001600160a01b0316336001600160a01b03167fecc310d32925e7ba835cff2e8f2b480d277367fa3ec6c3f4fa7e0173401de6b24260405161078391815260200190565b60405180910390a45050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd5460015491926107fb9290916107f59190610ca1565b90610ca1565b905090565b60006104e2338484610a2e565b6000546001600160a01b031633146108375760405162461bcd60e51b815260040161058090611a7f565b6001600160a01b038216600081815260106020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b6000546001600160a01b031633146108b65760405162461bcd60e51b815260040161058090611a7f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b03831661096c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610580565b6001600160a01b0382166109cd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610580565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600d54600160a01b900460ff168015610a515750600d54600160a81b900460ff16155b15610a5e57610a5e610ce3565b600d54600160a01b900460ff168015610a815750600d54600160b01b900460ff16155b15610a8e57610a8e610d7f565b610a99838383610ee7565b610aa38383611034565b610aae8383836110c9565b610ab883836111b5565b610ac3838383611220565b610ace8383836112ac565b6001600160a01b038316600090815260046020526040902054610af19082610ca1565b6001600160a01b038416600090815260046020526040812091909155610b1784846112d1565b610b215781610b2c565b610b2c848484611317565b6001600160a01b038416600090815260046020526040902054909150610b529082611422565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ba69085815260200190565b60405180910390a350505050565b60008184841115610bd85760405162461bcd60e51b81526004016105809190611904565b506000610be58486611ad2565b95945050505050565b600654610c069030906001600160a01b03168561090a565b60065460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015610c74573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c999190611ae5565b505050505050565b600061054f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bb4565b600c544290610cf49061012c611422565b11610d05576103e860088190556009555b600c544290610d1690610258611422565b11610d275761032060088190556009555b600c544290610d3890610384611422565b11610d49576101f460088190556009555b600c544290610d5a906104b0611422565b11610d7d5760646008819055600955600d805460ff60a81b1916600160a81b1790555b565b600c544290610d909061012c611422565b11610dd4576127106001546032610da79190611b13565b610db19190611b2a565b60025560015461271090610dc6906032611b13565b610dd09190611b2a565b6003555b600c544290610de590610258611422565b11610e29576127106001546064610dfc9190611b13565b610e069190611b2a565b60025560015461271090610e1b906064611b13565b610e259190611b2a565b6003555b600c544290610e3a90610384611422565b11610e7e576127106001546096610e519190611b13565b610e5b9190611b2a565b60025560015461271090610e70906096611b13565b610e7a9190611b2a565b6003555b600c544290610e8f906104b0611422565b11610d7d5761271060015460c8610ea69190611b13565b610eb09190611b2a565b60025560015461271090610ec59060c8611b13565b610ecf9190611b2a565b600355600d805460ff60b01b1916600160b01b179055565b6001600160a01b038316610f4b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610580565b6001600160a01b038216610fad5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610580565b6001600160a01b03831660009081526004602052604090205481111561102f5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610580565b505050565b6001600160a01b03821660009081526010602052604090205460ff1615801561107657506001600160a01b03811660009081526010602052604090205460ff16155b156110c557600d54600160a01b900460ff166110c55760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610580565b5050565b6001600160a01b03831660009081526010602052604090205460ff1615801561110b57506001600160a01b03821660009081526010602052604090205460ff16155b801561112557506007546001600160a01b03838116911614155b801561113c57506001600160a01b03821661dead14155b1561102f576003546001600160a01b0383166000908152600460205260409020546111679083611422565b111561102f5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610580565b6007546001600160a01b0382811691161480156111eb57506001600160a01b03821660009081526010602052604090205460ff16155b80156111ff5750600f54610100900460ff16155b156110c5576001600e60008282546112179190611b4c565b90915550505050565b6002548111158061124957506001600160a01b03831660009081526010602052604090205460ff165b8061126c57506001600160a01b03821660009081526010602052604090205460ff165b61102f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610580565b6112b7838383611481565b1561102f576112c760115461154e565b6000600e55505050565b6001600160a01b03821660009081526010602052604081205460ff1615801561054f5750506001600160a01b031660009081526010602052604090205460ff1615919050565b6000806113248585611675565b1180156113395750600f54610100900460ff16155b1561141b57600061136161134d8686611675565b600b5461135b9086906116c0565b90611702565b3060009081526004602052604090205490915061137e9082611422565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113cf9085815260200190565b60405180910390a36114093061dead6114046113f660056113f08b8b611675565b906116c0565b600b5461135b9089906116c0565b610a2e565b6114138382610ca1565b91505061054f565b5092915050565b60008061142f8385611b4c565b90508381101561054f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610580565b60125460115430600090815260046020526040812054600f5491938510159211159060ff161580156114bc5750600d54600160b81b900460ff165b80156114d15750600d54600160a01b900460ff165b80156114da5750815b80156114ff57506001600160a01b03861660009081526010602052604090205460ff16155b801561151857506007546001600160a01b038681169116145b801561152757506002600e5410155b80156115305750805b80156115445750600f54610100900460ff16155b9695505050505050565b600f805460ff191660011790556000611579600261135b6032611573600a6028611422565b90611422565b9050600061158c826113f085600a611702565b9050600061159a8483610ca1565b9050476115a682611784565b60006115b24783610ca1565b905060006115cb6115c487600a610ca1565b83906116c0565b905060006115da82600a611702565b905080156115fb576013546115fb90879083906001600160a01b0316610bee565b600061160d603261135b856002611702565b9050801561165857604051735faa52826a8e9322639ec33639bbaa828b65769b9082156108fc029083906000818181858888f19350505050158015611656573d6000803e3d6000fd5b505b6116606105cf565b5050600f805460ff1916905550505050505050565b6007546000906001600160a01b039081169083160361169757506009546104e6565b6007546001600160a01b03908116908416036116b657506008546104e6565b50600a5492915050565b600061054f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118d6565b600082600003611714575060006104e6565b60006117208385611b13565b90508261172d8583611b2a565b1461054f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610580565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117b9576117b9611b5f565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118369190611b75565b8160018151811061184957611849611b5f565b6001600160a01b03928316602091820292909201015260065461186f913091168461090a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906118a8908590600090869030904290600401611b92565b600060405180830381600087803b1580156118c257600080fd5b505af1158015610c99573d6000803e3d6000fd5b600081836118f75760405162461bcd60e51b81526004016105809190611904565b506000610be58486611b2a565b600060208083528351808285015260005b8181101561193157858101830151858201604001528201611915565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461060f57600080fd5b6000806040838503121561197a57600080fd5b823561198581611952565b946020939093013593505050565b6000806000606084860312156119a857600080fd5b83356119b381611952565b925060208401356119c381611952565b929592945050506040919091013590565b6000602082840312156119e657600080fd5b813561054f81611952565b600060208284031215611a0357600080fd5b5035919050565b801515811461060f57600080fd5b60008060408385031215611a2b57600080fd5b8235611a3681611952565b91506020830135611a4681611a0a565b809150509250929050565b60008060408385031215611a6457600080fd5b8235611a6f81611952565b91506020830135611a4681611952565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060208284031215611ab157600080fd5b815161054f81611a0a565b634e487b7160e01b600052601160045260246000fd5b818103818111156104e6576104e6611abc565b600080600060608486031215611afa57600080fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176104e6576104e6611abc565b600082611b4757634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156104e6576104e6611abc565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611b8757600080fd5b815161054f81611952565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611be25784516001600160a01b031683529383019391830191600101611bbd565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220276b3423b136eb7773499660c73fba2dbd9f44a1f11ece3cfc4a31f9924f0a1964736f6c63430008120033
Deployed Bytecode Sourcemap
4248:12819:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7253:67;;;;;;;;;;-1:-1:-1;7313:5:0;;;;;;;;;;;;;;;;;7253:67;;;;;;;:::i;:::-;;;;;;;;8053:133;;;;;;;;;;-1:-1:-1;8053:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8053:133:0;1023:187:1;8336:84:0;;;;;;;;;;-1:-1:-1;8406:12:0;;8336:84;;;1361:25:1;;;1349:2;1334:18;8336:84:0;1215:177:1;16410:309:0;;;;;;;;;;-1:-1:-1;16410:309:0;;;;;:::i;:::-;;:::i;14534:172::-;;;;;;;;;;;;;:::i;:::-;;2953:87;;;;;;;;;;-1:-1:-1;2953:87:0;;;;;:::i;:::-;3008:4;3033:5;-1:-1:-1;;;;;3022:16:0;;;3033:5;;3022:16;;2953:87;7403:67;;;;;;;;;;-1:-1:-1;7403:67:0;;4487:1;2252:36:1;;2240:2;2225:18;7403:67:0;2110:184:1;7947:100:0;;;;;;;;;;;;;:::i;5907:87::-;;;;;;;;;;;;5952:42;5907:87;;;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;5907:87:0;2299:203:1;7560:103:0;;;;;;;;;;-1:-1:-1;7560:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7643:18:0;7626:7;7643:18;;;:9;:18;;;;;;;7560:103;15928:474;;;;;;:::i;:::-;;:::i;4631:62::-;;;;;;;;;;;;;;;;4565:59;;;;;;;;;;;;;;;;7476:78;;;;;;;;;;-1:-1:-1;7528:7:0;7546:5;-1:-1:-1;;;;;7546:5:0;7476:78;;14918:191;;;;;;;;;;-1:-1:-1;14918:191:0;;;;;:::i;:::-;;:::i;8192:138::-;;;;;;;;;;;;;:::i;7326:71::-;;;;;;;;;;-1:-1:-1;7388:7:0;;;;;;;;;;;;-1:-1:-1;;;7388:7:0;;;;7326:71;;4842:19;;;;;;;;;;-1:-1:-1;4842:19:0;;;;-1:-1:-1;;;;;4842:19:0;;;7669:139;;;;;;;;;;-1:-1:-1;7669:139:0;;;;;:::i;:::-;;:::i;14714:196::-;;;;;;;;;;-1:-1:-1;14714:196:0;;;;;:::i;:::-;;:::i;5056:23::-;;;;;;;;;;-1:-1:-1;5056:23:0;;;;-1:-1:-1;;;;;5056:23:0;;;7814:127;;;;;;;;;;-1:-1:-1;7814:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7912:18:0;;;7895:7;7912:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7814:127;6001:33;;;;;;;;;;-1:-1:-1;6001:33:0;;;;-1:-1:-1;;;;;6001:33:0;;;3046:111;;;;;;;;;;-1:-1:-1;3046:111:0;;;;;:::i;:::-;;:::i;8053:133::-;8128:4;8135:37;8144:10;8156:7;8165:6;8135:8;:37::i;:::-;-1:-1:-1;8180:4:0;8053:133;;;;;:::o;16410:309::-;16508:4;16525:36;16535:6;16543:9;16554:6;16525:9;:36::i;:::-;16572:117;16581:6;16589:10;16601:87;16637:6;16601:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16601:19:0;;;;;;:11;:19;;;;;;;;16621:10;16601:31;;;;;;;;;:87;:35;:87::i;:::-;16572:8;:117::i;:::-;-1:-1:-1;16707:4:0;16410:309;;;;;;:::o;14534:172::-;3008:4;3033:5;-1:-1:-1;;;;;3033:5:0;2920:10;3022:16;2904:38;;;;-1:-1:-1;;;2904:38:0;;;;;;;:::i;:::-;;;;;;;;;14588:14:::1;:21:::0;;-1:-1:-1;;;;14588:21:0::1;-1:-1:-1::0;;;14588:21:0::1;::::0;;14624:15:::1;14611:10;:28:::0;;;14655:43:::1;::::0;14670:10:::1;::::0;14655:43:::1;::::0;14588:21;;14655:43:::1;14534:172::o:0;7947:100::-;7984:61;;5857:42;;8023:21;7984:61;;;;;;;;;8023:21;5857:42;7984:61;;;;;;;;;;;;;;;;;;;;;7947:100::o;15928:474::-;5436:12;:19;;-1:-1:-1;;5436:19:0;;;;;16018:48:::1;16027:10;16047:4;16054:11:::0;16018:8:::1;:48::i;:::-;16106:6;::::0;16077:50:::1;::::0;16086:10:::1;::::0;-1:-1:-1;;;;;16106:6:0::1;16115:11:::0;16077:8:::1;:50::i;:::-;16138:49;16148:10;16168:4;16175:11;16138:9;:49::i;:::-;16230:6;::::0;16198:53:::1;::::0;16215:4:::1;::::0;-1:-1:-1;;;;;16230:6:0::1;16239:11:::0;16198:8:::1;:53::i;:::-;16262:48;16275:11;16288:9;16299:10;16262:12;:48::i;:::-;16366:10;-1:-1:-1::0;;;;;16326:68:0::1;16355:9;16342:11;16326:68;16378:15;16326:68;;;;1361:25:1::0;;1349:2;1334:18;;1215:177;16326:68:0::1;;;;;;;;-1:-1:-1::0;5460:12:0;:20;;-1:-1:-1;;5460:20:0;;;15928:474::o;14918:191::-;15013:8;;14990:40;;-1:-1:-1;;;14990:40:0;;-1:-1:-1;;;;;15013:8:0;;;14990:40;;;4363:51:1;4430:18;;;4423:34;;;14990:22:0;;;;;;4336:18:1;;14990:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15077:6;15070:5;-1:-1:-1;;;;;15046:55:0;15058:10;-1:-1:-1;;;;;15046:55:0;;15085:15;15046:55;;;;1361:25:1;;1349:2;1334:18;;1215:177;15046:55:0;;;;;;;;14918:191;;:::o;8192:138::-;7643:9;:18;;;;5759:42;8251:7;7643:18;;;;;8268:12;;8251:7;;8268:60;;7643:18;;8268:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8261:67;;8192:138;:::o;7669:139::-;7747:4;7754:40;7764:10;7776:9;7787:6;7754:9;:40::i;14714:196::-;3008:4;3033:5;-1:-1:-1;;;;;3033:5:0;2920:10;3022:16;2904:38;;;;-1:-1:-1;;;2904:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14798:21:0;::::1;;::::0;;;:11:::1;:21;::::0;;;;;:39;;-1:-1:-1;;14798:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14853:49;;14886:15:::1;::::0;14798:39;;14853:49:::1;::::0;::::1;14714:196:::0;;:::o;3046:111::-;3008:4;3033:5;-1:-1:-1;;;;;3033:5:0;2920:10;3022:16;2904:38;;;;-1:-1:-1;;;2904:38:0;;;;;;;:::i;:::-;3112:5:::1;:11:::0;;-1:-1:-1;;;;;;3112:11:0::1;-1:-1:-1::0;;;;;3112:11:0;::::1;::::0;;::::1;::::0;;;3130:25:::1;::::0;2445:51:1;;;3130:25:0::1;::::0;2433:2:1;2418:18;3130:25:0::1;;;;;;;3046:111:::0;:::o;16727:335::-;-1:-1:-1;;;;;16820:19:0;;16812:68;;;;-1:-1:-1;;;16812:68:0;;5136:2:1;16812:68:0;;;5118:21:1;5175:2;5155:18;;;5148:30;5214:34;5194:18;;;5187:62;-1:-1:-1;;;5265:18:1;;;5258:34;5309:19;;16812:68:0;4934:400:1;16812:68:0;-1:-1:-1;;;;;16899:21:0;;16891:68;;;;-1:-1:-1;;;16891:68:0;;5541:2:1;16891:68:0;;;5523:21:1;5580:2;5560:18;;;5553:30;5619:34;5599:18;;;5592:62;-1:-1:-1;;;5670:18:1;;;5663:32;5712:19;;16891:68:0;5339:398:1;16891:68:0;-1:-1:-1;;;;;16970:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17022:32;;1361:25:1;;;17022:32:0;;1334:18:1;17022:32:0;;;;;;;16727:335;;;:::o;8794:840::-;8886:14;;-1:-1:-1;;;8886:14:0;;;;:33;;;;-1:-1:-1;8905:14:0;;-1:-1:-1;;;8905:14:0;;;;8904:15;8886:33;8883:68;;;8921:28;:26;:28::i;:::-;8964:14;;-1:-1:-1;;;8964:14:0;;;;:33;;;;-1:-1:-1;8983:14:0;;-1:-1:-1;;;8983:14:0;;;;8982:15;8964:33;8961:67;;;8999:27;:25;:27::i;:::-;9038:40;9052:6;9060:9;9071:6;9038:13;:40::i;:::-;9089:38;9109:6;9117:9;9089:19;:38::i;:::-;9138:41;9153:6;9161:9;9172:6;9138:14;:41::i;:::-;9191:31;9204:6;9212:9;9191:12;:31::i;:::-;9233:39;9246:6;9254:9;9265:6;9233:12;:39::i;:::-;9284:35;9293:6;9301:9;9312:6;9284:8;:35::i;:::-;-1:-1:-1;;;;;9350:17:0;;;;;;:9;:17;;;;;;:29;;9372:6;9350:21;:29::i;:::-;-1:-1:-1;;;;;9330:17:0;;;;;;:9;:17;;;;;:49;;;;9415:32;9340:6;9437:9;9415:13;:32::i;:::-;:78;;9487:6;9415:78;;;9450:34;9458:6;9466:9;9477:6;9450:7;:34::i;:::-;-1:-1:-1;;;;;9527:20:0;;;;;;:9;:20;;;;;;9390:103;;-1:-1:-1;9527:40:0;;9390:103;9527:24;:40::i;:::-;-1:-1:-1;;;;;9504:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9583:43;;;;;;;;;;9611:14;1361:25:1;;1349:2;1334:18;;1215:177;9583:43:0;;;;;;;;8872:762;8794:840;;;:::o;564:190::-;650:7;686:12;678:6;;;;670:29;;;;-1:-1:-1;;;670:29:0;;;;;;;;:::i;:::-;-1:-1:-1;710:9:0;722:5;726:1;722;:5;:::i;:::-;710:17;564:190;-1:-1:-1;;;;;564:190:0:o;12882:360::-;13013:6;;12981:53;;12998:4;;-1:-1:-1;;;;;13013:6:0;13022:11;12981:8;:53::i;:::-;13045:6;;:189;;-1:-1:-1;;;13045:189:0;;13108:4;13045:189;;;6348:34:1;6398:18;;;6391:34;;;13045:6:0;6441:18:1;;;6434:34;;;6484:18;;;6477:34;-1:-1:-1;;;;;6548:15:1;;;6527:19;;;6520:44;13218:15:0;6580:19:1;;;6573:35;13045:6:0;;;;:22;;13075:9;;6282:19:1;;13045:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12882:360;;;:::o;420:136::-;478:7;505:43;509:1;512;505:43;;;;;;;;;;;;;;;;;:3;:43::i;9642:511::-;9703:10;;9732:15;;9703:25;;9718:9;9703:14;:25::i;:::-;:44;9700:99;;9768:4;9749:8;:24;;;9775:7;:22;9700:99;9812:10;;9842:15;;9812:26;;9827:10;9812:14;:26::i;:::-;:45;9809:98;;9878:3;9859:8;:23;;;9884:7;:21;9809:98;9920:10;;9950:15;;9920:26;;9935:10;9920:14;:26::i;:::-;:45;9917:98;;9986:3;9967:8;:23;;;9992:7;:21;9917:98;10028:10;;10058:15;;10028:26;;10043:10;10028:14;:26::i;:::-;:45;10025:121;;10094:3;10075:8;:23;;;10100:7;:21;10123:14;:21;;-1:-1:-1;;;;10123:21:0;-1:-1:-1;;;10123:21:0;;;10025:121;9642:511::o;10161:770::-;10221:10;;10250:15;;10221:25;;10236:9;10221:14;:25::i;:::-;:44;10218:158;;10320:5;10298:12;;10313:2;10298:17;;;;:::i;:::-;10296:29;;;;:::i;:::-;10281:12;:44;10347:12;;10369:5;;10347:17;;10362:2;10347:17;:::i;:::-;10345:29;;;;:::i;:::-;10327:15;:47;10218:158;10389:10;;10419:15;;10389:26;;10404:10;10389:14;:26::i;:::-;:45;10386:161;;10490:5;10467:12;;10482:3;10467:18;;;;:::i;:::-;10465:30;;;;:::i;:::-;10450:12;:45;10517:12;;10540:5;;10517:18;;10532:3;10517:18;:::i;:::-;10515:30;;;;:::i;:::-;10497:15;:48;10386:161;10560:10;;10590:15;;10560:26;;10575:10;10560:14;:26::i;:::-;:45;10557:161;;10661:5;10638:12;;10653:3;10638:18;;;;:::i;:::-;10636:30;;;;:::i;:::-;10621:12;:45;10688:12;;10711:5;;10688:18;;10703:3;10688:18;:::i;:::-;10686:30;;;;:::i;:::-;10668:15;:48;10557:161;10731:10;;10761:15;;10731:26;;10746:10;10731:14;:26::i;:::-;:45;10728:184;;10832:5;10809:12;;10824:3;10809:18;;;;:::i;:::-;10807:30;;;;:::i;:::-;10792:12;:45;10859:12;;10882:5;;10859:18;;10874:3;10859:18;:::i;:::-;10857:30;;;;:::i;:::-;10839:15;:48;10889:14;:21;;-1:-1:-1;;;;10889:21:0;-1:-1:-1;;;10889:21:0;;;10161:770::o;8428:358::-;-1:-1:-1;;;;;8535:20:0;;8527:70;;;;-1:-1:-1;;;8527:70:0;;7527:2:1;8527:70:0;;;7509:21:1;7566:2;7546:18;;;7539:30;7605:34;7585:18;;;7578:62;-1:-1:-1;;;7656:18:1;;;7649:35;7701:19;;8527:70:0;7325:401:1;8527:70:0;-1:-1:-1;;;;;8616:23:0;;8608:71;;;;-1:-1:-1;;;8608:71:0;;7933:2:1;8608:71:0;;;7915:21:1;7972:2;7952:18;;;7945:30;8011:34;7991:18;;;7984:62;-1:-1:-1;;;8062:18:1;;;8055:33;8105:19;;8608:71:0;7731:399:1;8608:71:0;-1:-1:-1;;;;;7643:18:0;;7626:7;7643:18;;;:9;:18;;;;;;8698:6;:27;;8690:88;;;;-1:-1:-1;;;8690:88:0;;8337:2:1;8690:88:0;;;8319:21:1;8376:2;8356:18;;;8349:30;8415:34;8395:18;;;8388:62;-1:-1:-1;;;8466:18:1;;;8459:47;8523:19;;8690:88:0;8135:413:1;8690:88:0;8428:358;;;:::o;10939:211::-;-1:-1:-1;;;;;11032:19:0;;;;;;:11;:19;;;;;:29;;;11031:30;:67;;;;-1:-1:-1;;;;;;11066:22:0;;;;;;:11;:22;;;;;:32;;;11065:33;11031:67;11028:115;;;11108:14;;-1:-1:-1;;;11108:14:0;;;;11100:41;;;;-1:-1:-1;;;11100:41:0;;8755:2:1;11100:41:0;;;8737:21:1;8794:2;8774:18;;;8767:30;-1:-1:-1;;;8813:18:1;;;8806:44;8867:18;;11100:41:0;8553:338:1;11100:41:0;10939:211;;:::o;11162:351::-;-1:-1:-1;;;;;11266:19:0;;;;;;:11;:19;;;;;:29;;;11265:30;:67;;;;-1:-1:-1;;;;;;11300:22:0;;;;;;:11;:22;;;;;:32;;;11299:33;11265:67;:97;;;;-1:-1:-1;11357:4:0;;-1:-1:-1;;;;;11336:26:0;;;11357:4;;11336:26;;11265:97;:127;;;;-1:-1:-1;;;;;;11366:26:0;;5759:42;11366:26;;11265:127;11262:244;;;11454:15;;-1:-1:-1;;;;;11417:20:0;;;;;;:9;:20;;;;;;:32;;11442:6;11417:24;:32::i;:::-;11416:53;;11408:96;;;;-1:-1:-1;;;11408:96:0;;9098:2:1;11408:96:0;;;9080:21:1;9137:2;9117:18;;;9110:30;9176:32;9156:18;;;9149:60;9226:18;;11408:96:0;8896:354:1;11521:182:0;11614:4;;-1:-1:-1;;;;;11601:17:0;;;11614:4;;11601:17;:51;;;;-1:-1:-1;;;;;;11623:19:0;;;;;;:11;:19;;;;;:29;;;11622:30;11601:51;:68;;;;-1:-1:-1;11657:12:0;;;;;;;11656:13;11601:68;11598:98;;;11692:1;11671:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11521:182:0;;:::o;11711:227::-;11827:12;;11817:6;:22;;:55;;;-1:-1:-1;;;;;;11843:19:0;;;;;;:11;:19;;;;;:29;;;11817:55;:91;;;-1:-1:-1;;;;;;11876:22:0;;;;;;:11;:22;;;;;:32;;;11817:91;11809:121;;;;-1:-1:-1;;;11809:121:0;;9587:2:1;11809:121:0;;;9569:21:1;9626:2;9606:18;;;9599:30;-1:-1:-1;;;9645:18:1;;;9638:47;9702:18;;11809:121:0;9385:341:1;14141:197:0;14233:41;14248:6;14256:9;14267:6;14233:14;:41::i;:::-;14230:101;;;14276:29;14291:13;;14276:14;:29::i;:::-;14327:1;14307:9;:22;14141:197;;;:::o;14346:180::-;-1:-1:-1;;;;;14452:19:0;;14427:4;14452:19;;;:11;:19;;;;;:29;;;14451:30;:67;;;;-1:-1:-1;;;;;;;14486:22:0;;;;;:11;:22;;;;;:32;;;14485:33;;14346:180;-1:-1:-1;14346:180:0:o;15344:576::-;15430:7;15486:1;15453:30;15465:6;15473:9;15453:11;:30::i;:::-;:34;:51;;;;-1:-1:-1;15492:12:0;;;;;;;15491:13;15453:51;15450:448;;;15516:17;15536:59;15564:30;15576:6;15584:9;15564:11;:30::i;:::-;15547:11;;15536:23;;:6;;:10;:23::i;:::-;:27;;:59::i;:::-;15651:4;15633:24;;;;:9;:24;;;;;;15516:79;;-1:-1:-1;15633:39:0;;15516:79;15633:28;:39::i;:::-;15624:4;15606:24;;;;:9;:24;;;;;;;:66;;;;15688:42;;-1:-1:-1;;;;;15688:42:0;;;;;;;15720:9;1361:25:1;;1349:2;1334:18;;1215:177;15688:42:0;;;;;;;;15741:116;15759:4;5759:42;15781:75;15809:46;15852:1;15809:30;15821:6;15829:9;15809:11;:30::i;:::-;:34;;:46::i;:::-;15792:11;;15781:23;;:6;;:10;:23::i;:75::-;15741:9;:116::i;:::-;15875:21;:6;15886:9;15875:10;:21::i;:::-;15868:28;;;;;15450:448;-1:-1:-1;15906:6:0;15344:576;-1:-1:-1;;15344:576:0:o;233:179::-;291:7;;323:5;327:1;323;:5;:::i;:::-;311:17;;352:1;347;:6;;339:46;;;;-1:-1:-1;;;339:46:0;;9933:2:1;339:46:0;;;9915:21:1;9972:2;9952:18;;;9945:30;10011:29;9991:18;;;9984:57;10058:18;;339:46:0;9731:351:1;13692:441:0;13833:15;;13909:13;;13899:4;13790;7643:18;;;:9;:18;;;;;;13941:8;;13790:4;;13823:25;;;;-1:-1:-1;13881:41:0;;13941:8;;13940:9;:24;;;;-1:-1:-1;13953:11:0;;-1:-1:-1;;;13953:11:0;;;;13940:24;:42;;;;-1:-1:-1;13968:14:0;;-1:-1:-1;;;13968:14:0;;;;13940:42;:54;;;;;13986:8;13940:54;:88;;;;-1:-1:-1;;;;;;13999:19:0;;;;;;:11;:19;;;;;:29;;;13998:30;13940:88;:123;;;;-1:-1:-1;14059:4:0;;-1:-1:-1;;;;;14046:17:0;;;14059:4;;14046:17;13940:123;:150;;;;;14088:1;14067:9;;:23;;13940:150;:168;;;;;14094:14;13940:168;:185;;;;-1:-1:-1;14113:12:0;;;;;;;14112:13;13940:185;13933:192;13692:441;-1:-1:-1;;;;;;13692:441:0:o;11946:928::-;5332:8;:15;;-1:-1:-1;;5332:15:0;5343:4;5332:15;;;:8;12040:61:::1;12098:1;12040:45;12081:2;12040:28;12048:2;12064;12040:15;:28::i;:::-;:32:::0;::::1;:45::i;:61::-;12017:84:::0;-1:-1:-1;12112:32:0::1;12147:41;12017:84:::0;12147:23:::1;:6:::0;12166:2:::1;12147:10;:23::i;:41::-;12112:76:::0;-1:-1:-1;12199:14:0::1;12216:36;:6:::0;12112:76;12216:10:::1;:36::i;:::-;12199:53:::0;-1:-1:-1;12288:21:0::1;12320:24;12199:53:::0;12320:16:::1;:24::i;:::-;12355:20;12378:41;:21;12404:14:::0;12378:25:::1;:41::i;:::-;12355:64:::0;-1:-1:-1;12430:19:0::1;12451:47;12468:29;:12:::0;12493:2:::1;12468:16;:29::i;:::-;12451:12:::0;;:16:::1;:47::i;:::-;12430:68:::0;-1:-1:-1;12509:29:0::1;12541:28;12430:68:::0;12565:2:::1;12541:15;:28::i;:::-;12509:60:::0;-1:-1:-1;12583:34:0;;12580:123:::1;;12681:18;::::0;12619:81:::1;::::0;12632:24;;12658:21;;-1:-1:-1;;;;;12681:18:0::1;12619:12;:81::i;:::-;12713:20;12736:35;12767:2;12736:18;:11:::0;12752:1:::1;12736:15;:18::i;:35::-;12713:58:::0;-1:-1:-1;12785:16:0;;12782:73:::1;;12803:50;::::0;5952:42:::1;::::0;12803:50;::::1;;;::::0;12840:12;;12803:50:::1;::::0;;;12840:12;5952:42;12803:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12782:73;12856:10;:8;:10::i;:::-;-1:-1:-1::0;;5352:8:0;:16;;-1:-1:-1;;5352:16:0;;;-1:-1:-1;;;;;;;11946:928:0:o;15117:219::-;15232:4;;15196:7;;-1:-1:-1;;;;;15232:4:0;;;15219:17;;;;15216:38;;-1:-1:-1;15245:7:0;;15238:14;;15216:38;15277:4;;-1:-1:-1;;;;;15277:4:0;;;15267:14;;;;15264:36;;-1:-1:-1;15290:8:0;;15283:15;;15264:36;-1:-1:-1;15317:11:0;;15117:219;;;;:::o;1018:132::-;1076:7;1103:39;1107:1;1110;1103:39;;;;;;;;;;;;;;;;;:3;:39::i;762:248::-;820:7;844:1;849;844:6;840:47;;-1:-1:-1;874:1:0;867:8;;840:47;899:9;911:5;915:1;911;:5;:::i;:::-;899:17;-1:-1:-1;944:1:0;935:5;939:1;899:17;935:5;:::i;:::-;:10;927:56;;;;-1:-1:-1;;;927:56:0;;10289:2:1;927:56:0;;;10271:21:1;10328:2;10308:18;;;10301:30;10367:34;10347:18;;;10340:62;-1:-1:-1;;;10418:18:1;;;10411:31;10459:19;;927:56:0;10087:397:1;13250:434:0;13340:16;;;13354:1;13340:16;;;;;;;;13316:21;;13340:16;;;;;;;;;;-1:-1:-1;13340:16:0;13316:40;;13385:4;13367;13372:1;13367:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13367:23:0;;;:7;;;;;;;;;;:23;;;;13411:6;;:13;;;-1:-1:-1;;;13411:13:0;;;;:6;;;;;:11;;:13;;;;;13367:7;;13411:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13401:4;13406:1;13401:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13401:23:0;;;:7;;;;;;;;;:23;13467:6;;13435:53;;13452:4;;13467:6;13476:11;13435:8;:53::i;:::-;13499:6;;:177;;-1:-1:-1;;;13499:177:0;;-1:-1:-1;;;;;13499:6:0;;;;:57;;:177;;13571:11;;13499:6;;13613:4;;13640;;13660:15;;13499:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1158:276;1244:7;1279:12;1272:5;1264:28;;;;-1:-1:-1;;;1264:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1303:9:0;1315:5;1319:1;1315;:5;:::i;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;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2507:180::-;2566:6;2619:2;2607:9;2598:7;2594:23;2590:32;2587:52;;;2635:1;2632;2625:12;2587:52;-1:-1:-1;2658:23:1;;2507:180;-1:-1:-1;2507:180:1:o;2692:118::-;2778:5;2771:13;2764:21;2757:5;2754:32;2744:60;;2800:1;2797;2790:12;2815:382;2880:6;2888;2941:2;2929:9;2920:7;2916:23;2912:32;2909:52;;;2957:1;2954;2947:12;2909:52;2996:9;2983:23;3015:31;3040:5;3015:31;:::i;:::-;3065:5;-1:-1:-1;3122:2:1;3107:18;;3094:32;3135:30;3094:32;3135:30;:::i;:::-;3184:7;3174:17;;;2815:382;;;;;:::o;3202:388::-;3270:6;3278;3331:2;3319:9;3310:7;3306:23;3302:32;3299:52;;;3347:1;3344;3337:12;3299:52;3386:9;3373:23;3405:31;3430:5;3405:31;:::i;:::-;3455:5;-1:-1:-1;3512:2:1;3497:18;;3484:32;3525:33;3484:32;3525:33;:::i;3855:329::-;4057:2;4039:21;;;4096:1;4076:18;;;4069:29;-1:-1:-1;;;4129:2:1;4114:18;;4107:36;4175:2;4160:18;;3855:329::o;4468:245::-;4535:6;4588:2;4576:9;4567:7;4563:23;4559:32;4556:52;;;4604:1;4601;4594:12;4556:52;4636:9;4630:16;4655:28;4677:5;4655:28;:::i;5742:127::-;5803:10;5798:3;5794:20;5791:1;5784:31;5834:4;5831:1;5824:15;5858:4;5855:1;5848:15;5874:128;5941:9;;;5962:11;;;5959:37;;;5976:18;;:::i;6619:306::-;6707:6;6715;6723;6776:2;6764:9;6755:7;6751:23;6747:32;6744:52;;;6792:1;6789;6782:12;6744:52;6821:9;6815:16;6805:26;;6871:2;6860:9;6856:18;6850:25;6840:35;;6915:2;6904:9;6900:18;6894:25;6884:35;;6619:306;;;;;:::o;6930:168::-;7003:9;;;7034;;7051:15;;;7045:22;;7031:37;7021:71;;7072:18;;:::i;7103:217::-;7143:1;7169;7159:132;;7213:10;7208:3;7204:20;7201:1;7194:31;7248:4;7245:1;7238:15;7276:4;7273:1;7266:15;7159:132;-1:-1:-1;7305:9:1;;7103:217::o;9255:125::-;9320:9;;;9341:10;;;9338:36;;;9354:18;;:::i;10621:127::-;10682:10;10677:3;10673:20;10670:1;10663:31;10713:4;10710:1;10703:15;10737:4;10734:1;10727:15;10753:251;10823:6;10876:2;10864:9;10855:7;10851:23;10847:32;10844:52;;;10892:1;10889;10882:12;10844:52;10924:9;10918:16;10943:31;10968:5;10943:31;:::i;11009:980::-;11271:4;11319:3;11308:9;11304:19;11350:6;11339:9;11332:25;11376:2;11414:6;11409:2;11398:9;11394:18;11387:34;11457:3;11452:2;11441:9;11437:18;11430:31;11481:6;11516;11510:13;11547:6;11539;11532:22;11585:3;11574:9;11570:19;11563:26;;11624:2;11616:6;11612:15;11598:29;;11645:1;11655:195;11669:6;11666:1;11663:13;11655:195;;;11734:13;;-1:-1:-1;;;;;11730:39:1;11718:52;;11825:15;;;;11790:12;;;;11766:1;11684:9;11655:195;;;-1:-1:-1;;;;;;;11906:32:1;;;;11901:2;11886:18;;11879:60;-1:-1:-1;;;11970:3:1;11955:19;11948:35;11867:3;11009:980;-1:-1:-1;;;11009:980:1:o
Swarm Source
ipfs://276b3423b136eb7773499660c73fba2dbd9f44a1f11ece3cfc4a31f9924f0a19
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.