Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000 TORO
Holders
134
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.606232666177872779 TOROValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TORO
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-19 */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.18; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { 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); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() external view virtual override returns (string memory) { return _name; } function symbol() external view virtual override returns (string memory) { return _symbol; } function decimals() external view virtual override returns (uint8) { return 18; } function totalSupply() external view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) external virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { 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); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) external virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } library SafeMath { 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; } } contract TORO is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public immutable uniswapV2Pair; bool private inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public swapTokensAtAmount = 50000 * (10**18); uint256 public maxWallet = 2000000 * (10**18); uint256 public liquidityFee = 1; uint256 public devFee = 1; uint256 public totalFees; address payable public devWallet = payable(0x74f45Be6cC1319B7940C7d0d823a38eb7F618050); address payable public deadWallet = payable(0x000000000000000000000000000000000000dEaD); mapping (address => bool) public _isExcludedFromFees; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event GasForProcessingUpdated(uint256 indexed newValue, uint256 indexed oldValue); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify(uint256 tokensIntoLiqudity, uint256 ethReceived); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() ERC20("Toro", "TORO") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; excludeFromFees(owner(), true); excludeFromFees(devWallet, true); excludeFromFees(address(this), true); totalFees = liquidityFee.add(devFee); _createInitialSupply(owner(), 100000000 * (10**18)); } receive() external payable { } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]){ uint256 contractBalance_receiver = balanceOf(to); require(contractBalance_receiver.add(amount) <= maxWallet, "Exceeds maximum wallet token amount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= swapTokensAtAmount; if(to == uniswapV2Pair && overMinTokenBalance && !inSwapAndLiquify && swapAndLiquifyEnabled) { contractTokenBalance = swapTokensAtAmount; swapAndLiquify(contractTokenBalance); } if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { uint256 fees = amount.mul(totalFees).div(100); amount = amount.sub(fees); super._transfer(from, address(this), fees); } super._transfer(from, to, amount); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 tokensForLiquidity = contractTokenBalance.mul(liquidityFee).div(totalFees); uint256 half = tokensForLiquidity.div(2); uint256 otherHalf = tokensForLiquidity.sub(half); uint256 initialBalance = address(this).balance; swapTokensForETH(half); uint256 newBalance = address(this).balance.sub(initialBalance); addLiquidity(otherHalf, newBalance); swapTokensForETH(contractTokenBalance.sub(tokensForLiquidity)); devWallet.transfer(address(this).balance); emit SwapAndLiquify(half, newBalance); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); if(allowance(address(this), address(uniswapV2Router)) < tokenAmount) { _approve(address(this), address(uniswapV2Router), ~uint256(0)); } uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } event LiquidityAdded(uint amountToken, uint amountETH, uint liquidity); function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { (uint amountToken, uint amountETH, uint liquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, deadWallet, block.timestamp ); emit LiquidityAdded(amountToken, amountETH, liquidity); } function isExcludedFromFees(address account) external view returns(bool) { return _isExcludedFromFees[account]; } function excludeFromFees(address account, bool excluded) public onlyOwner { require(_isExcludedFromFees[account] != excluded, "TORO: Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setDevWallet(address payable wallet) external onlyOwner { require(wallet != address(0), "Cannot be zero address"); devWallet = wallet; } event SetFee(uint256 indexed liquidityFee, uint256 indexed devFee); event SetMaxWallet(uint256 indexed maxTokens); event SetSwapTokensAtAmount(uint256 indexed swapTokensAmount); function setFee(uint256 _liquidityFee, uint256 _devFee) external onlyOwner { require(_liquidityFee.add(_devFee) <= 4, "Fees must be smaller than or equal to 4"); liquidityFee = _liquidityFee; devFee = _devFee; totalFees = _liquidityFee.add(_devFee); emit SetFee(_liquidityFee, _devFee); } function setSwapTokensAtAmount(uint256 _swapTokensAmount) external onlyOwner { swapTokensAtAmount = _swapTokensAmount * (10**18); emit SetSwapTokensAtAmount(_swapTokensAmount); } function setMaxWallet(uint256 _maxTokens) external onlyOwner { require(_maxTokens >= 2000000, "Max wallet amount must be greater than or equal to 2000000"); maxWallet = _maxTokens * (10**18); emit SetMaxWallet(_maxTokens); } }
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":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"GasForProcessingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"devFee","type":"uint256"}],"name":"SetFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxTokens","type":"uint256"}],"name":"SetMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"swapTokensAmount","type":"uint256"}],"name":"SetSwapTokensAtAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"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":"deadWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTokens","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapTokensAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526006805460ff60a81b1916600160a81b179055690a968163f0a57b4000006007556a01a784379d99db4200000060085560016009819055600a55600c80546001600160a01b03199081167374f45be6cc1319b7940c7d0d823a38eb7f61805017909155600d805490911661dead1790553480156200008157600080fd5b5060405180604001604052806004815260200163546f726f60e01b81525060405180604001604052806004815260200163544f524f60e01b8152508160039081620000cd919062000664565b506004620000dc828262000664565b505050620000f9620000f36200031f60201b60201c565b62000323565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000153573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000179919062000730565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ed919062000730565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200023b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000261919062000730565b600680546001600160a01b0319166001600160a01b038581169190911790915581166080529050620002a76200029f6005546001600160a01b031690565b600162000375565b600c54620002c0906001600160a01b0316600162000375565b620002cd30600162000375565b620002eb600a54600954620004bf60201b62000dd31790919060201c565b600b5562000317620003056005546001600160a01b031690565b6a52b7d2dcc80cd2e4000000620004d6565b505062000784565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620003d55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0382166000908152600e602052604090205481151560ff909116151503620004605760405162461bcd60e51b815260206004820152603060248201527f544f524f3a204163636f756e7420697320616c7265616479207468652076616c60448201526f7565206f6620276578636c756465642760801b6064820152608401620003cc565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000620004cd828462000762565b90505b92915050565b6001600160a01b0382166200052e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620003cc565b806002600082825462000542919062000762565b90915550506001600160a01b038216600090815260208190526040812080548392906200057190849062000762565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005eb57607f821691505b6020821081036200060c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005bb57600081815260208120601f850160051c810160208610156200063b5750805b601f850160051c820191505b818110156200065c5782815560010162000647565b505050505050565b81516001600160401b03811115620006805762000680620005c0565b6200069881620006918454620005d6565b8462000612565b602080601f831160018114620006d05760008415620006b75750858301515b600019600386901b1c1916600185901b1785556200065c565b600085815260208120601f198616915b828110156200070157888601518255948401946001909101908401620006e0565b5085821015620007205787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200074357600080fd5b81516001600160a01b03811681146200075b57600080fd5b9392505050565b80820180821115620004d057634e487b7160e01b600052601160045260246000fd5b608051611add620007a76000396000818161034f01526110500152611add6000f3fe6080604052600436106101e75760003560e01c8063715018a611610102578063afa4f3b211610095578063e0bf7fd111610064578063e0bf7fd1146105db578063e2f456051461060b578063f2fde38b14610621578063f8b45b051461064157600080fd5b8063afa4f3b214610535578063c024666814610555578063c49b9a8014610575578063dd62ed3e1461059557600080fd5b806395d89b41116100d157806395d89b41146104ca57806398118cb4146104df578063a457c2d7146104f5578063a9059cbb1461051557600080fd5b8063715018a61461045757806385141a771461046c5780638da5cb5b1461048c5780638ea5220f146104aa57600080fd5b8063395093511161017a57806352f7c9881161014957806352f7c988146103cb5780635d0044ca146103eb5780636827e7641461040b57806370a082311461042157600080fd5b8063395093511461031d57806349bd5a5e1461033d5780634a74bb02146103715780634fbee1931461039257600080fd5b806318160ddd116101b657806318160ddd146102aa5780631f53ac02146102bf57806323b872dd146102e1578063313ce5671461030157600080fd5b806306fdde03146101f3578063095ea7b31461021e57806313114a9d1461024e5780631694505e1461027257600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610657565b60405161021591906116a3565b60405180910390f35b34801561022a57600080fd5b5061023e610239366004611706565b6106e9565b6040519015158152602001610215565b34801561025a57600080fd5b50610264600b5481565b604051908152602001610215565b34801561027e57600080fd5b50600654610292906001600160a01b031681565b6040516001600160a01b039091168152602001610215565b3480156102b657600080fd5b50600254610264565b3480156102cb57600080fd5b506102df6102da366004611732565b610700565b005b3480156102ed57600080fd5b5061023e6102fc36600461174f565b6107a4565b34801561030d57600080fd5b5060405160128152602001610215565b34801561032957600080fd5b5061023e610338366004611706565b61084e565b34801561034957600080fd5b506102927f000000000000000000000000000000000000000000000000000000000000000081565b34801561037d57600080fd5b5060065461023e90600160a81b900460ff1681565b34801561039e57600080fd5b5061023e6103ad366004611732565b6001600160a01b03166000908152600e602052604090205460ff1690565b3480156103d757600080fd5b506102df6103e6366004611790565b61088a565b3480156103f757600080fd5b506102df6104063660046117b2565b610966565b34801561041757600080fd5b50610264600a5481565b34801561042d57600080fd5b5061026461043c366004611732565b6001600160a01b031660009081526020819052604090205490565b34801561046357600080fd5b506102df610a4c565b34801561047857600080fd5b50600d54610292906001600160a01b031681565b34801561049857600080fd5b506005546001600160a01b0316610292565b3480156104b657600080fd5b50600c54610292906001600160a01b031681565b3480156104d657600080fd5b50610208610a82565b3480156104eb57600080fd5b5061026460095481565b34801561050157600080fd5b5061023e610510366004611706565b610a91565b34801561052157600080fd5b5061023e610530366004611706565b610b2a565b34801561054157600080fd5b506102df6105503660046117b2565b610b37565b34801561056157600080fd5b506102df6105703660046117e0565b610ba4565b34801561058157600080fd5b506102df610590366004611815565b610cb6565b3480156105a157600080fd5b506102646105b0366004611830565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105e757600080fd5b5061023e6105f6366004611732565b600e6020526000908152604090205460ff1681565b34801561061757600080fd5b5061026460075481565b34801561062d57600080fd5b506102df61063c366004611732565b610d38565b34801561064d57600080fd5b5061026460085481565b60606003805461066690611869565b80601f016020809104026020016040519081016040528092919081815260200182805461069290611869565b80156106df5780601f106106b4576101008083540402835291602001916106df565b820191906000526020600020905b8154815290600101906020018083116106c257829003601f168201915b5050505050905090565b60006106f6338484610de6565b5060015b92915050565b6005546001600160a01b031633146107335760405162461bcd60e51b815260040161072a906118a3565b60405180910390fd5b6001600160a01b0381166107825760405162461bcd60e51b815260206004820152601660248201527543616e6e6f74206265207a65726f206164647265737360501b604482015260640161072a565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60006107b1848484610f0a565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108365760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161072a565b6108438533858403610de6565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106f69185906108859086906118ee565b610de6565b6005546001600160a01b031633146108b45760405162461bcd60e51b815260040161072a906118a3565b60046108c08383610dd3565b111561091e5760405162461bcd60e51b815260206004820152602760248201527f46656573206d75737420626520736d616c6c6572207468616e206f7220657175604482015266185b081d1bc80d60ca1b606482015260840161072a565b6009829055600a8190556109328282610dd3565b600b55604051819083907f032dc6a2d839eb179729a55633fdf1c41a1fc4739394154117005db2b354b9b590600090a35050565b6005546001600160a01b031633146109905760405162461bcd60e51b815260040161072a906118a3565b621e8480811015610a095760405162461bcd60e51b815260206004820152603a60248201527f4d61782077616c6c657420616d6f756e74206d7573742062652067726561746560448201527f72207468616e206f7220657175616c20746f2032303030303030000000000000606482015260840161072a565b610a1b81670de0b6b3a7640000611901565b60085560405181907fa2c87c3e7a3048198ae94e814f6a27e12a4e2a7476e33a0db4d97ffeaf63618690600090a250565b6005546001600160a01b03163314610a765760405162461bcd60e51b815260040161072a906118a3565b610a80600061115b565b565b60606004805461066690611869565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610b135760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161072a565b610b203385858403610de6565b5060019392505050565b60006106f6338484610f0a565b6005546001600160a01b03163314610b615760405162461bcd60e51b815260040161072a906118a3565b610b7381670de0b6b3a7640000611901565b60075560405181907f09e89af7cbd8410d0ad2a74ab3cc8d9ddeef8ab1177f0f8a1984d355bb9d78f190600090a250565b6005546001600160a01b03163314610bce5760405162461bcd60e51b815260040161072a906118a3565b6001600160a01b0382166000908152600e602052604090205481151560ff909116151503610c575760405162461bcd60e51b815260206004820152603060248201527f544f524f3a204163636f756e7420697320616c7265616479207468652076616c60448201526f7565206f6620276578636c756465642760801b606482015260840161072a565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ce05760405162461bcd60e51b815260040161072a906118a3565b60068054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610d2d90831515815260200190565b60405180910390a150565b6005546001600160a01b03163314610d625760405162461bcd60e51b815260040161072a906118a3565b6001600160a01b038116610dc75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161072a565b610dd08161115b565b50565b6000610ddf82846118ee565b9392505050565b6001600160a01b038316610e485760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161072a565b6001600160a01b038216610ea95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161072a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f305760405162461bcd60e51b815260040161072a90611918565b6001600160a01b038216610f565760405162461bcd60e51b815260040161072a9061195d565b80600003610f6f57610f6a838360006111ad565b505050565b6001600160a01b0383166000908152600e602052604090205460ff16158015610fb157506001600160a01b0382166000908152600e602052604090205460ff16155b15611038576001600160a01b038216600090815260208190526040902054600854610fdc8284610dd3565b11156110365760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b606482015260840161072a565b505b306000908152602081905260409020546007548110157f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169085161480156110875750805b801561109d5750600654600160a01b900460ff16155b80156110b25750600654600160a81b900460ff165b156110c55760075491506110c582611302565b6001600160a01b0385166000908152600e602052604090205460ff1615801561110757506001600160a01b0384166000908152600e602052604090205460ff16155b1561114957600061112e6064611128600b548761140890919063ffffffff16565b90611414565b905061113a8482611420565b93506111478630836111ad565b505b6111548585856111ad565b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166111d35760405162461bcd60e51b815260040161072a90611918565b6001600160a01b0382166111f95760405162461bcd60e51b815260040161072a9061195d565b6001600160a01b038316600090815260208190526040902054818110156112715760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161072a565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906112a89084906118ee565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112f491815260200190565b60405180910390a350505050565b6006805460ff60a01b1916600160a01b179055600b5460095460009161132d91611128908590611408565b9050600061133c826002611414565b9050600061134a8383611420565b9050476113568361142c565b60006113624783611420565b905061136e83826115b7565b61138061137b8787611420565b61142c565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156113b9573d6000803e3d6000fd5b5060408051858152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150506006805460ff60a01b1916905550505050565b6000610ddf8284611901565b6000610ddf82846119a0565b6000610ddf82846119c2565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611461576114616119d5565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de91906119eb565b816001815181106114f1576114f16119d5565b6001600160a01b0392831660209182029290920181019190915260065430600090815260018352604080822092909416815291522054821115611548576006546115489030906001600160a01b0316600019610de6565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611581908590600090869030904290600401611a08565b600060405180830381600087803b15801561159b57600080fd5b505af11580156115af573d6000803e3d6000fd5b505050505050565b600654600d5460405163f305d71960e01b815230600482015260248101859052600060448201819052606482018190526001600160a01b0392831660848301524260a4830152928392839291169063f305d71990869060c40160606040518083038185885af115801561162e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116539190611a79565b604080518481526020810184905290810182905292955090935091507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be39060600160405180910390a15050505050565b600060208083528351808285015260005b818110156116d0578581018301518582016040015282016116b4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610dd057600080fd5b6000806040838503121561171957600080fd5b8235611724816116f1565b946020939093013593505050565b60006020828403121561174457600080fd5b8135610ddf816116f1565b60008060006060848603121561176457600080fd5b833561176f816116f1565b9250602084013561177f816116f1565b929592945050506040919091013590565b600080604083850312156117a357600080fd5b50508035926020909101359150565b6000602082840312156117c457600080fd5b5035919050565b803580151581146117db57600080fd5b919050565b600080604083850312156117f357600080fd5b82356117fe816116f1565b915061180c602084016117cb565b90509250929050565b60006020828403121561182757600080fd5b610ddf826117cb565b6000806040838503121561184357600080fd5b823561184e816116f1565b9150602083013561185e816116f1565b809150509250929050565b600181811c9082168061187d57607f821691505b60208210810361189d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156106fa576106fa6118d8565b80820281158282048414176106fa576106fa6118d8565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000826119bd57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106fa576106fa6118d8565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119fd57600080fd5b8151610ddf816116f1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a585784516001600160a01b031683529383019391830191600101611a33565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611a8e57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203732080231261746df7f3340e6b942c82cf687960051bf876b8b6bbcefc8d59164736f6c63430008120033
Deployed Bytecode
0x6080604052600436106101e75760003560e01c8063715018a611610102578063afa4f3b211610095578063e0bf7fd111610064578063e0bf7fd1146105db578063e2f456051461060b578063f2fde38b14610621578063f8b45b051461064157600080fd5b8063afa4f3b214610535578063c024666814610555578063c49b9a8014610575578063dd62ed3e1461059557600080fd5b806395d89b41116100d157806395d89b41146104ca57806398118cb4146104df578063a457c2d7146104f5578063a9059cbb1461051557600080fd5b8063715018a61461045757806385141a771461046c5780638da5cb5b1461048c5780638ea5220f146104aa57600080fd5b8063395093511161017a57806352f7c9881161014957806352f7c988146103cb5780635d0044ca146103eb5780636827e7641461040b57806370a082311461042157600080fd5b8063395093511461031d57806349bd5a5e1461033d5780634a74bb02146103715780634fbee1931461039257600080fd5b806318160ddd116101b657806318160ddd146102aa5780631f53ac02146102bf57806323b872dd146102e1578063313ce5671461030157600080fd5b806306fdde03146101f3578063095ea7b31461021e57806313114a9d1461024e5780631694505e1461027257600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610657565b60405161021591906116a3565b60405180910390f35b34801561022a57600080fd5b5061023e610239366004611706565b6106e9565b6040519015158152602001610215565b34801561025a57600080fd5b50610264600b5481565b604051908152602001610215565b34801561027e57600080fd5b50600654610292906001600160a01b031681565b6040516001600160a01b039091168152602001610215565b3480156102b657600080fd5b50600254610264565b3480156102cb57600080fd5b506102df6102da366004611732565b610700565b005b3480156102ed57600080fd5b5061023e6102fc36600461174f565b6107a4565b34801561030d57600080fd5b5060405160128152602001610215565b34801561032957600080fd5b5061023e610338366004611706565b61084e565b34801561034957600080fd5b506102927f000000000000000000000000b6f265cdf220b6a47ffd7e490f5b0e93f093c71e81565b34801561037d57600080fd5b5060065461023e90600160a81b900460ff1681565b34801561039e57600080fd5b5061023e6103ad366004611732565b6001600160a01b03166000908152600e602052604090205460ff1690565b3480156103d757600080fd5b506102df6103e6366004611790565b61088a565b3480156103f757600080fd5b506102df6104063660046117b2565b610966565b34801561041757600080fd5b50610264600a5481565b34801561042d57600080fd5b5061026461043c366004611732565b6001600160a01b031660009081526020819052604090205490565b34801561046357600080fd5b506102df610a4c565b34801561047857600080fd5b50600d54610292906001600160a01b031681565b34801561049857600080fd5b506005546001600160a01b0316610292565b3480156104b657600080fd5b50600c54610292906001600160a01b031681565b3480156104d657600080fd5b50610208610a82565b3480156104eb57600080fd5b5061026460095481565b34801561050157600080fd5b5061023e610510366004611706565b610a91565b34801561052157600080fd5b5061023e610530366004611706565b610b2a565b34801561054157600080fd5b506102df6105503660046117b2565b610b37565b34801561056157600080fd5b506102df6105703660046117e0565b610ba4565b34801561058157600080fd5b506102df610590366004611815565b610cb6565b3480156105a157600080fd5b506102646105b0366004611830565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105e757600080fd5b5061023e6105f6366004611732565b600e6020526000908152604090205460ff1681565b34801561061757600080fd5b5061026460075481565b34801561062d57600080fd5b506102df61063c366004611732565b610d38565b34801561064d57600080fd5b5061026460085481565b60606003805461066690611869565b80601f016020809104026020016040519081016040528092919081815260200182805461069290611869565b80156106df5780601f106106b4576101008083540402835291602001916106df565b820191906000526020600020905b8154815290600101906020018083116106c257829003601f168201915b5050505050905090565b60006106f6338484610de6565b5060015b92915050565b6005546001600160a01b031633146107335760405162461bcd60e51b815260040161072a906118a3565b60405180910390fd5b6001600160a01b0381166107825760405162461bcd60e51b815260206004820152601660248201527543616e6e6f74206265207a65726f206164647265737360501b604482015260640161072a565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60006107b1848484610f0a565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108365760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161072a565b6108438533858403610de6565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106f69185906108859086906118ee565b610de6565b6005546001600160a01b031633146108b45760405162461bcd60e51b815260040161072a906118a3565b60046108c08383610dd3565b111561091e5760405162461bcd60e51b815260206004820152602760248201527f46656573206d75737420626520736d616c6c6572207468616e206f7220657175604482015266185b081d1bc80d60ca1b606482015260840161072a565b6009829055600a8190556109328282610dd3565b600b55604051819083907f032dc6a2d839eb179729a55633fdf1c41a1fc4739394154117005db2b354b9b590600090a35050565b6005546001600160a01b031633146109905760405162461bcd60e51b815260040161072a906118a3565b621e8480811015610a095760405162461bcd60e51b815260206004820152603a60248201527f4d61782077616c6c657420616d6f756e74206d7573742062652067726561746560448201527f72207468616e206f7220657175616c20746f2032303030303030000000000000606482015260840161072a565b610a1b81670de0b6b3a7640000611901565b60085560405181907fa2c87c3e7a3048198ae94e814f6a27e12a4e2a7476e33a0db4d97ffeaf63618690600090a250565b6005546001600160a01b03163314610a765760405162461bcd60e51b815260040161072a906118a3565b610a80600061115b565b565b60606004805461066690611869565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610b135760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161072a565b610b203385858403610de6565b5060019392505050565b60006106f6338484610f0a565b6005546001600160a01b03163314610b615760405162461bcd60e51b815260040161072a906118a3565b610b7381670de0b6b3a7640000611901565b60075560405181907f09e89af7cbd8410d0ad2a74ab3cc8d9ddeef8ab1177f0f8a1984d355bb9d78f190600090a250565b6005546001600160a01b03163314610bce5760405162461bcd60e51b815260040161072a906118a3565b6001600160a01b0382166000908152600e602052604090205481151560ff909116151503610c575760405162461bcd60e51b815260206004820152603060248201527f544f524f3a204163636f756e7420697320616c7265616479207468652076616c60448201526f7565206f6620276578636c756465642760801b606482015260840161072a565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ce05760405162461bcd60e51b815260040161072a906118a3565b60068054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610d2d90831515815260200190565b60405180910390a150565b6005546001600160a01b03163314610d625760405162461bcd60e51b815260040161072a906118a3565b6001600160a01b038116610dc75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161072a565b610dd08161115b565b50565b6000610ddf82846118ee565b9392505050565b6001600160a01b038316610e485760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161072a565b6001600160a01b038216610ea95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161072a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f305760405162461bcd60e51b815260040161072a90611918565b6001600160a01b038216610f565760405162461bcd60e51b815260040161072a9061195d565b80600003610f6f57610f6a838360006111ad565b505050565b6001600160a01b0383166000908152600e602052604090205460ff16158015610fb157506001600160a01b0382166000908152600e602052604090205460ff16155b15611038576001600160a01b038216600090815260208190526040902054600854610fdc8284610dd3565b11156110365760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b606482015260840161072a565b505b306000908152602081905260409020546007548110157f000000000000000000000000b6f265cdf220b6a47ffd7e490f5b0e93f093c71e6001600160a01b039081169085161480156110875750805b801561109d5750600654600160a01b900460ff16155b80156110b25750600654600160a81b900460ff165b156110c55760075491506110c582611302565b6001600160a01b0385166000908152600e602052604090205460ff1615801561110757506001600160a01b0384166000908152600e602052604090205460ff16155b1561114957600061112e6064611128600b548761140890919063ffffffff16565b90611414565b905061113a8482611420565b93506111478630836111ad565b505b6111548585856111ad565b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166111d35760405162461bcd60e51b815260040161072a90611918565b6001600160a01b0382166111f95760405162461bcd60e51b815260040161072a9061195d565b6001600160a01b038316600090815260208190526040902054818110156112715760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161072a565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906112a89084906118ee565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112f491815260200190565b60405180910390a350505050565b6006805460ff60a01b1916600160a01b179055600b5460095460009161132d91611128908590611408565b9050600061133c826002611414565b9050600061134a8383611420565b9050476113568361142c565b60006113624783611420565b905061136e83826115b7565b61138061137b8787611420565b61142c565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156113b9573d6000803e3d6000fd5b5060408051858152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150506006805460ff60a01b1916905550505050565b6000610ddf8284611901565b6000610ddf82846119a0565b6000610ddf82846119c2565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611461576114616119d5565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de91906119eb565b816001815181106114f1576114f16119d5565b6001600160a01b0392831660209182029290920181019190915260065430600090815260018352604080822092909416815291522054821115611548576006546115489030906001600160a01b0316600019610de6565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611581908590600090869030904290600401611a08565b600060405180830381600087803b15801561159b57600080fd5b505af11580156115af573d6000803e3d6000fd5b505050505050565b600654600d5460405163f305d71960e01b815230600482015260248101859052600060448201819052606482018190526001600160a01b0392831660848301524260a4830152928392839291169063f305d71990869060c40160606040518083038185885af115801561162e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116539190611a79565b604080518481526020810184905290810182905292955090935091507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be39060600160405180910390a15050505050565b600060208083528351808285015260005b818110156116d0578581018301518582016040015282016116b4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610dd057600080fd5b6000806040838503121561171957600080fd5b8235611724816116f1565b946020939093013593505050565b60006020828403121561174457600080fd5b8135610ddf816116f1565b60008060006060848603121561176457600080fd5b833561176f816116f1565b9250602084013561177f816116f1565b929592945050506040919091013590565b600080604083850312156117a357600080fd5b50508035926020909101359150565b6000602082840312156117c457600080fd5b5035919050565b803580151581146117db57600080fd5b919050565b600080604083850312156117f357600080fd5b82356117fe816116f1565b915061180c602084016117cb565b90509250929050565b60006020828403121561182757600080fd5b610ddf826117cb565b6000806040838503121561184357600080fd5b823561184e816116f1565b9150602083013561185e816116f1565b809150509250929050565b600181811c9082168061187d57607f821691505b60208210810361189d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156106fa576106fa6118d8565b80820281158282048414176106fa576106fa6118d8565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000826119bd57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106fa576106fa6118d8565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119fd57600080fd5b8151610ddf816116f1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a585784516001600160a01b031683529383019391830191600101611a33565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611a8e57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203732080231261746df7f3340e6b942c82cf687960051bf876b8b6bbcefc8d59164736f6c63430008120033
Deployed Bytecode Sourcemap
12533:6786:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1563:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2487:171;;;;;;;;;;-1:-1:-1;2487:171:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;2487:171:0;1023:187:1;12972:24:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;12972:24:0;1215:177:1;12607:41:0;;;;;;;;;;-1:-1:-1;12607:41:0;;;;-1:-1:-1;;;;;12607:41:0;;;;;;-1:-1:-1;;;;;1588:32:1;;;1570:51;;1558:2;1543:18;12607:41:0;1397:230:1;1890:110:0;;;;;;;;;;-1:-1:-1;1980:12:0;;1890:110;;18130:168;;;;;;;;;;-1:-1:-1;18130:168:0;;;;;:::i;:::-;;:::i;:::-;;2666:494;;;;;;;;;;-1:-1:-1;2666:494:0;;;;;:::i;:::-;;:::i;1787:95::-;;;;;;;;;;-1:-1:-1;1787:95:0;;1872:2;2495:36:1;;2483:2;2468:18;1787:95:0;2353:184:1;3168:217:0;;;;;;;;;;-1:-1:-1;3168:217:0;;;;;:::i;:::-;;:::i;12655:38::-;;;;;;;;;;;;;;;12740:40;;;;;;;;;;-1:-1:-1;12740:40:0;;;;-1:-1:-1;;;12740:40:0;;;;;;17507:127;;;;;;;;;;-1:-1:-1;17507:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;17598:28:0;17574:4;17598:28;;;:19;:28;;;;;;;;;17507:127;18501:338;;;;;;;;;;-1:-1:-1;18501:338:0;;;;;:::i;:::-;;:::i;19056:256::-;;;;;;;;;;-1:-1:-1;19056:256:0;;;;;:::i;:::-;;:::i;12940:25::-;;;;;;;;;;;;;;;;2008:127;;;;;;;;;;-1:-1:-1;2008:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2109:18:0;2082:7;2109:18;;;;;;;;;;;;2008:127;6085:96;;;;;;;;;;;;;:::i;13098:87::-;;;;;;;;;;-1:-1:-1;13098:87:0;;;;-1:-1:-1;;;;;13098:87:0;;;5862;;;;;;;;;;-1:-1:-1;5935:6:0;;-1:-1:-1;;;;;5935:6:0;5862:87;;13005:86;;;;;;;;;;-1:-1:-1;13005:86:0;;;;-1:-1:-1;;;;;13005:86:0;;;1673:106;;;;;;;;;;;;;:::i;12902:31::-;;;;;;;;;;;;;;;;3393:415;;;;;;;;;;-1:-1:-1;3393:415:0;;;;;:::i;:::-;;:::i;2143:177::-;;;;;;;;;;-1:-1:-1;2143:177:0;;;;;:::i;:::-;;:::i;18847:201::-;;;;;;;;;;-1:-1:-1;18847:201:0;;;;;:::i;:::-;;:::i;17642:296::-;;;;;;;;;;-1:-1:-1;17642:296:0;;;;;:::i;:::-;;:::i;17949:173::-;;;;;;;;;;-1:-1:-1;17949:173:0;;;;;:::i;:::-;;:::i;2328:151::-;;;;;;;;;;-1:-1:-1;2328:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2444:18:0;;;2417:7;2444:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2328:151;13198:52;;;;;;;;;;-1:-1:-1;13198:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12789;;;;;;;;;;;;;;;;6189:194;;;;;;;;;;-1:-1:-1;6189:194:0;;;;;:::i;:::-;;:::i;12848:45::-;;;;;;;;;;;;;;;;1563:102;1619:13;1652:5;1645:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1563:102;:::o;2487:171::-;2572:4;2589:39;182:10;2612:7;2621:6;2589:8;:39::i;:::-;-1:-1:-1;2646:4:0;2487:171;;;;;:::o;18130:168::-;5935:6;;-1:-1:-1;;;;;5935:6:0;182:10;5997:23;5989:68;;;;-1:-1:-1;;;5989:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;18214:20:0;::::1;18206:55;;;::::0;-1:-1:-1;;;18206:55:0;;5675:2:1;18206:55:0::1;::::0;::::1;5657:21:1::0;5714:2;5694:18;;;5687:30;-1:-1:-1;;;5733:18:1;;;5726:52;5795:18;;18206:55:0::1;5473:346:1::0;18206:55:0::1;18272:9;:18:::0;;-1:-1:-1;;;;;;18272:18:0::1;-1:-1:-1::0;;;;;18272:18:0;;;::::1;::::0;;;::::1;::::0;;18130:168::o;2666:494::-;2808:4;2825:36;2835:6;2843:9;2854:6;2825:9;:36::i;:::-;-1:-1:-1;;;;;2901:19:0;;2874:24;2901:19;;;:11;:19;;;;;;;;182:10;2901:33;;;;;;;;2953:26;;;;2945:79;;;;-1:-1:-1;;;2945:79:0;;6026:2:1;2945:79:0;;;6008:21:1;6065:2;6045:18;;;6038:30;6104:34;6084:18;;;6077:62;-1:-1:-1;;;6155:18:1;;;6148:38;6203:19;;2945:79:0;5824:404:1;2945:79:0;3060:57;3069:6;182:10;3110:6;3091:16;:25;3060:8;:57::i;:::-;-1:-1:-1;3148:4:0;;2666:494;-1:-1:-1;;;;2666:494:0:o;3168:217::-;182:10;3258:4;3307:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3307:34:0;;;;;;;;;;3258:4;;3275:80;;3298:7;;3307:47;;3344:10;;3307:47;:::i;:::-;3275:8;:80::i;18501:338::-;5935:6;;-1:-1:-1;;;;;5935:6:0;182:10;5997:23;5989:68;;;;-1:-1:-1;;;5989:68:0;;;;;;;:::i;:::-;18625:1:::1;18595:26;:13:::0;18613:7;18595:17:::1;:26::i;:::-;:31;;18587:83;;;::::0;-1:-1:-1;;;18587:83:0;;6697:2:1;18587:83:0::1;::::0;::::1;6679:21:1::0;6736:2;6716:18;;;6709:30;6775:34;6755:18;;;6748:62;-1:-1:-1;;;6826:18:1;;;6819:37;6873:19;;18587:83:0::1;6495:403:1::0;18587:83:0::1;18681:12;:28:::0;;;18720:6:::1;:16:::0;;;18759:26:::1;18696:13:::0;18729:7;18759:17:::1;:26::i;:::-;18747:9;:38:::0;18801:30:::1;::::0;18823:7;;18808:13;;18801:30:::1;::::0;;;::::1;18501:338:::0;;:::o;19056:256::-;5935:6;;-1:-1:-1;;;;;5935:6:0;182:10;5997:23;5989:68;;;;-1:-1:-1;;;5989:68:0;;;;;;;:::i;:::-;19150:7:::1;19136:10;:21;;19128:92;;;::::0;-1:-1:-1;;;19128:92:0;;7105:2:1;19128:92:0::1;::::0;::::1;7087:21:1::0;7144:2;7124:18;;;7117:30;7183:34;7163:18;;;7156:62;7254:28;7234:18;;;7227:56;7300:19;;19128:92:0::1;6903:422:1::0;19128:92:0::1;19243:21;:10:::0;19257:6:::1;19243:21;:::i;:::-;19231:9;:33:::0;19280:24:::1;::::0;19293:10;;19280:24:::1;::::0;;;::::1;19056:256:::0;:::o;6085:96::-;5935:6;;-1:-1:-1;;;;;5935:6:0;182:10;5997:23;5989:68;;;;-1:-1:-1;;;5989:68:0;;;;;;;:::i;:::-;6152:21:::1;6170:1;6152:9;:21::i;:::-;6085:96::o:0;1673:106::-;1731:13;1764:7;1757:14;;;;;:::i;3393:415::-;182:10;3488:4;3532:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3532:34:0;;;;;;;;;;3585:35;;;;3577:85;;;;-1:-1:-1;;;3577:85:0;;7705:2:1;3577:85:0;;;7687:21:1;7744:2;7724:18;;;7717:30;7783:34;7763:18;;;7756:62;-1:-1:-1;;;7834:18:1;;;7827:35;7879:19;;3577:85:0;7503:401:1;3577:85:0;3698:67;182:10;3721:7;3749:15;3730:16;:34;3698:8;:67::i;:::-;-1:-1:-1;3796:4:0;;3393:415;-1:-1:-1;;;3393:415:0:o;2143:177::-;2231:4;2248:42;182:10;2272:9;2283:6;2248:9;:42::i;18847:201::-;5935:6;;-1:-1:-1;;;;;5935:6:0;182:10;5997:23;5989:68;;;;-1:-1:-1;;;5989:68:0;;;;;;;:::i;:::-;18956:28:::1;:17:::0;18977:6:::1;18956:28;:::i;:::-;18935:18;:49:::0;19000:40:::1;::::0;19022:17;;19000:40:::1;::::0;;;::::1;18847:201:::0;:::o;17642:296::-;5935:6;;-1:-1:-1;;;;;5935:6:0;182:10;5997:23;5989:68;;;;-1:-1:-1;;;5989:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17735:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:40;::::1;;:28;::::0;;::::1;:40;;::::0;17727:101:::1;;;::::0;-1:-1:-1;;;17727:101:0;;8111:2:1;17727:101:0::1;::::0;::::1;8093:21:1::0;8150:2;8130:18;;;8123:30;8189:34;8169:18;;;8162:62;-1:-1:-1;;;8240:18:1;;;8233:46;8296:19;;17727:101:0::1;7909:412:1::0;17727:101:0::1;-1:-1:-1::0;;;;;17839:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;17839:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17896:34;;1163:41:1;;;17896:34:0::1;::::0;1136:18:1;17896:34:0::1;;;;;;;17642:296:::0;;:::o;17949:173::-;5935:6;;-1:-1:-1;;;;;5935:6:0;182:10;5997:23;5989:68;;;;-1:-1:-1;;;5989:68:0;;;;;;;:::i;:::-;18028:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18028:32:0::1;-1:-1:-1::0;;;;18028:32:0;;::::1;;::::0;;18076:38:::1;::::0;::::1;::::0;::::1;::::0;18052:8;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;18076:38:0::1;;;;;;;;17949:173:::0;:::o;6189:194::-;5935:6;;-1:-1:-1;;;;;5935:6:0;182:10;5997:23;5989:68;;;;-1:-1:-1;;;5989:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6280:22:0;::::1;6272:73;;;::::0;-1:-1:-1;;;6272:73:0;;8528:2:1;6272:73:0::1;::::0;::::1;8510:21:1::0;8567:2;8547:18;;;8540:30;8606:34;8586:18;;;8579:62;-1:-1:-1;;;8657:18:1;;;8650:36;8703:19;;6272:73:0::1;8326:402:1::0;6272:73:0::1;6356:19;6366:8;6356:9;:19::i;:::-;6189:194:::0;:::o;12110:98::-;12168:7;12195:5;12199:1;12195;:5;:::i;:::-;12188:12;12110:98;-1:-1:-1;;;12110:98:0:o;4979:380::-;-1:-1:-1;;;;;5115:19:0;;5107:68;;;;-1:-1:-1;;;5107:68:0;;8935:2:1;5107:68:0;;;8917:21:1;8974:2;8954:18;;;8947:30;9013:34;8993:18;;;8986:62;-1:-1:-1;;;9064:18:1;;;9057:34;9108:19;;5107:68:0;8733:400:1;5107:68:0;-1:-1:-1;;;;;5194:21:0;;5186:68;;;;-1:-1:-1;;;5186:68:0;;9340:2:1;5186:68:0;;;9322:21:1;9379:2;9359:18;;;9352:30;9418:34;9398:18;;;9391:62;-1:-1:-1;;;9469:18:1;;;9462:32;9511:19;;5186:68:0;9138:398:1;5186:68:0;-1:-1:-1;;;;;5267:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5319:32;;1361:25:1;;;5319:32:0;;1334:18:1;5319:32:0;;;;;;;4979:380;;;:::o;14442:1279::-;-1:-1:-1;;;;;14540:18:0;;14532:68;;;;-1:-1:-1;;;14532:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14619:16:0;;14611:64;;;;-1:-1:-1;;;14611:64:0;;;;;;;:::i;:::-;14691:6;14701:1;14691:11;14688:92;;14719:28;14735:4;14741:2;14745:1;14719:15;:28::i;:::-;14442:1279;;;:::o;14688:92::-;-1:-1:-1;;;;;14796:25:0;;;;;;:19;:25;;;;;;;;14795:26;:54;;;;-1:-1:-1;;;;;;14826:23:0;;;;;;:19;:23;;;;;;;;14825:24;14795:54;14792:246;;;-1:-1:-1;;;;;2109:18:0;;14865:32;2109:18;;;;;;;;;;;14976:9;;14936:36;2109:18;14965:6;14936:28;:36::i;:::-;:49;;14928:98;;;;-1:-1:-1;;;14928:98:0;;10553:2:1;14928:98:0;;;10535:21:1;10592:2;10572:18;;;10565:30;10631:34;10611:18;;;10604:62;-1:-1:-1;;;10682:18:1;;;10675:34;10726:19;;14928:98:0;10351:400:1;14928:98:0;14850:188;14792:246;15107:4;15058:28;2109:18;;;;;;;;;;;15175;;15151:42;;;15222:13;-1:-1:-1;;;;;15216:19:0;;;;;;;:42;;;;;15239:19;15216:42;:63;;;;-1:-1:-1;15263:16:0;;-1:-1:-1;;;15263:16:0;;;;15262:17;15216:63;:88;;;;-1:-1:-1;15283:21:0;;-1:-1:-1;;;15283:21:0;;;;15216:88;15213:212;;;15344:18;;15321:41;;15377:36;15392:20;15377:14;:36::i;:::-;-1:-1:-1;;;;;15441:25:0;;;;;;:19;:25;;;;;;;;15440:26;:54;;;;-1:-1:-1;;;;;;15471:23:0;;;;;;:19;:23;;;;;;;;15470:24;15440:54;15437:229;;;15511:12;15526:30;15552:3;15526:21;15537:9;;15526:6;:10;;:21;;;;:::i;:::-;:25;;:30::i;:::-;15511:45;-1:-1:-1;15580:16:0;:6;15511:45;15580:10;:16::i;:::-;15571:25;;15611:42;15627:4;15641;15648;15611:15;:42::i;:::-;15496:170;15437:229;15678:33;15694:4;15700:2;15704:6;15678:15;:33::i;:::-;14521:1200;;14442:1279;;;:::o;6391:173::-;6466:6;;;-1:-1:-1;;;;;6483:17:0;;;-1:-1:-1;;;;;;6483:17:0;;;;;;;6516:40;;6466:6;;;6483:17;6466:6;;6516:40;;6447:16;;6516:40;6436:128;6391:173;:::o;3816:733::-;-1:-1:-1;;;;;3956:20:0;;3948:70;;;;-1:-1:-1;;;3948:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4037:23:0;;4029:71;;;;-1:-1:-1;;;4029:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4197:17:0;;4173:21;4197:17;;;;;;;;;;;4233:23;;;;4225:74;;;;-1:-1:-1;;;4225:74:0;;10958:2:1;4225:74:0;;;10940:21:1;10997:2;10977:18;;;10970:30;11036:34;11016:18;;;11009:62;-1:-1:-1;;;11087:18:1;;;11080:36;11133:19;;4225:74:0;10756:402:1;4225:74:0;-1:-1:-1;;;;;4335:17:0;;;:9;:17;;;;;;;;;;;4355:22;;;4335:42;;4399:20;;;;;;;;:30;;4371:6;;4335:9;4399:30;;4371:6;;4399:30;:::i;:::-;;;;;;;;4464:9;-1:-1:-1;;;;;4447:35:0;4456:6;-1:-1:-1;;;;;4447:35:0;;4475:6;4447:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;4447:35:0;;;;;;;;3937:612;3816:733;;;:::o;15729:679::-;13672:16;:23;;-1:-1:-1;;;;13672:23:0;-1:-1:-1;;;13672:23:0;;;15886:9:::1;::::0;15868:12:::1;::::0;13672:23;;15843:53:::1;::::0;:38:::1;::::0;:20;;:24:::1;:38::i;:53::-;15814:82:::0;-1:-1:-1;15909:12:0::1;15924:25;15814:82:::0;15947:1:::1;15924:22;:25::i;:::-;15909:40:::0;-1:-1:-1;15960:17:0::1;15980:28;:18:::0;15909:40;15980:22:::1;:28::i;:::-;15960:48:::0;-1:-1:-1;16044:21:0::1;16078:22;16095:4:::0;16078:16:::1;:22::i;:::-;16113:18;16134:41;:21;16160:14:::0;16134:25:::1;:41::i;:::-;16113:62;;16188:35;16201:9;16212:10;16188:12;:35::i;:::-;16236:62;16253:44;:20:::0;16278:18;16253:24:::1;:44::i;:::-;16236:16;:62::i;:::-;16309:9;::::0;:41:::1;::::0;-1:-1:-1;;;;;16309:9:0;;::::1;::::0;16328:21:::1;16309:41:::0;::::1;;;::::0;:9:::1;:41:::0;:9;:41;16328:21;16309:9;:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;16368:32:0::1;::::0;;11337:25:1;;;11393:2;11378:18;;11371:34;;;16368:32:0::1;::::0;11310:18:1;16368:32:0::1;;;;;;;-1:-1:-1::0;;13718:16:0;:24;;-1:-1:-1;;;;13718:24:0;;;-1:-1:-1;;;;15729:679:0:o;12322:98::-;12380:7;12407:5;12411:1;12407;:5;:::i;12428:98::-;12486:7;12513:5;12517:1;12513;:5;:::i;12216:98::-;12274:7;12301:5;12305:1;12301;:5;:::i;16416:580::-;16508:16;;;16522:1;16508:16;;;;;;;;16484:21;;16508:16;;;;;;;;;;-1:-1:-1;16508:16:0;16484:40;;16553:4;16535;16540:1;16535:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16535:23:0;;;:7;;;;;;;;;;:23;;;;16579:15;;:22;;;-1:-1:-1;;;16579:22:0;;;;:15;;;;;:20;;:22;;;;;16535:7;;16579:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16569:4;16574:1;16569:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16569:32:0;;;:7;;;;;;;;;;:32;;;;16650:15;;16635:4;2417:7;2444:18;;;:11;:18;;;;;;16650:15;;;;2444:27;;;;;;16670:11;-1:-1:-1;16614:156:0;;;16728:15;;16696:62;;16713:4;;-1:-1:-1;;;;;16728:15:0;-1:-1:-1;;16696:8:0;:62::i;:::-;16782:15;;:196;;-1:-1:-1;;;16782:196:0;;-1:-1:-1;;;;;16782:15:0;;;;:66;;:196;;16863:11;;16782:15;;16905:4;;16932;;16952:15;;16782:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16471:525;16416:580;:::o;17083:412::-;17219:15;;17369:10;;17219:201;;-1:-1:-1;;;17219:201:0;;17291:4;17219:201;;;13625:34:1;13675:18;;;13668:34;;;17167:16:0;13718:18:1;;;13711:34;;;13761:18;;;13754:34;;;-1:-1:-1;;;;;17369:10:0;;;13804:19:1;;;13797:44;17394:15:0;13857:19:1;;;13850:35;17167:16:0;;;;;17219:15;;;:31;;17258:9;;13559:19:1;;17219:201:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17438:49;;;14409:25:1;;;14465:2;14450:18;;14443:34;;;14493:18;;;14486:34;;;17166:254:0;;-1:-1:-1;17166:254:0;;-1:-1:-1;17166:254:0;-1:-1:-1;17438:49:0;;14397:2:1;14382:18;17438:49:0;;;;;;;17153:342;;;17083:412;;:::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;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;1632:255::-;1699:6;1752:2;1740:9;1731:7;1727:23;1723:32;1720:52;;;1768:1;1765;1758:12;1720:52;1807:9;1794:23;1826:31;1851:5;1826:31;:::i;1892:456::-;1969:6;1977;1985;2038:2;2026:9;2017:7;2013:23;2009:32;2006:52;;;2054:1;2051;2044:12;2006:52;2093:9;2080:23;2112:31;2137:5;2112:31;:::i;:::-;2162:5;-1:-1:-1;2219:2:1;2204:18;;2191:32;2232:33;2191:32;2232:33;:::i;:::-;1892:456;;2284:7;;-1:-1:-1;;;2338:2:1;2323:18;;;;2310:32;;1892:456::o;3002:248::-;3070:6;3078;3131:2;3119:9;3110:7;3106:23;3102:32;3099:52;;;3147:1;3144;3137:12;3099:52;-1:-1:-1;;3170:23:1;;;3240:2;3225:18;;;3212:32;;-1:-1:-1;3002:248:1:o;3255:180::-;3314:6;3367:2;3355:9;3346:7;3342:23;3338:32;3335:52;;;3383:1;3380;3373:12;3335:52;-1:-1:-1;3406:23:1;;3255:180;-1:-1:-1;3255:180:1:o;3664:160::-;3729:20;;3785:13;;3778:21;3768:32;;3758:60;;3814:1;3811;3804:12;3758:60;3664:160;;;:::o;3829:315::-;3894:6;3902;3955:2;3943:9;3934:7;3930:23;3926:32;3923:52;;;3971:1;3968;3961:12;3923:52;4010:9;3997:23;4029:31;4054:5;4029:31;:::i;:::-;4079:5;-1:-1:-1;4103:35:1;4134:2;4119:18;;4103:35;:::i;:::-;4093:45;;3829:315;;;;;:::o;4149:180::-;4205:6;4258:2;4246:9;4237:7;4233:23;4229:32;4226:52;;;4274:1;4271;4264:12;4226:52;4297:26;4313:9;4297:26;:::i;4334:388::-;4402:6;4410;4463:2;4451:9;4442:7;4438:23;4434:32;4431:52;;;4479:1;4476;4469:12;4431:52;4518:9;4505:23;4537:31;4562:5;4537:31;:::i;:::-;4587:5;-1:-1:-1;4644:2:1;4629:18;;4616:32;4657:33;4616:32;4657:33;:::i;:::-;4709:7;4699:17;;;4334:388;;;;;:::o;4727:380::-;4806:1;4802:12;;;;4849;;;4870:61;;4924:4;4916:6;4912:17;4902:27;;4870:61;4977:2;4969:6;4966:14;4946:18;4943:38;4940:161;;5023:10;5018:3;5014:20;5011:1;5004:31;5058:4;5055:1;5048:15;5086:4;5083:1;5076:15;4940:161;;4727:380;;;:::o;5112:356::-;5314:2;5296:21;;;5333:18;;;5326:30;5392:34;5387:2;5372:18;;5365:62;5459:2;5444:18;;5112:356::o;6233:127::-;6294:10;6289:3;6285:20;6282:1;6275:31;6325:4;6322:1;6315:15;6349:4;6346:1;6339:15;6365:125;6430:9;;;6451:10;;;6448:36;;;6464:18;;:::i;7330:168::-;7403:9;;;7434;;7451:15;;;7445:22;;7431:37;7421:71;;7472:18;;:::i;9541:401::-;9743:2;9725:21;;;9782:2;9762:18;;;9755:30;9821:34;9816:2;9801:18;;9794:62;-1:-1:-1;;;9887:2:1;9872:18;;9865:35;9932:3;9917:19;;9541:401::o;9947:399::-;10149:2;10131:21;;;10188:2;10168:18;;;10161:30;10227:34;10222:2;10207:18;;10200:62;-1:-1:-1;;;10293:2:1;10278:18;;10271:33;10336:3;10321:19;;9947:399::o;11416:217::-;11456:1;11482;11472:132;;11526:10;11521:3;11517:20;11514:1;11507:31;11561:4;11558:1;11551:15;11589:4;11586:1;11579:15;11472:132;-1:-1:-1;11618:9:1;;11416:217::o;11638:128::-;11705:9;;;11726:11;;;11723:37;;;11740:18;;:::i;11903:127::-;11964:10;11959:3;11955:20;11952:1;11945:31;11995:4;11992:1;11985:15;12019:4;12016:1;12009:15;12035:251;12105:6;12158:2;12146:9;12137:7;12133:23;12129:32;12126:52;;;12174:1;12171;12164:12;12126:52;12206:9;12200:16;12225:31;12250:5;12225:31;:::i;12291:980::-;12553:4;12601:3;12590:9;12586:19;12632:6;12621:9;12614:25;12658:2;12696:6;12691:2;12680:9;12676:18;12669:34;12739:3;12734:2;12723:9;12719:18;12712:31;12763:6;12798;12792:13;12829:6;12821;12814:22;12867:3;12856:9;12852:19;12845:26;;12906:2;12898:6;12894:15;12880:29;;12927:1;12937:195;12951:6;12948:1;12945:13;12937:195;;;13016:13;;-1:-1:-1;;;;;13012:39:1;13000:52;;13107:15;;;;13072:12;;;;13048:1;12966:9;12937:195;;;-1:-1:-1;;;;;;;13188:32:1;;;;13183:2;13168:18;;13161:60;-1:-1:-1;;;13252:3:1;13237:19;13230:35;13149:3;12291:980;-1:-1:-1;;;12291:980:1:o;13896:306::-;13984:6;13992;14000;14053:2;14041:9;14032:7;14028:23;14024:32;14021:52;;;14069:1;14066;14059:12;14021:52;14098:9;14092:16;14082:26;;14148:2;14137:9;14133:18;14127:25;14117:35;;14192:2;14181:9;14177:18;14171:25;14161:35;;13896:306;;;;;:::o
Swarm Source
ipfs://3732080231261746df7f3340e6b942c82cf687960051bf876b8b6bbcefc8d591
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.