ERC-20
Overview
Max Total Supply
1,000,000,000 CTL
Holders
102
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
28,998,119.454777331 CTLValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ChainTool
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-04 */ // SPDX-License-Identifier: Unlicensed /** ChainTool is revolutionizing the DeFi landscape by offering the first-ever Uniswap V3 no-staking liquidity rewards protocol. Revolutionary Uniswap V3 Tokenomics. :unicorn_face: Innovators of no-staking LP rewards. :trophy: Builders of unique DeFi utilities. :male_mage: Web: https://chaintool.pro App: https://app.chaintool.pro Twitter: https://twitter.com/Chain_Tool_Tech Telegram: https://t.me/chaintool_tech */ pragma solidity 0.8.21; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(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); } 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; } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function waiveOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface 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; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract ChainTool is Context, IERC20, Ownable { using SafeMath for uint256; string private _name = "ChainTool"; string private _symbol = "CTL"; uint8 private _decimals = 9; address payable private devWallet = payable(0xcfCD1dd6D5b2BF52b87c92Dbb6b7565786D286C1); address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; uint256 public buyLiquidityFees = 0; uint256 public buyMarketingFees = 23; uint256 public buyDevelopmentFees = 0; uint256 public sellLiquidityFees = 0; uint256 public sellMarketingFees = 23; uint256 public sellDevelopmentFees = 0; uint256 public lpShare = 0; uint256 public mktShare = 10; uint256 public devShare = 0; uint256 public totalFeeIfBuying = 23; uint256 public totalFeeIfSelling = 23; uint256 public _totalDistributionShares = 10; uint256 private _totalSupply = 1000_000_000 * 10**9; uint256 public maxTxAmount = _totalSupply; uint256 public maxWallet = _totalSupply*25/1000; uint256 private minTokensToTriggerFee = _totalSupply/100000; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public checkExcludedFromFees; mapping (address => bool) public checkWalletLimitExcept; mapping (address => bool) public checkTxLimitExcept; mapping (address => bool) public checkIfPairAddress; IUniswapV2Router02 public uniswapRouter; address public pairAddress; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; bool public swapAndLiquifyByLimitOnly = false; bool public checkWalletLimit = true; modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pairAddress = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapRouter = _uniswapV2Router; _allowances[address(this)][address(uniswapRouter)] = _totalSupply; checkExcludedFromFees[owner()] = true; checkExcludedFromFees[devWallet] = true; checkWalletLimitExcept[owner()] = true; checkWalletLimitExcept[address(pairAddress)] = true; checkWalletLimitExcept[address(this)] = true; checkTxLimitExcept[owner()] = true; checkTxLimitExcept[devWallet] = true; checkTxLimitExcept[address(this)] = true; checkIfPairAddress[address(pairAddress)] = true; _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); 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); } function setcheckTxLimitExcept(address holder, bool exempt) external onlyOwner { checkTxLimitExcept[holder] = exempt; } function setcheckExcludedFromFees(address account, bool newValue) public onlyOwner { checkExcludedFromFees[account] = newValue; } function setBuyFee(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() { buyLiquidityFees = newLiquidityTax; buyMarketingFees = newMarketingTax; buyDevelopmentFees = newDevelopmentTax; totalFeeIfBuying = buyLiquidityFees.add(buyMarketingFees).add(buyDevelopmentFees); require (totalFeeIfBuying <= 10); } function setSellFee(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() { sellLiquidityFees = newLiquidityTax; sellMarketingFees = newMarketingTax; sellDevelopmentFees = newDevelopmentTax; totalFeeIfSelling = sellLiquidityFees.add(sellMarketingFees).add(sellDevelopmentFees); require (totalFeeIfSelling <= 20); } function adjustMaxTxAmount(uint256 maxTxAmount_) external onlyOwner() { require(maxTxAmount >= _totalSupply/100, "Max wallet should be more or equal to 1%"); maxTxAmount = maxTxAmount_; } function enableDisableWalletLimit(bool newValue) external onlyOwner { checkWalletLimit = newValue; } function setcheckWalletLimitExcept(address holder, bool exempt) external onlyOwner { checkWalletLimitExcept[holder] = exempt; } function setWalletLimit(uint256 newLimit) external onlyOwner { maxWallet = newLimit; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() { minTokensToTriggerFee = newLimit; } function settaxWallet(address newAddress) external onlyOwner() { devWallet = payable(newAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; } function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner { swapAndLiquifyByLimitOnly = newValue; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { if(!checkTxLimitExcept[sender] && !checkTxLimitExcept[recipient]) { require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minTokensToTriggerFee; if (overMinimumTokenBalance && !inSwapAndLiquify && !checkExcludedFromFees[sender] && checkIfPairAddress[recipient] && swapAndLiquifyEnabled && amount > minTokensToTriggerFee) { if(swapAndLiquifyByLimitOnly) contractTokenBalance = minTokensToTriggerFee; swapAndLiquify(contractTokenBalance); } (uint256 finalAmount, uint256 feeAmount) = takeFeeOnTx(sender, recipient, amount); address feeReceiver = feeAmount == amount ? sender : address(this); if(feeAmount > 0) { _balances[feeReceiver] = _balances[feeReceiver].add(feeAmount); emit Transfer(sender, feeReceiver, feeAmount); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); if(checkWalletLimit && !checkWalletLimitExcept[recipient]) require(balanceOf(recipient).add(finalAmount) <= maxWallet); _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify(uint256 tAmount) private lockTheSwap { swapTokensForEth(tAmount); uint256 amountETHMarketing = address(this).balance; transferToAddressETH(devWallet, amountETHMarketing); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapRouter.WETH(); _approve(address(this), address(uniswapRouter), tokenAmount); // make the swap uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); } function takeFeeOnTx(address sender, address recipient, uint256 amount) internal view returns (uint256, uint256) { uint256 feeAmount = amount; if (sender == devWallet) return (amount, feeAmount); if(checkIfPairAddress[sender]) { feeAmount = amount.mul(totalFeeIfBuying).div(100); } else if(checkIfPairAddress[recipient]) { feeAmount = amount.mul(totalFeeIfSelling).div(100); } if (checkExcludedFromFees[sender]) { return (amount, 0); } return (amount.sub(feeAmount), feeAmount); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function manualSend() external { transferToAddressETH(devWallet, address(this).balance); } //to recieve ETH from uniswapRouter when swaping receive() external payable {} }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount_","type":"uint256"}],"name":"adjustMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkIfPairAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkTxLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkWalletLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","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":"mktShare","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":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevelopmentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setcheckExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckTxLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckWalletLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"settaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","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":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e0604052600960a09081526810da185a5b951bdbdb60ba1b60c0526002906200002a90826200058d565b506040805180820190915260038082526210d51360ea1b6020830152906200005390826200058d565b50600480546001600160a81b03191674cfcd1dd6d5b2bf52b87c92dbb6b7565786d286c10917905561dead6080525f600581905560176006819055600782905560088290556009819055600a828155600b839055600c819055600d92909255600e819055600f55601055670de0b6b3a7640000601181905560128190556103e890620000e190601962000655565b620000ed91906200067f565b601355620186a06011546200010391906200067f565b601455601c805462ffffff60a81b1916600160b81b17905534801562000127575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e391906200069f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025591906200069f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002c691906200069f565b601c80546001600160a01b039283166001600160a01b031991821617909155601b80549284169290911682179055601154305f908152601660209081526040808320948352939052918220556001906017906200032a5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790556004546101009004909116815260179092528120805490921660019081179092556018906200038d5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601c549091168152601890925280822080548416600190811790915530835290822080549093168117909255601990620003fb5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600454610100900482168152601984528281208054861660019081179091553082528382208054871682179055601c549092168152601a909352908220805490931617909155601154906015906200047d3390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601154604051620004de91815260200190565b60405180910390a350620006ce565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200051657607f821691505b6020821081036200053557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000588575f81815260208120601f850160051c81016020861015620005635750805b601f850160051c820191505b8181101562000584578281556001016200056f565b5050505b505050565b81516001600160401b03811115620005a957620005a9620004ed565b620005c181620005ba845462000501565b846200053b565b602080601f831160018114620005f7575f8415620005df5750858301515b5f19600386901b1c1916600185901b17855562000584565b5f85815260208120601f198616915b82811015620006275788860151825594840194600190910190840162000606565b50858210156200064557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176200067957634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200069a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620006b0575f80fd5b81516001600160a01b0381168114620006c7575f80fd5b9392505050565b608051611e0d620006ee5f395f81816103f20152610b4e0152611e0d5ff3fe6080604052600436106102c2575f3560e01c8063914eb66a1161016f578063c49b9a80116100d8578063ebc38ab011610092578063f42938901161006d578063f42938901461086c578063f872858a14610880578063f8b45b05146108a0578063fabf7063146108b5575f80fd5b8063ebc38ab014610819578063f1d5f5171461082e578063f2fde38b1461084d575f80fd5b8063c49b9a801461073e578063c78a789b1461075d578063ca987b0e1461078b578063da00097d146107a0578063dd62ed3e146107c0578063eb9bf3fb14610804575f80fd5b8063a5d69d1f11610129578063a5d69d1f146106a2578063a8b08982146106c1578063a9059cbb146106e0578063aed04fae146106ff578063b1c61dc614610714578063c42b88bc14610729575f80fd5b8063914eb66a1461060d578063935fe68c1461062157806395451c291461063657806395d89b411461064b5780639772bbdb1461065f578063a08e671f1461068d575f80fd5b80633b97084a1161022b5780636efc30a9116101e5578063735de9f7116101c0578063735de9f71461059e5780638c0b5e22146105bd5780638da5cb5b146105d25780638f03aad5146105ee575f80fd5b80636efc30a91461054057806370a082311461055557806371d6367a14610589575f80fd5b80633b97084a146104805780634a74bb021461049f5780635124f874146104bf578063526012e8146104d457806357e6adcb14610502578063667b511c14610521575f80fd5b806325519cf21161027c57806325519cf2146103a35780632563ae83146103c257806327c8f835146103e15780632b112e491461042c5780632cdae5cb14610440578063313ce5671461045f575f80fd5b806304b8d329146102cd57806306fdde03146102ee578063095ea7b31461031857806318160ddd146103475780631d865c301461036557806323b872dd14610384575f80fd5b366102c957005b5f80fd5b3480156102d8575f80fd5b506102ec6102e7366004611a8f565b6108e3565b005b3480156102f9575f80fd5b5061030261093d565b60405161030f9190611aaa565b60405180910390f35b348015610323575f80fd5b50610337610332366004611af5565b6109cd565b604051901515815260200161030f565b348015610352575f80fd5b506011545b60405190815260200161030f565b348015610370575f80fd5b506102ec61037f366004611b1f565b6109e3565b34801561038f575f80fd5b5061033761039e366004611b48565b610a45565b3480156103ae575f80fd5b506102ec6103bd366004611b1f565b610aae565b3480156103cd575f80fd5b506102ec6103dc366004611b9a565b610b05565b3480156103ec575f80fd5b506104147f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161030f565b348015610437575f80fd5b50610357610b4c565b34801561044b575f80fd5b506102ec61045a366004611bb3565b610b95565b34801561046a575f80fd5b5060045460405160ff909116815260200161030f565b34801561048b575f80fd5b506102ec61049a366004611be6565b610be8565b3480156104aa575f80fd5b50601c5461033790600160a81b900460ff1681565b3480156104ca575f80fd5b5061035760065481565b3480156104df575f80fd5b506103376104ee366004611a8f565b60186020525f908152604090205460ff1681565b34801561050d575f80fd5b506102ec61051c366004611bb3565b610c16565b34801561052c575f80fd5b506102ec61053b366004611bb3565b610c69565b34801561054b575f80fd5b50610357600c5481565b348015610560575f80fd5b5061035761056f366004611a8f565b6001600160a01b03165f9081526015602052604090205490565b348015610594575f80fd5b5061035760055481565b3480156105a9575f80fd5b50601b54610414906001600160a01b031681565b3480156105c8575f80fd5b5061035760125481565b3480156105dd575f80fd5b505f546001600160a01b0316610414565b3480156105f9575f80fd5b506102ec610608366004611be6565b610cbc565b348015610618575f80fd5b506102ec610d5b565b34801561062c575f80fd5b50610357600e5481565b348015610641575f80fd5b5061035760095481565b348015610656575f80fd5b50610302610dcc565b34801561066a575f80fd5b50610337610679366004611a8f565b601a6020525f908152604090205460ff1681565b348015610698575f80fd5b5061035760105481565b3480156106ad575f80fd5b506102ec6106bc366004611b9a565b610ddb565b3480156106cc575f80fd5b50601c54610414906001600160a01b031681565b3480156106eb575f80fd5b506103376106fa366004611af5565b610e22565b34801561070a575f80fd5b50610357600d5481565b34801561071f575f80fd5b5061035760075481565b348015610734575f80fd5b5061035760085481565b348015610749575f80fd5b506102ec610758366004611b9a565b610e2e565b348015610768575f80fd5b50610337610777366004611a8f565b60196020525f908152604090205460ff1681565b348015610796575f80fd5b50610357600f5481565b3480156107ab575f80fd5b50601c5461033790600160b01b900460ff1681565b3480156107cb575f80fd5b506103576107da366004611bfd565b6001600160a01b039182165f90815260166020908152604080832093909416825291909152205490565b34801561080f575f80fd5b50610357600a5481565b348015610824575f80fd5b50610357600b5481565b348015610839575f80fd5b506102ec610848366004611be6565b610e75565b348015610858575f80fd5b506102ec610867366004611a8f565b610ea3565b348015610877575f80fd5b506102ec610f8a565b34801561088b575f80fd5b50601c5461033790600160b81b900460ff1681565b3480156108ab575f80fd5b5061035760135481565b3480156108c0575f80fd5b506103376108cf366004611a8f565b60176020525f908152604090205460ff1681565b5f546001600160a01b031633146109155760405162461bcd60e51b815260040161090c90611c34565b60405180910390fd5b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60606002805461094c90611c69565b80601f016020809104026020016040519081016040528092919081815260200182805461097890611c69565b80156109c35780601f1061099a576101008083540402835291602001916109c3565b820191905f5260205f20905b8154815290600101906020018083116109a657829003601f168201915b5050505050905090565b5f6109d9338484610fa7565b5060015b92915050565b5f546001600160a01b03163314610a0c5760405162461bcd60e51b815260040161090c90611c34565b60088390556009829055600a819055610a2f81610a2985856110ca565b906110ca565b600f81905560141015610a40575f80fd5b505050565b5f610a51848484611128565b50610aa38433610a9e85604051806060016040528060288152602001611db0602891396001600160a01b038a165f9081526016602090815260408083203384529091529020549190611577565b610fa7565b5060015b9392505050565b5f546001600160a01b03163314610ad75760405162461bcd60e51b815260040161090c90611c34565b600583905560068290556007819055610af481610a2985856110ca565b600e819055600a1015610a40575f80fd5b5f546001600160a01b03163314610b2e5760405162461bcd60e51b815260040161090c90611c34565b601c8054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f90815260156020526040812054601154610b90916115af565b905090565b5f546001600160a01b03163314610bbe5760405162461bcd60e51b815260040161090c90611c34565b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610c115760405162461bcd60e51b815260040161090c90611c34565b601455565b5f546001600160a01b03163314610c3f5760405162461bcd60e51b815260040161090c90611c34565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610c925760405162461bcd60e51b815260040161090c90611c34565b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610ce55760405162461bcd60e51b815260040161090c90611c34565b6064601154610cf49190611cb5565b6012541015610d565760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073686f756c64206265206d6f7265206f7220657175604482015267616c20746f20312560c01b606482015260840161090c565b601255565b5f546001600160a01b03163314610d845760405162461bcd60e51b815260040161090c90611c34565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60606003805461094c90611c69565b5f546001600160a01b03163314610e045760405162461bcd60e51b815260040161090c90611c34565b601c8054911515600160b01b0260ff60b01b19909216919091179055565b5f610aa3338484611128565b5f546001600160a01b03163314610e575760405162461bcd60e51b815260040161090c90611c34565b601c8054911515600160a81b0260ff60a81b19909216919091179055565b5f546001600160a01b03163314610e9e5760405162461bcd60e51b815260040161090c90611c34565b601355565b5f546001600160a01b03163314610ecc5760405162461bcd60e51b815260040161090c90611c34565b6001600160a01b038116610f315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161090c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b600454610fa59061010090046001600160a01b0316476115f0565b565b6001600160a01b0383166110095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161090c565b6001600160a01b03821661106a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161090c565b6001600160a01b038381165f8181526016602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f806110d68385611cd4565b905083811015610aa75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161090c565b5f6001600160a01b03841661118d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161090c565b6001600160a01b0383166111ef5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161090c565b601c54600160a01b900460ff16156112135761120c848484611623565b9050610aa7565b6001600160a01b0384165f9081526019602052604090205460ff1615801561125357506001600160a01b0383165f9081526019602052604090205460ff16155b156112bb576012548211156112bb5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161090c565b305f90815260156020526040902054601454811080159081906112e85750601c54600160a01b900460ff16155b801561130c57506001600160a01b0386165f9081526017602052604090205460ff16155b801561132f57506001600160a01b0385165f908152601a602052604090205460ff165b80156113445750601c54600160a81b900460ff165b8015611351575060145484115b1561137757601c54600160b01b900460ff161561136e5760145491505b61137782611706565b5f80611384888888611750565b915091505f8682146113965730611398565b885b9050811561141e576001600160a01b0381165f908152601560205260409020546113c290836110ca565b6001600160a01b038083165f8181526015602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114159086815260200190565b60405180910390a35b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038c165f9081526015909152919091205461146f918990611577565b6001600160a01b038a165f90815260156020526040902055601c54600160b81b900460ff1680156114b857506001600160a01b0388165f9081526018602052604090205460ff16155b156114ec576013546114e284610a298b6001600160a01b03165f9081526015602052604090205490565b11156114ec575f80fd5b6001600160a01b0388165f9081526015602052604090205461150e90846110ca565b6001600160a01b03808a165f8181526015602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115619087815260200190565b60405180910390a3600195505050505050610aa7565b5f818484111561159a5760405162461bcd60e51b815260040161090c9190611aaa565b505f6115a68486611ce7565b95945050505050565b5f610aa783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611577565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015610a40573d5f803e3d5ffd5b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601590915291822054611673918490611577565b6001600160a01b038086165f9081526015602052604080822093909355908516815220546116a190836110ca565b6001600160a01b038085165f8181526015602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116f49086815260200190565b60405180910390a35060019392505050565b601c805460ff60a01b1916600160a01b17905561172281611842565b600454479061173f9061010090046001600160a01b0316826115f0565b5050601c805460ff60a01b19169055565b6004545f90819083906001600160a01b0361010090910481169087160361177b57839250905061183a565b6001600160a01b0386165f908152601a602052604090205460ff16156117c2576117bb60646117b5600e548761199290919063ffffffff16565b90611a10565b90506117ff565b6001600160a01b0385165f908152601a602052604090205460ff16156117ff576117fc60646117b5600f548761199290919063ffffffff16565b90505b6001600160a01b0386165f9081526017602052604090205460ff161561182b57835f925092505061183a565b61183584826115af565b925090505b935093915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061187557611875611cfa565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f09190611d0e565b8160018151811061190357611903611cfa565b6001600160a01b039283166020918202929092010152601b546119299130911684610fa7565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906119619085905f90869030904290600401611d29565b5f604051808303815f87803b158015611978575f80fd5b505af115801561198a573d5f803e3d5ffd5b505050505050565b5f825f036119a157505f6109dd565b5f6119ac8385611d98565b9050826119b98583611cb5565b14610aa75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161090c565b5f610aa783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611a6c5760405162461bcd60e51b815260040161090c9190611aaa565b505f6115a68486611cb5565b6001600160a01b0381168114611a8c575f80fd5b50565b5f60208284031215611a9f575f80fd5b8135610aa781611a78565b5f6020808352835180828501525f5b81811015611ad557858101830151858201604001528201611ab9565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611b06575f80fd5b8235611b1181611a78565b946020939093013593505050565b5f805f60608486031215611b31575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215611b5a575f80fd5b8335611b6581611a78565b92506020840135611b7581611a78565b929592945050506040919091013590565b80358015158114611b95575f80fd5b919050565b5f60208284031215611baa575f80fd5b610aa782611b86565b5f8060408385031215611bc4575f80fd5b8235611bcf81611a78565b9150611bdd60208401611b86565b90509250929050565b5f60208284031215611bf6575f80fd5b5035919050565b5f8060408385031215611c0e575f80fd5b8235611c1981611a78565b91506020830135611c2981611a78565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611c7d57607f821691505b602082108103611c9b57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b5f82611ccf57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109dd576109dd611ca1565b818103818111156109dd576109dd611ca1565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611d1e575f80fd5b8151610aa781611a78565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611d775784516001600160a01b031683529383019391830191600101611d52565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176109dd576109dd611ca156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220265ab7705b1c2e8925fc64381e37628c30b6c1f8f2777db32b4a3215ab851fdb64736f6c63430008150033
Deployed Bytecode
0x6080604052600436106102c2575f3560e01c8063914eb66a1161016f578063c49b9a80116100d8578063ebc38ab011610092578063f42938901161006d578063f42938901461086c578063f872858a14610880578063f8b45b05146108a0578063fabf7063146108b5575f80fd5b8063ebc38ab014610819578063f1d5f5171461082e578063f2fde38b1461084d575f80fd5b8063c49b9a801461073e578063c78a789b1461075d578063ca987b0e1461078b578063da00097d146107a0578063dd62ed3e146107c0578063eb9bf3fb14610804575f80fd5b8063a5d69d1f11610129578063a5d69d1f146106a2578063a8b08982146106c1578063a9059cbb146106e0578063aed04fae146106ff578063b1c61dc614610714578063c42b88bc14610729575f80fd5b8063914eb66a1461060d578063935fe68c1461062157806395451c291461063657806395d89b411461064b5780639772bbdb1461065f578063a08e671f1461068d575f80fd5b80633b97084a1161022b5780636efc30a9116101e5578063735de9f7116101c0578063735de9f71461059e5780638c0b5e22146105bd5780638da5cb5b146105d25780638f03aad5146105ee575f80fd5b80636efc30a91461054057806370a082311461055557806371d6367a14610589575f80fd5b80633b97084a146104805780634a74bb021461049f5780635124f874146104bf578063526012e8146104d457806357e6adcb14610502578063667b511c14610521575f80fd5b806325519cf21161027c57806325519cf2146103a35780632563ae83146103c257806327c8f835146103e15780632b112e491461042c5780632cdae5cb14610440578063313ce5671461045f575f80fd5b806304b8d329146102cd57806306fdde03146102ee578063095ea7b31461031857806318160ddd146103475780631d865c301461036557806323b872dd14610384575f80fd5b366102c957005b5f80fd5b3480156102d8575f80fd5b506102ec6102e7366004611a8f565b6108e3565b005b3480156102f9575f80fd5b5061030261093d565b60405161030f9190611aaa565b60405180910390f35b348015610323575f80fd5b50610337610332366004611af5565b6109cd565b604051901515815260200161030f565b348015610352575f80fd5b506011545b60405190815260200161030f565b348015610370575f80fd5b506102ec61037f366004611b1f565b6109e3565b34801561038f575f80fd5b5061033761039e366004611b48565b610a45565b3480156103ae575f80fd5b506102ec6103bd366004611b1f565b610aae565b3480156103cd575f80fd5b506102ec6103dc366004611b9a565b610b05565b3480156103ec575f80fd5b506104147f000000000000000000000000000000000000000000000000000000000000dead81565b6040516001600160a01b03909116815260200161030f565b348015610437575f80fd5b50610357610b4c565b34801561044b575f80fd5b506102ec61045a366004611bb3565b610b95565b34801561046a575f80fd5b5060045460405160ff909116815260200161030f565b34801561048b575f80fd5b506102ec61049a366004611be6565b610be8565b3480156104aa575f80fd5b50601c5461033790600160a81b900460ff1681565b3480156104ca575f80fd5b5061035760065481565b3480156104df575f80fd5b506103376104ee366004611a8f565b60186020525f908152604090205460ff1681565b34801561050d575f80fd5b506102ec61051c366004611bb3565b610c16565b34801561052c575f80fd5b506102ec61053b366004611bb3565b610c69565b34801561054b575f80fd5b50610357600c5481565b348015610560575f80fd5b5061035761056f366004611a8f565b6001600160a01b03165f9081526015602052604090205490565b348015610594575f80fd5b5061035760055481565b3480156105a9575f80fd5b50601b54610414906001600160a01b031681565b3480156105c8575f80fd5b5061035760125481565b3480156105dd575f80fd5b505f546001600160a01b0316610414565b3480156105f9575f80fd5b506102ec610608366004611be6565b610cbc565b348015610618575f80fd5b506102ec610d5b565b34801561062c575f80fd5b50610357600e5481565b348015610641575f80fd5b5061035760095481565b348015610656575f80fd5b50610302610dcc565b34801561066a575f80fd5b50610337610679366004611a8f565b601a6020525f908152604090205460ff1681565b348015610698575f80fd5b5061035760105481565b3480156106ad575f80fd5b506102ec6106bc366004611b9a565b610ddb565b3480156106cc575f80fd5b50601c54610414906001600160a01b031681565b3480156106eb575f80fd5b506103376106fa366004611af5565b610e22565b34801561070a575f80fd5b50610357600d5481565b34801561071f575f80fd5b5061035760075481565b348015610734575f80fd5b5061035760085481565b348015610749575f80fd5b506102ec610758366004611b9a565b610e2e565b348015610768575f80fd5b50610337610777366004611a8f565b60196020525f908152604090205460ff1681565b348015610796575f80fd5b50610357600f5481565b3480156107ab575f80fd5b50601c5461033790600160b01b900460ff1681565b3480156107cb575f80fd5b506103576107da366004611bfd565b6001600160a01b039182165f90815260166020908152604080832093909416825291909152205490565b34801561080f575f80fd5b50610357600a5481565b348015610824575f80fd5b50610357600b5481565b348015610839575f80fd5b506102ec610848366004611be6565b610e75565b348015610858575f80fd5b506102ec610867366004611a8f565b610ea3565b348015610877575f80fd5b506102ec610f8a565b34801561088b575f80fd5b50601c5461033790600160b81b900460ff1681565b3480156108ab575f80fd5b5061035760135481565b3480156108c0575f80fd5b506103376108cf366004611a8f565b60176020525f908152604090205460ff1681565b5f546001600160a01b031633146109155760405162461bcd60e51b815260040161090c90611c34565b60405180910390fd5b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60606002805461094c90611c69565b80601f016020809104026020016040519081016040528092919081815260200182805461097890611c69565b80156109c35780601f1061099a576101008083540402835291602001916109c3565b820191905f5260205f20905b8154815290600101906020018083116109a657829003601f168201915b5050505050905090565b5f6109d9338484610fa7565b5060015b92915050565b5f546001600160a01b03163314610a0c5760405162461bcd60e51b815260040161090c90611c34565b60088390556009829055600a819055610a2f81610a2985856110ca565b906110ca565b600f81905560141015610a40575f80fd5b505050565b5f610a51848484611128565b50610aa38433610a9e85604051806060016040528060288152602001611db0602891396001600160a01b038a165f9081526016602090815260408083203384529091529020549190611577565b610fa7565b5060015b9392505050565b5f546001600160a01b03163314610ad75760405162461bcd60e51b815260040161090c90611c34565b600583905560068290556007819055610af481610a2985856110ca565b600e819055600a1015610a40575f80fd5b5f546001600160a01b03163314610b2e5760405162461bcd60e51b815260040161090c90611c34565b601c8054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b03165f90815260156020526040812054601154610b90916115af565b905090565b5f546001600160a01b03163314610bbe5760405162461bcd60e51b815260040161090c90611c34565b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610c115760405162461bcd60e51b815260040161090c90611c34565b601455565b5f546001600160a01b03163314610c3f5760405162461bcd60e51b815260040161090c90611c34565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610c925760405162461bcd60e51b815260040161090c90611c34565b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610ce55760405162461bcd60e51b815260040161090c90611c34565b6064601154610cf49190611cb5565b6012541015610d565760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073686f756c64206265206d6f7265206f7220657175604482015267616c20746f20312560c01b606482015260840161090c565b601255565b5f546001600160a01b03163314610d845760405162461bcd60e51b815260040161090c90611c34565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60606003805461094c90611c69565b5f546001600160a01b03163314610e045760405162461bcd60e51b815260040161090c90611c34565b601c8054911515600160b01b0260ff60b01b19909216919091179055565b5f610aa3338484611128565b5f546001600160a01b03163314610e575760405162461bcd60e51b815260040161090c90611c34565b601c8054911515600160a81b0260ff60a81b19909216919091179055565b5f546001600160a01b03163314610e9e5760405162461bcd60e51b815260040161090c90611c34565b601355565b5f546001600160a01b03163314610ecc5760405162461bcd60e51b815260040161090c90611c34565b6001600160a01b038116610f315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161090c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b600454610fa59061010090046001600160a01b0316476115f0565b565b6001600160a01b0383166110095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161090c565b6001600160a01b03821661106a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161090c565b6001600160a01b038381165f8181526016602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f806110d68385611cd4565b905083811015610aa75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161090c565b5f6001600160a01b03841661118d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161090c565b6001600160a01b0383166111ef5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161090c565b601c54600160a01b900460ff16156112135761120c848484611623565b9050610aa7565b6001600160a01b0384165f9081526019602052604090205460ff1615801561125357506001600160a01b0383165f9081526019602052604090205460ff16155b156112bb576012548211156112bb5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161090c565b305f90815260156020526040902054601454811080159081906112e85750601c54600160a01b900460ff16155b801561130c57506001600160a01b0386165f9081526017602052604090205460ff16155b801561132f57506001600160a01b0385165f908152601a602052604090205460ff165b80156113445750601c54600160a81b900460ff165b8015611351575060145484115b1561137757601c54600160b01b900460ff161561136e5760145491505b61137782611706565b5f80611384888888611750565b915091505f8682146113965730611398565b885b9050811561141e576001600160a01b0381165f908152601560205260409020546113c290836110ca565b6001600160a01b038083165f8181526015602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114159086815260200190565b60405180910390a35b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038c165f9081526015909152919091205461146f918990611577565b6001600160a01b038a165f90815260156020526040902055601c54600160b81b900460ff1680156114b857506001600160a01b0388165f9081526018602052604090205460ff16155b156114ec576013546114e284610a298b6001600160a01b03165f9081526015602052604090205490565b11156114ec575f80fd5b6001600160a01b0388165f9081526015602052604090205461150e90846110ca565b6001600160a01b03808a165f8181526015602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115619087815260200190565b60405180910390a3600195505050505050610aa7565b5f818484111561159a5760405162461bcd60e51b815260040161090c9190611aaa565b505f6115a68486611ce7565b95945050505050565b5f610aa783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611577565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015610a40573d5f803e3d5ffd5b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601590915291822054611673918490611577565b6001600160a01b038086165f9081526015602052604080822093909355908516815220546116a190836110ca565b6001600160a01b038085165f8181526015602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116f49086815260200190565b60405180910390a35060019392505050565b601c805460ff60a01b1916600160a01b17905561172281611842565b600454479061173f9061010090046001600160a01b0316826115f0565b5050601c805460ff60a01b19169055565b6004545f90819083906001600160a01b0361010090910481169087160361177b57839250905061183a565b6001600160a01b0386165f908152601a602052604090205460ff16156117c2576117bb60646117b5600e548761199290919063ffffffff16565b90611a10565b90506117ff565b6001600160a01b0385165f908152601a602052604090205460ff16156117ff576117fc60646117b5600f548761199290919063ffffffff16565b90505b6001600160a01b0386165f9081526017602052604090205460ff161561182b57835f925092505061183a565b61183584826115af565b925090505b935093915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061187557611875611cfa565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f09190611d0e565b8160018151811061190357611903611cfa565b6001600160a01b039283166020918202929092010152601b546119299130911684610fa7565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906119619085905f90869030904290600401611d29565b5f604051808303815f87803b158015611978575f80fd5b505af115801561198a573d5f803e3d5ffd5b505050505050565b5f825f036119a157505f6109dd565b5f6119ac8385611d98565b9050826119b98583611cb5565b14610aa75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161090c565b5f610aa783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611a6c5760405162461bcd60e51b815260040161090c9190611aaa565b505f6115a68486611cb5565b6001600160a01b0381168114611a8c575f80fd5b50565b5f60208284031215611a9f575f80fd5b8135610aa781611a78565b5f6020808352835180828501525f5b81811015611ad557858101830151858201604001528201611ab9565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611b06575f80fd5b8235611b1181611a78565b946020939093013593505050565b5f805f60608486031215611b31575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215611b5a575f80fd5b8335611b6581611a78565b92506020840135611b7581611a78565b929592945050506040919091013590565b80358015158114611b95575f80fd5b919050565b5f60208284031215611baa575f80fd5b610aa782611b86565b5f8060408385031215611bc4575f80fd5b8235611bcf81611a78565b9150611bdd60208401611b86565b90509250929050565b5f60208284031215611bf6575f80fd5b5035919050565b5f8060408385031215611c0e575f80fd5b8235611c1981611a78565b91506020830135611c2981611a78565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611c7d57607f821691505b602082108103611c9b57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b5f82611ccf57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109dd576109dd611ca1565b818103818111156109dd576109dd611ca1565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611d1e575f80fd5b8151610aa781611a78565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611d775784516001600160a01b031683529383019391830191600101611d52565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176109dd576109dd611ca156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220265ab7705b1c2e8925fc64381e37628c30b6c1f8f2777db32b4a3215ab851fdb64736f6c63430008150033
Deployed Bytecode Sourcemap
4948:11053:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10870:113;;;;;;;;;;-1:-1:-1;10870:113:0;;;;;:::i;:::-;;:::i;:::-;;7839:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8502:161;;;;;;;;;;-1:-1:-1;8502:161:0;;;;;:::i;:::-;;:::i;:::-;;;1440:14:1;;1433:22;1415:41;;1403:2;1388:18;8502:161:0;1275:187:1;8116:100:0;;;;;;;;;;-1:-1:-1;8196:12:0;;8116:100;;;1613:25:1;;;1601:2;1586:18;8116:100:0;1467:177:1;9721:410:0;;;;;;;;;;-1:-1:-1;9721:410:0;;;;;:::i;:::-;;:::i;11564:313::-;;;;;;;;;;-1:-1:-1;11564:313:0;;;;;:::i;:::-;;:::i;9312:401::-;;;;;;;;;;-1:-1:-1;9312:401:0;;;;;:::i;:::-;;:::i;10361:113::-;;;;;;;;;;-1:-1:-1;10361:113:0;;;;;:::i;:::-;;:::i;5255:81::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2945:32:1;;;2927:51;;2915:2;2900:18;5255:81:0;2781:203:1;11253:128:0;;;;;;;;;;;;;:::i;9161:143::-;;;;;;;;;;-1:-1:-1;9161:143:0;;;;;:::i;:::-;;:::i;8025:83::-;;;;;;;;;;-1:-1:-1;8091:9:0;;8025:83;;8091:9;;;;3451:36:1;;3439:2;3424:18;8025:83:0;3309:184:1;10740:122:0;;;;;;;;;;-1:-1:-1;10740:122:0;;;;;:::i;:::-;;:::i;6566:41::-;;;;;;;;;;-1:-1:-1;6566:41:0;;;;-1:-1:-1;;;6566:41:0;;;;;;5387:36;;;;;;;;;;;;;;;;6273:55;;;;;;;;;;-1:-1:-1;6273:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10482:141;;;;;;;;;;-1:-1:-1;10482:141:0;;;;;:::i;:::-;;:::i;9016:133::-;;;;;;;;;;-1:-1:-1;9016:133:0;;;;;:::i;:::-;;:::i;5641:28::-;;;;;;;;;;;;;;;;8224:119;;;;;;;;;;-1:-1:-1;8224:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8317:18:0;8290:7;8317:18;;;:9;:18;;;;;;;8224:119;5345:35;;;;;;;;;;;;;;;;6453:39;;;;;;;;;;-1:-1:-1;6453:39:0;;;;-1:-1:-1;;;;;6453:39:0;;;5910:41;;;;;;;;;;;;;;;;3247:79;;;;;;;;;;-1:-1:-1;3285:7:0;3312:6;-1:-1:-1;;;;;3312:6:0;3247:79;;10143:210;;;;;;;;;;-1:-1:-1;10143:210:0;;;;;:::i;:::-;;:::i;3472:145::-;;;;;;;;;;;;;:::i;5712:36::-;;;;;;;;;;;;;;;;5517:37;;;;;;;;;;;;;;;;7930:87;;;;;;;;;;;;;:::i;6393:51::-;;;;;;;;;;-1:-1:-1;6393:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5799:44;;;;;;;;;;;;;;;;11116:125;;;;;;;;;;-1:-1:-1;11116:125:0;;;;;:::i;:::-;;:::i;6499:26::-;;;;;;;;;;-1:-1:-1;6499:26:0;;;;-1:-1:-1;;;;;6499:26:0;;;11389:167;;;;;;;;;;-1:-1:-1;11389:167:0;;;;;:::i;:::-;;:::i;5676:27::-;;;;;;;;;;;;;;;;5430:37;;;;;;;;;;;;;;;;5474:36;;;;;;;;;;;;;;;;10991:117;;;;;;;;;;-1:-1:-1;10991:117:0;;;;;:::i;:::-;;:::i;6335:51::-;;;;;;;;;;-1:-1:-1;6335:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5755:37;;;;;;;;;;;;;;;;6614:45;;;;;;;;;;-1:-1:-1;6614:45:0;;;;-1:-1:-1;;;6614:45:0;;;;;;8351:143;;;;;;;;;;-1:-1:-1;8351:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8459:18:0;;;8432:7;8459:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8351:143;5561:38;;;;;;;;;;;;;;;;5608:26;;;;;;;;;;;;;;;;10631:101;;;;;;;;;;-1:-1:-1;10631:101:0;;;;;:::i;:::-;;:::i;3625:244::-;;;;;;;;;;-1:-1:-1;3625:244:0;;;;;:::i;:::-;;:::i;15802:104::-;;;;;;;;;;;;;:::i;6666:35::-;;;;;;;;;;-1:-1:-1;6666:35:0;;;;-1:-1:-1;;;6666:35:0;;;;;;5958:47;;;;;;;;;;;;;;;;6212:54;;;;;;;;;;-1:-1:-1;6212:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10870:113;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;;;;;;;;;10944:9:::1;:31:::0;;-1:-1:-1;;;;;10944:31:0;;::::1;;;-1:-1:-1::0;;;;;;10944:31:0;;::::1;::::0;;;::::1;::::0;;10870:113::o;7839:83::-;7876:13;7909:5;7902:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7839:83;:::o;8502:161::-;8577:4;8594:39;633:10;8617:7;8626:6;8594:8;:39::i;:::-;-1:-1:-1;8651:4:0;8502:161;;;;;:::o;9721:410::-;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;9850:17:::1;:35:::0;;;9896:17:::1;:35:::0;;;9942:19:::1;:39:::0;;;10014:65:::1;9964:17:::0;10014:40:::1;9870:15:::0;9916;10014:21:::1;:40::i;:::-;:44:::0;::::1;:65::i;:::-;9994:17;:85:::0;;;10120:2:::1;-1:-1:-1::0;10099:23:0::1;10090:33;;;::::0;::::1;;9721:410:::0;;;:::o;11564:313::-;11662:4;11679:36;11689:6;11697:9;11708:6;11679:9;:36::i;:::-;-1:-1:-1;11726:121:0;11735:6;633:10;11757:89;11795:6;11757:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11757:19:0;;;;;;:11;:19;;;;;;;;633:10;11757:33;;;;;;;;;;:37;:89::i;:::-;11726:8;:121::i;:::-;-1:-1:-1;11865:4:0;11564:313;;;;;;:::o;9312:401::-;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;9440:16:::1;:34:::0;;;9485:16:::1;:34:::0;;;9530:18:::1;:38:::0;;;9600:62:::1;9551:17:::0;9600:38:::1;9459:15:::0;9504;9600:20:::1;:38::i;:62::-;9581:16;:81:::0;;;9702:2:::1;-1:-1:-1::0;9682:22:0::1;9673:32;;;::::0;::::1;10361:113:::0;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;10439:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;10439:27:0::1;-1:-1:-1::0;;;;10439:27:0;;::::1;::::0;;;::::1;::::0;;10361:113::o;11253:128::-;11360:11;-1:-1:-1;;;;;8317:18:0;11306:7;8317:18;;;:9;:18;;;;;;11333:12;;:40;;:16;:40::i;:::-;11326:47;;11253:128;:::o;9161:143::-;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9255:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:41;;-1:-1:-1;;9255:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9161:143::o;10740:122::-;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;10822:21:::1;:32:::0;10740:122::o;10482:141::-;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10576:30:0;;;::::1;;::::0;;;:22:::1;:30;::::0;;;;:39;;-1:-1:-1;;10576:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10482:141::o;9016:133::-;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9106:26:0;;;::::1;;::::0;;;:18:::1;:26;::::0;;;;:35;;-1:-1:-1;;9106:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9016:133::o;10143:210::-;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;10260:3:::1;10247:12;;:16;;;;:::i;:::-;10232:11;;:31;;10224:84;;;::::0;-1:-1:-1;;;10224:84:0;;5612:2:1;10224:84:0::1;::::0;::::1;5594:21:1::0;5651:2;5631:18;;;5624:30;5690:34;5670:18;;;5663:62;-1:-1:-1;;;5741:18:1;;;5734:38;5789:19;;10224:84:0::1;5410:404:1::0;10224:84:0::1;10319:11;:26:::0;10143:210::o;3472:145::-;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;3576:1:::1;3560:6:::0;;3539:40:::1;::::0;-1:-1:-1;;;;;3560:6:0;;::::1;::::0;3539:40:::1;::::0;3576:1;;3539:40:::1;3607:1;3590:19:::0;;-1:-1:-1;;;;;;3590:19:0::1;::::0;;3472:145::o;7930:87::-;7969:13;8002:7;7995:14;;;;;:::i;11116:125::-;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;11197:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;11197:36:0::1;-1:-1:-1::0;;;;11197:36:0;;::::1;::::0;;;::::1;::::0;;11116:125::o;11389:167::-;11467:4;11484:42;633:10;11508:9;11519:6;11484:9;:42::i;10991:117::-;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;11068:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;11068:32:0::1;-1:-1:-1::0;;;;11068:32:0;;::::1;::::0;;;::::1;::::0;;10991:117::o;10631:101::-;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;10703:9:::1;:21:::0;10631:101::o;3625:244::-;3381:6;;-1:-1:-1;;;;;3381:6:0;633:10;3381:22;3373:67;;;;-1:-1:-1;;;3373:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3714:22:0;::::1;3706:73;;;::::0;-1:-1:-1;;;3706:73:0;;6021:2:1;3706:73:0::1;::::0;::::1;6003:21:1::0;6060:2;6040:18;;;6033:30;6099:34;6079:18;;;6072:62;-1:-1:-1;;;6150:18:1;;;6143:36;6196:19;;3706:73:0::1;5819:402:1::0;3706:73:0::1;3816:6;::::0;;3795:38:::1;::::0;-1:-1:-1;;;;;3795:38:0;;::::1;::::0;3816:6;::::1;::::0;3795:38:::1;::::0;::::1;3844:6;:17:::0;;-1:-1:-1;;;;;;3844:17:0::1;-1:-1:-1::0;;;;;3844:17:0;;;::::1;::::0;;;::::1;::::0;;3625:244::o;15802:104::-;15865:9;;15844:54;;15865:9;;;-1:-1:-1;;;;;15865:9:0;15876:21;15844:20;:54::i;:::-;15802:104::o;8671:337::-;-1:-1:-1;;;;;8764:19:0;;8756:68;;;;-1:-1:-1;;;8756:68:0;;6428:2:1;8756:68:0;;;6410:21:1;6467:2;6447:18;;;6440:30;6506:34;6486:18;;;6479:62;-1:-1:-1;;;6557:18:1;;;6550:34;6601:19;;8756:68:0;6226:400:1;8756:68:0;-1:-1:-1;;;;;8843:21:0;;8835:68;;;;-1:-1:-1;;;8835:68:0;;6833:2:1;8835:68:0;;;6815:21:1;6872:2;6852:18;;;6845:30;6911:34;6891:18;;;6884:62;-1:-1:-1;;;6962:18:1;;;6955:32;7004:19;;8835:68:0;6631:398:1;8835:68:0;-1:-1:-1;;;;;8916:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8968:32;;1613:25:1;;;8968:32:0;;1586:18:1;8968:32:0;;;;;;;8671:337;;;:::o;1362:181::-;1420:7;;1452:5;1456:1;1452;:5;:::i;:::-;1440:17;;1481:1;1476;:6;;1468:46;;;;-1:-1:-1;;;1468:46:0;;7366:2:1;1468:46:0;;;7348:21:1;7405:2;7385:18;;;7378:30;7444:29;7424:18;;;7417:57;7491:18;;1468:46:0;7164:351:1;11885:1973:0;11972:4;-1:-1:-1;;;;;11999:20:0;;11991:70;;;;-1:-1:-1;;;11991:70:0;;7722:2:1;11991:70:0;;;7704:21:1;7761:2;7741:18;;;7734:30;7800:34;7780:18;;;7773:62;-1:-1:-1;;;7851:18:1;;;7844:35;7896:19;;11991:70:0;7520:401:1;11991:70:0;-1:-1:-1;;;;;12080:23:0;;12072:71;;;;-1:-1:-1;;;12072:71:0;;8128:2:1;12072:71:0;;;8110:21:1;8167:2;8147:18;;;8140:30;8206:34;8186:18;;;8179:62;-1:-1:-1;;;8257:18:1;;;8250:33;8300:19;;12072:71:0;7926:399:1;12072:71:0;12159:16;;-1:-1:-1;;;12159:16:0;;;;12156:1695;;;12209:41;12224:6;12232:9;12243:6;12209:14;:41::i;:::-;12202:48;;;;12156:1695;-1:-1:-1;;;;;12306:26:0;;;;;;:18;:26;;;;;;;;12305:27;:61;;;;-1:-1:-1;;;;;;12337:29:0;;;;;;:18;:29;;;;;;;;12336:30;12305:61;12302:175;;;12405:11;;12395:6;:21;;12387:74;;;;-1:-1:-1;;;12387:74:0;;8532:2:1;12387:74:0;;;8514:21:1;8571:2;8551:18;;;8544:30;8610:34;8590:18;;;8583:62;-1:-1:-1;;;8661:18:1;;;8654:38;8709:19;;12387:74:0;8330:404:1;12387:74:0;12554:4;12505:28;8317:18;;;:9;:18;;;;;;12630:21;;12606:45;;;;;;;12684:44;;-1:-1:-1;12712:16:0;;-1:-1:-1;;;12712:16:0;;;;12711:17;12684:44;:78;;;;-1:-1:-1;;;;;;12733:29:0;;;;;;:21;:29;;;;;;;;12732:30;12684:78;:111;;;;-1:-1:-1;;;;;;12766:29:0;;;;;;:18;:29;;;;;;;;12684:111;:136;;;;-1:-1:-1;12799:21:0;;-1:-1:-1;;;12799:21:0;;;;12684:136;:170;;;;;12833:21;;12824:6;:30;12684:170;12680:379;;;12892:25;;-1:-1:-1;;;12892:25:0;;;;12889:95;;;12963:21;;12940:44;;12889:95;13003:36;13018:20;13003:14;:36::i;:::-;13076:19;13097:17;13118:38;13130:6;13138:9;13149:6;13118:11;:38::i;:::-;13075:81;;;;13173:19;13208:6;13195:9;:19;:44;;13234:4;13195:44;;;13217:6;13195:44;13173:66;-1:-1:-1;13257:13:0;;13254:179;;-1:-1:-1;;;;;13316:22:0;;;;;;:9;:22;;;;;;:37;;13343:9;13316:26;:37::i;:::-;-1:-1:-1;;;;;13291:22:0;;;;;;;:9;:22;;;;;;;:62;;;;13377:40;;;;;;;;;;13407:9;1613:25:1;;1601:2;1586:18;;1467:177;13377:40:0;;;;;;;;13254:179;13469:53;;;;;;;;;;;-1:-1:-1;;;13469:53:0;;;;;;;;-1:-1:-1;;;;;13469:17:0;;-1:-1:-1;13469:17:0;;;:9;:17;;;;;;;;:53;;13491:6;;13469:21;:53::i;:::-;-1:-1:-1;;;;;13449:17:0;;;;;;:9;:17;;;;;:73;13542:16;;-1:-1:-1;;;13542:16:0;;;;:54;;;;-1:-1:-1;;;;;;13563:33:0;;;;;;:22;:33;;;;;;;;13562:34;13542:54;13539:135;;;13664:9;;13623:37;13648:11;13623:20;13633:9;-1:-1:-1;;;;;8317:18:0;8290:7;8317:18;;;:9;:18;;;;;;;8224:119;13623:37;:50;;13615:59;;;;;;-1:-1:-1;;;;;13714:20:0;;;;;;:9;:20;;;;;;:37;;13739:11;13714:24;:37::i;:::-;-1:-1:-1;;;;;13691:20:0;;;;;;;:9;:20;;;;;;;:60;;;;13773:40;;;;;;;;;;13801:11;1613:25:1;;1601:2;1586:18;;1467:177;13773:40:0;;;;;;;;13835:4;13828:11;;;;;;;;;1695:192;1781:7;1817:12;1809:6;;;;1801:29;;;;-1:-1:-1;;;1801:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1841:9:0;1853:5;1857:1;1853;:5;:::i;:::-;1841:17;1695:192;-1:-1:-1;;;;;1695:192:0:o;1551:136::-;1609:7;1636:43;1640:1;1643;1636:43;;;;;;;;;;;;;;;;;:3;:43::i;15668:126::-;15760:26;;-1:-1:-1;;;;;15760:18:0;;;:26;;;;;15779:6;;15760:26;;;;15779:6;15760:18;:26;;;;;;;;;;;;;;;;;;;13866:330;13996:53;;;;;;;;;;;-1:-1:-1;;;13996:53:0;;;;;;;;-1:-1:-1;;;;;13996:17:0;;13959:4;13996:17;;;:9;:17;;;;;;;:53;;14018:6;;13996:21;:53::i;:::-;-1:-1:-1;;;;;13976:17:0;;;;;;;:9;:17;;;;;;:73;;;;14083:20;;;;;;;:32;;14108:6;14083:24;:32::i;:::-;-1:-1:-1;;;;;14060:20:0;;;;;;;:9;:20;;;;;;;:55;;;;14131:35;;;;;;;;;;14159:6;1613:25:1;;1601:2;1586:18;;1467:177;14131:35:0;;;;;;;;-1:-1:-1;14184:4:0;13866:330;;;;;:::o;14204:232::-;6742:16;:23;;-1:-1:-1;;;;6742:23:0;-1:-1:-1;;;6742:23:0;;;14278:25:::1;14295:7:::0;14278:16:::1;:25::i;:::-;14396:9;::::0;14343:21:::1;::::0;14375:51:::1;::::0;14396:9:::1;::::0;::::1;-1:-1:-1::0;;;;;14396:9:0::1;14343:21:::0;14375:20:::1;:51::i;:::-;-1:-1:-1::0;;6788:16:0;:24;;-1:-1:-1;;;;6788:24:0;;;14204:232::o;15055:605::-;15230:9;;15150:7;;;;15199:6;;-1:-1:-1;;;;;15230:9:0;;;;;;15220:19;;;;15216:51;;15249:6;;-1:-1:-1;15257:9:0;-1:-1:-1;15241:26:0;;15216:51;-1:-1:-1;;;;;15281:26:0;;;;;;:18;:26;;;;;;;;15278:233;;;15336:37;15369:3;15336:28;15347:16;;15336:6;:10;;:28;;;;:::i;:::-;:32;;:37::i;:::-;15324:49;;15278:233;;;-1:-1:-1;;;;;15403:29:0;;;;;;:18;:29;;;;;;;;15400:111;;;15461:38;15495:3;15461:29;15472:17;;15461:6;:10;;:29;;;;:::i;:38::-;15449:50;;15400:111;-1:-1:-1;;;;;15525:29:0;;;;;;:21;:29;;;;;;;;15521:80;;;15579:6;15587:1;15571:18;;;;;;;15521:80;15619:21;:6;15630:9;15619:10;:21::i;:::-;15611:41;-1:-1:-1;15642:9:0;-1:-1:-1;15055:605:0;;;;;;;:::o;14448:599::-;14598:16;;;14612:1;14598:16;;;;;;;;14574:21;;14598:16;;;;;;;;;;-1:-1:-1;14598:16:0;14574:40;;14643:4;14625;14630:1;14625:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14625:23:0;;;:7;;;;;;;;;;:23;;;;14669:13;;:20;;;-1:-1:-1;;;14669:20:0;;;;:13;;;;;:18;;:20;;;;;14625:7;;14669:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14659:4;14664:1;14659:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14659:30:0;;;:7;;;;;;;;;:30;14734:13;;14702:60;;14719:4;;14734:13;14750:11;14702:8;:60::i;:::-;14801:13;;:238;;-1:-1:-1;;;14801:238:0;;-1:-1:-1;;;;;14801:13:0;;;;:64;;:238;;14880:11;;14801:13;;14950:4;;14977;;15013:15;;14801:238;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14503:544;14448:599;:::o;1895:250::-;1953:7;1977:1;1982;1977:6;1973:47;;-1:-1:-1;2007:1:0;2000:8;;1973:47;2032:9;2044:5;2048:1;2044;:5;:::i;:::-;2032:17;-1:-1:-1;2077:1:0;2068:5;2072:1;2032:17;2068:5;:::i;:::-;:10;2060:56;;;;-1:-1:-1;;;2060:56:0;;10752:2:1;2060:56:0;;;10734:21:1;10791:2;10771:18;;;10764:30;10830:34;10810:18;;;10803:62;-1:-1:-1;;;10881:18:1;;;10874:31;10922:19;;2060:56:0;10550:397:1;2153:132:0;2211:7;2238:39;2242:1;2245;2238:39;;;;;;;;;;;;;;;;;2379:7;2414:12;2407:5;2399:28;;;;-1:-1:-1;;;2399:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2438:9:0;2450:5;2454:1;2450;:5;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;402:548::-;514:4;543:2;572;561:9;554:21;604:6;598:13;647:6;642:2;631:9;627:18;620:34;672:1;682:140;696:6;693:1;690:13;682:140;;;791:14;;;787:23;;781:30;757:17;;;776:2;753:26;746:66;711:10;;682:140;;;686:3;871:1;866:2;857:6;846:9;842:22;838:31;831:42;941:2;934;930:7;925:2;917:6;913:15;909:29;898:9;894:45;890:54;882:62;;;;402:548;;;;:::o;955:315::-;1023:6;1031;1084:2;1072:9;1063:7;1059:23;1055:32;1052:52;;;1100:1;1097;1090:12;1052:52;1139:9;1126:23;1158:31;1183:5;1158:31;:::i;:::-;1208:5;1260:2;1245:18;;;;1232:32;;-1:-1:-1;;;955:315:1:o;1649:316::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;-1:-1:-1;;1834:23:1;;;1904:2;1889:18;;1876:32;;-1:-1:-1;1955:2:1;1940:18;;;1927:32;;1649:316;-1:-1:-1;1649:316:1:o;1970:456::-;2047:6;2055;2063;2116:2;2104:9;2095:7;2091:23;2087:32;2084:52;;;2132:1;2129;2122:12;2084:52;2171:9;2158:23;2190:31;2215:5;2190:31;:::i;:::-;2240:5;-1:-1:-1;2297:2:1;2282:18;;2269:32;2310:33;2269:32;2310:33;:::i;:::-;1970:456;;2362:7;;-1:-1:-1;;;2416:2:1;2401:18;;;;2388:32;;1970:456::o;2431:160::-;2496:20;;2552:13;;2545:21;2535:32;;2525:60;;2581:1;2578;2571:12;2525:60;2431:160;;;:::o;2596:180::-;2652:6;2705:2;2693:9;2684:7;2680:23;2676:32;2673:52;;;2721:1;2718;2711:12;2673:52;2744:26;2760:9;2744:26;:::i;2989:315::-;3054:6;3062;3115:2;3103:9;3094:7;3090:23;3086:32;3083:52;;;3131:1;3128;3121:12;3083:52;3170:9;3157:23;3189:31;3214:5;3189:31;:::i;:::-;3239:5;-1:-1:-1;3263:35:1;3294:2;3279:18;;3263:35;:::i;:::-;3253:45;;2989:315;;;;;:::o;3498:180::-;3557:6;3610:2;3598:9;3589:7;3585:23;3581:32;3578:52;;;3626:1;3623;3616:12;3578:52;-1:-1:-1;3649:23:1;;3498:180;-1:-1:-1;3498:180:1:o;3917:388::-;3985:6;3993;4046:2;4034:9;4025:7;4021:23;4017:32;4014:52;;;4062:1;4059;4052:12;4014:52;4101:9;4088:23;4120:31;4145:5;4120:31;:::i;:::-;4170:5;-1:-1:-1;4227:2:1;4212:18;;4199:32;4240:33;4199:32;4240:33;:::i;:::-;4292:7;4282:17;;;3917:388;;;;;:::o;4310:356::-;4512:2;4494:21;;;4531:18;;;4524:30;4590:34;4585:2;4570:18;;4563:62;4657:2;4642:18;;4310:356::o;4671:380::-;4750:1;4746:12;;;;4793;;;4814:61;;4868:4;4860:6;4856:17;4846:27;;4814:61;4921:2;4913:6;4910:14;4890:18;4887:38;4884:161;;4967:10;4962:3;4958:20;4955:1;4948:31;5002:4;4999:1;4992:15;5030:4;5027:1;5020:15;4884:161;;4671:380;;;:::o;5056:127::-;5117:10;5112:3;5108:20;5105:1;5098:31;5148:4;5145:1;5138:15;5172:4;5169:1;5162:15;5188:217;5228:1;5254;5244:132;;5298:10;5293:3;5289:20;5286:1;5279:31;5333:4;5330:1;5323:15;5361:4;5358:1;5351:15;5244:132;-1:-1:-1;5390:9:1;;5188:217::o;7034:125::-;7099:9;;;7120:10;;;7117:36;;;7133:18;;:::i;8739:128::-;8806:9;;;8827:11;;;8824:37;;;8841:18;;:::i;9004:127::-;9065:10;9060:3;9056:20;9053:1;9046:31;9096:4;9093:1;9086:15;9120:4;9117:1;9110:15;9136:251;9206:6;9259:2;9247:9;9238:7;9234:23;9230:32;9227:52;;;9275:1;9272;9265:12;9227:52;9307:9;9301:16;9326:31;9351:5;9326:31;:::i;9392:980::-;9654:4;9702:3;9691:9;9687:19;9733:6;9722:9;9715:25;9759:2;9797:6;9792:2;9781:9;9777:18;9770:34;9840:3;9835:2;9824:9;9820:18;9813:31;9864:6;9899;9893:13;9930:6;9922;9915:22;9968:3;9957:9;9953:19;9946:26;;10007:2;9999:6;9995:15;9981:29;;10028:1;10038:195;10052:6;10049:1;10046:13;10038:195;;;10117:13;;-1:-1:-1;;;;;10113:39:1;10101:52;;10208:15;;;;10173:12;;;;10149:1;10067:9;10038:195;;;-1:-1:-1;;;;;;;10289:32:1;;;;10284:2;10269:18;;10262:60;-1:-1:-1;;;10353:3:1;10338:19;10331:35;10250:3;9392:980;-1:-1:-1;;;9392:980:1:o;10377:168::-;10450:9;;;10481;;10498:15;;;10492:22;;10478:37;10468:71;;10519:18;;:::i
Swarm Source
ipfs://265ab7705b1c2e8925fc64381e37628c30b6c1f8f2777db32b4a3215ab851fdb
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.