Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 HAY2.0
Holders
24
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
7,979,000 HAY2.0Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HAY2point0
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-23 */ /**⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ Website: https://hay20.com TG: https://t.me/hay20erc X: https://twitter.com/hay20erc **/ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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); } contract Ownable is Context { address private _owner; 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 renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface ILpPair { function mint(address to) external returns (uint liquidity); function sync() external; } interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); function withdraw(uint) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract HAY2point0 is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; address payable private _communityDevWallet; address payable private _hayVendorWallet; address constant DEAD = 0x000000000000000000000000000000000000dEaD; uint256 firstBlock; string public _websiteInformation; string public _telegramInformation; string public _twitterInformation; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; event SetExemptFromFees(address _address, bool _isExempt); event MaxTxAmountUpdated(uint _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } uint256 private _startingBuyCount=0; uint256 private _buyTaxReducedAfterThisManyBuys=10; uint256 private _sellTaxReducedAfterThisManyBuys=30; uint256 private _preventSellToEthTillBuysAre=30; uint256 private _buyTaxAtLaunch=21; uint256 private _sellTaxAtLaunch=26; uint256 private _initialBuyTax=1; uint256 private _initialSellTax=1; uint256 private _finalBuyTax=0; uint256 private _finalSellTax=0; uint8 private constant _decimals = 9; uint256 private constant _tTotal = 1000000000 * 10 **_decimals; string private constant _name = unicode"Hay 2.0"; string private constant _symbol = unicode"HAY2.0"; uint256 public _maxTxAmount = _tTotal / 10000 * 101; uint256 public _maxWalletSize = _tTotal / 10000 * 101; uint256 public _taxSwapThreshold = _tTotal / 10000 * 1; uint256 public _maxTaxSwap = _tTotal / 10000 * 50; constructor () { _communityDevWallet = payable(_msgSender()); _hayVendorWallet = payable(address(0xA63E5A540fFC80B7dFBc691238d62b4A27DaEE63)); _balances[_msgSender()] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_communityDevWallet] = true; _isExcludedFromFee[_hayVendorWallet] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function stackHay() external onlyOwner() { require(!tradingOpen,"trading is already open"); swapEnabled = true; uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); tradingOpen = true; } function removeHayLimits() external { require(_msgSender()==_communityDevWallet); _maxTxAmount = _tTotal; _maxWalletSize=_tTotal; emit MaxTxAmountUpdated(_tTotal); } function removeBuyFees(uint256 _newFee) external { require(_msgSender()==_communityDevWallet); require(_newFee<1); _initialBuyTax=_newFee; } function removeSellFees(uint256 _newFee) external { require(_msgSender()==_communityDevWallet); require(_newFee<1); _initialSellTax=_newFee; } function updateTokenSocials( string calldata __websiteInformation, string calldata __telegramInformation, string calldata __twitterInformation ) external { require(_msgSender()== _communityDevWallet); _websiteInformation = __websiteInformation; _telegramInformation = __telegramInformation; _twitterInformation = __twitterInformation; } function getWebsiteInformation() public view returns (string memory) { return _websiteInformation; } function getTelegramInformation() public view returns (string memory) { return _telegramInformation; } function getTwitterInformation() public view returns (string memory) { return _twitterInformation; } function withdrawStuckToken(address _token, address _to) external { require(_msgSender()==_communityDevWallet); require(_token != address(0), "_token address cannot be 0"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); IERC20(_token).transfer(_to, _contractBalance); } function sendContractTokenBalanceToEth() external { require(_msgSender()==_communityDevWallet); uint256 tokenBalance=balanceOf(address(this)); if(tokenBalance>0){ swapTokensForEth(tokenBalance); } uint256 ethBalance=address(this).balance; if(ethBalance>0){ sendEthtoDevelopment(ethBalance); } } function recoverETH() external { require(_msgSender()==_communityDevWallet); sendEthtoDevelopment(address(this).balance); } function changeMaxTaxSwapAmount(uint256 amount) external { require(_msgSender()==_communityDevWallet); _maxTaxSwap = _tTotal / 10000 * amount; } function changeTaxSwapThreshold (uint256 amount) external { require(_msgSender()==_communityDevWallet); _taxSwapThreshold = _tTotal / 10000 * amount; } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } 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 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 _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 swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToMarketing(uint256 amount) private { _hayVendorWallet.transfer(amount); } function sendEthtoDevelopment(uint256 amount) private { _communityDevWallet.transfer(amount); } receive() external payable {} function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount=0; if (from != owner() && to != owner()) { taxAmount = amount.mul((_startingBuyCount>_buyTaxReducedAfterThisManyBuys)?_initialBuyTax:_buyTaxAtLaunch).div(100); if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); _startingBuyCount++; } if(to == uniswapV2Pair && from!= address(this) ){ taxAmount = amount.mul((_startingBuyCount>_sellTaxReducedAfterThisManyBuys)?_initialSellTax:_sellTaxAtLaunch).div(100); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _startingBuyCount>_preventSellToEthTillBuysAre) { swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap))); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToMarketing(address(this).balance.div(5)); sendEthtoDevelopment(address(this).balance); } } } if(taxAmount>0){ _balances[address(this)]=_balances[address(this)].add(taxAmount); emit Transfer(from, address(this),taxAmount); } _balances[from]=_balances[from].sub(amount); _balances[to]=_balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256){ return (a>b)?b:a; } function isContract(address account) private view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } }
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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromFees","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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_telegramInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_twitterInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_websiteInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"changeMaxTaxSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"changeTaxSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getTelegramInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTwitterInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWebsiteInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"removeBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeHayLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"removeSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendContractTokenBalanceToEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stackHay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"string","name":"__websiteInformation","type":"string"},{"internalType":"string","name":"__telegramInformation","type":"string"},{"internalType":"string","name":"__twitterInformation","type":"string"}],"name":"updateTokenSocials","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600b805461ffff60a81b191690555f600c819055600a600d819055601e600e819055600f5560156010819055601a60115560016012819055601355601483905591909155612710906200005a90600990620003e4565b6200006a90633b9aca00620003fb565b62000076919062000415565b62000083906065620003fb565b601655612710620000976009600a620003e4565b620000a790633b9aca00620003fb565b620000b3919062000415565b620000c0906065620003fb565b601755612710620000d46009600a620003e4565b620000e490633b9aca00620003fb565b620000f0919062000415565b620000fd906001620003fb565b601855612710620001116009600a620003e4565b6200012190633b9aca00620003fb565b6200012d919062000415565b6200013a906032620003fb565b60195534801562000149575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060048054336001600160a01b0319918216179091556005805490911673a63e5a540ffc80b7dfbc691238d62b4a27daee63179055620001cc6009600a620003e4565b620001dc90633b9aca00620003fb565b335f908152600160208190526040822092909255600390620002055f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600454821684528284208054861682179055600554909116835291208054909216179055620002753390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002ae6009600a620003e4565b620002be90633b9aca00620003fb565b60405190815260200160405180910390a362000435565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200032957815f19048211156200030d576200030d620002d5565b808516156200031b57918102915b93841c9390800290620002ee565b509250929050565b5f826200034157506001620003de565b816200034f57505f620003de565b8160018114620003685760028114620003735762000393565b6001915050620003de565b60ff841115620003875762000387620002d5565b50506001821b620003de565b5060208310610133831016604e8410600b8410161715620003b8575081810a620003de565b620003c48383620002e9565b805f1904821115620003da57620003da620002d5565b0290505b92915050565b5f620003f460ff84168362000331565b9392505050565b8082028115828204841417620003de57620003de620002d5565b5f826200043057634e487b7160e01b5f52601260045260245ffd5b500490565b611feb80620004435f395ff3fe6080604052600436106101d3575f3560e01c80638da5cb5b116100fd578063c3f93b0111610092578063dedd452011610062578063dedd452014610526578063e0dc35461461053a578063f1f5943f1461054e578063f2fcac0b14610562575f80fd5b8063c3f93b011461049b578063c8043432146104af578063d0edc03f146104c3578063dd62ed3e146104e2575f80fd5b8063a6f34383116100cd578063a6f3438314610429578063a9059cbb14610448578063bc205ad314610467578063bf474bed14610486575f80fd5b80638da5cb5b146103ac5780638f9a55c0146103d257806395d89b41146103e75780639b53b31714610415575f80fd5b8063313ce56711610173578063715018a611610143578063715018a614610350578063756b7bb7146103645780637d1db4a5146103785780637efd4be71461038d575f80fd5b8063313ce567146102d957806345a01698146102f457806356c8c7ae1461030857806370a082311461031c575f80fd5b80630faee56f116101ae5780630faee56f1461026457806318160ddd1461028757806323b872dd1461029b5780633101e456146102ba575f80fd5b80630614117a146101de57806306fdde03146101f4578063095ea7b314610235575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506101f2610581565b005b3480156101ff575f80fd5b50604080518082019091526007815266048617920322e360cc1b60208201525b60405161022c91906119bd565b60405180910390f35b348015610240575f80fd5b5061025461024f366004611a1f565b6105ab565b604051901515815260200161022c565b34801561026f575f80fd5b5061027960195481565b60405190815260200161022c565b348015610292575f80fd5b506102796105c1565b3480156102a6575f80fd5b506102546102b5366004611a49565b6105e1565b3480156102c5575f80fd5b506101f26102d4366004611a87565b610648565b3480156102e4575f80fd5b506040516009815260200161022c565b3480156102ff575f80fd5b506101f2610678565b348015610313575f80fd5b5061021f610a65565b348015610327575f80fd5b50610279610336366004611a9e565b6001600160a01b03165f9081526001602052604090205490565b34801561035b575f80fd5b506101f2610af1565b34801561036f575f80fd5b5061021f610b92565b348015610383575f80fd5b5061027960165481565b348015610398575f80fd5b506101f26103a7366004611a87565b610c22565b3480156103b7575f80fd5b505f546040516001600160a01b03909116815260200161022c565b3480156103dd575f80fd5b5061027960175481565b3480156103f2575f80fd5b506040805180820190915260068152650484159322e360d41b602082015261021f565b348015610420575f80fd5b506101f2610c79565b348015610434575f80fd5b506101f2610443366004611a87565b610d20565b348015610453575f80fd5b50610254610462366004611a1f565b610d77565b348015610472575f80fd5b506101f2610481366004611ab9565b610d83565b348015610491575f80fd5b5061027960185481565b3480156104a6575f80fd5b5061021f610eda565b3480156104ba575f80fd5b5061021f610ee9565b3480156104ce575f80fd5b506101f26104dd366004611b35565b610ef6565b3480156104ed575f80fd5b506102796104fc366004611ab9565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610531575f80fd5b5061021f610f47565b348015610545575f80fd5b5061021f610f54565b348015610559575f80fd5b506101f2610f63565b34801561056d575f80fd5b506101f261057c366004611a87565b610fb4565b6004546001600160a01b0316336001600160a01b0316146105a0575f80fd5b6105a947610fe4565b565b5f6105b733848461101b565b5060015b92915050565b5f6105ce6009600a611cbc565b6105dc90633b9aca00611cca565b905090565b5f6105ed84848461113e565b61063e843361063985604051806060016040528060288152602001611f8e602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611639565b61101b565b5060019392505050565b6004546001600160a01b0316336001600160a01b031614610667575f80fd5b60018110610673575f80fd5b601355565b5f546001600160a01b031633146106d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600b54600160a01b900460ff16156107305760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106cd565b600b805460ff60b01b1916600160b01b179055600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117825561078c9130919061077e90600990611cbc565b61063990633b9aca00611cca565b600a5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108009190611ce1565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561085f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108839190611ce1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156108cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f19190611ce1565b600b80546001600160a01b039283166001600160a01b0319909116179055600a541663f305d7194730610938816001600160a01b03165f9081526001602052604090205490565b5f8061094b5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156109b1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906109d69190611cfc565b5050600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610a2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4f9190611d27565b50600b805460ff60a01b1916600160a01b179055565b60098054610a7290611d46565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e90611d46565b8015610ae95780601f10610ac057610100808354040283529160200191610ae9565b820191905f5260205f20905b815481529060010190602001808311610acc57829003601f168201915b505050505081565b5f546001600160a01b03163314610b4a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106cd565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b606060088054610ba190611d46565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcd90611d46565b8015610c185780601f10610bef57610100808354040283529160200191610c18565b820191905f5260205f20905b815481529060010190602001808311610bfb57829003601f168201915b5050505050905090565b6004546001600160a01b0316336001600160a01b031614610c41575f80fd5b80612710610c516009600a611cbc565b610c5f90633b9aca00611cca565b610c699190611d78565b610c739190611cca565b60185550565b6004546001600160a01b0316336001600160a01b031614610c98575f80fd5b610ca46009600a611cbc565b610cb290633b9aca00611cca565b601655610cc16009600a611cbc565b610ccf90633b9aca00611cca565b6017557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610cff6009600a611cbc565b610d0d90633b9aca00611cca565b60405190815260200160405180910390a1565b6004546001600160a01b0316336001600160a01b031614610d3f575f80fd5b80612710610d4f6009600a611cbc565b610d5d90633b9aca00611cca565b610d679190611d78565b610d719190611cca565b60195550565b5f6105b733848461113e565b6004546001600160a01b0316336001600160a01b031614610da2575f80fd5b6001600160a01b038216610df85760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016106cd565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610e3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e609190611d97565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610eb0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed49190611d27565b50505050565b606060098054610ba190611d46565b60078054610a7290611d46565b6004546001600160a01b0316336001600160a01b031614610f15575f80fd5b6007610f22868883611e10565b506008610f30848683611e10565b506009610f3e828483611e10565b50505050505050565b60088054610a7290611d46565b606060078054610ba190611d46565b6004546001600160a01b0316336001600160a01b031614610f82575f80fd5b305f908152600160205260409020548015610fa057610fa081611671565b478015610fb057610fb081610fe4565b5050565b6004546001600160a01b0316336001600160a01b031614610fd3575f80fd5b60018110610fdf575f80fd5b601255565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fb0573d5f803e3d5ffd5b6001600160a01b03831661107d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106cd565b6001600160a01b0382166110de5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106cd565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111a25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106cd565b6001600160a01b0382166112045760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106cd565b5f81116112655760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106cd565b5f80546001600160a01b0385811691161480159061129057505f546001600160a01b03848116911614155b156114fc576112c160646112bb600d54600c54116112b0576010546112b4565b6012545b85906117e1565b90611866565b600b549091506001600160a01b0385811691161480156112ef5750600a546001600160a01b03848116911614155b801561131357506001600160a01b0383165f9081526003602052604090205460ff16155b156113f95760165482111561136a5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016106cd565b6017548261138c856001600160a01b03165f9081526001602052604090205490565b6113969190611ecc565b11156113e45760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016106cd565b600c8054905f6113f383611edf565b91905055505b600b546001600160a01b03848116911614801561141f57506001600160a01b0384163014155b1561144c5761144960646112bb600e54600c541161143f576011546112b4565b60135485906117e1565b90505b305f90815260016020526040902054600b54600160a81b900460ff161580156114825750600b546001600160a01b038581169116145b80156114975750600b54600160b01b900460ff165b80156114a4575060185481115b80156114b35750600f54600c54115b156114fa576114d56114d0846114cb846019546118a7565b6118a7565b611671565b4780156114f8576114ef6114ea476005611866565b6118bb565b6114f847610fe4565b505b505b801561157457305f9081526001602052604090205461151b90826118f2565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061156b9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546115969083611950565b6001600160a01b0385165f908152600160205260409020556115d96115bb8383611950565b6001600160a01b0385165f90815260016020526040902054906118f2565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6116228585611950565b60405190815260200160405180910390a350505050565b5f818484111561165c5760405162461bcd60e51b81526004016106cd91906119bd565b505f6116688486611ef7565b95945050505050565b600b805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106116b7576116b7611f0a565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561170e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117329190611ce1565b8160018151811061174557611745611f0a565b6001600160a01b039283166020918202929092010152600a5461176b913091168461101b565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906117a39085905f90869030904290600401611f1e565b5f604051808303815f87803b1580156117ba575f80fd5b505af11580156117cc573d5f803e3d5ffd5b5050600b805460ff60a81b1916905550505050565b5f825f036117f057505f6105bb565b5f6117fb8385611cca565b9050826118088583611d78565b1461185f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106cd565b9392505050565b5f61185f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611991565b5f8183116118b5578261185f565b50919050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fb0573d5f803e3d5ffd5b5f806118fe8385611ecc565b90508381101561185f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106cd565b5f61185f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611639565b5f81836119b15760405162461bcd60e51b81526004016106cd91906119bd565b505f6116688486611d78565b5f6020808352835180828501525f5b818110156119e8578581018301518582016040015282016119cc565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a1c575f80fd5b50565b5f8060408385031215611a30575f80fd5b8235611a3b81611a08565b946020939093013593505050565b5f805f60608486031215611a5b575f80fd5b8335611a6681611a08565b92506020840135611a7681611a08565b929592945050506040919091013590565b5f60208284031215611a97575f80fd5b5035919050565b5f60208284031215611aae575f80fd5b813561185f81611a08565b5f8060408385031215611aca575f80fd5b8235611ad581611a08565b91506020830135611ae581611a08565b809150509250929050565b5f8083601f840112611b00575f80fd5b50813567ffffffffffffffff811115611b17575f80fd5b602083019150836020828501011115611b2e575f80fd5b9250929050565b5f805f805f8060608789031215611b4a575f80fd5b863567ffffffffffffffff80821115611b61575f80fd5b611b6d8a838b01611af0565b90985096506020890135915080821115611b85575f80fd5b611b918a838b01611af0565b90965094506040890135915080821115611ba9575f80fd5b50611bb689828a01611af0565b979a9699509497509295939492505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c1657815f1904821115611bfc57611bfc611bc8565b80851615611c0957918102915b93841c9390800290611be1565b509250929050565b5f82611c2c575060016105bb565b81611c3857505f6105bb565b8160018114611c4e5760028114611c5857611c74565b60019150506105bb565b60ff841115611c6957611c69611bc8565b50506001821b6105bb565b5060208310610133831016604e8410600b8410161715611c97575081810a6105bb565b611ca18383611bdc565b805f1904821115611cb457611cb4611bc8565b029392505050565b5f61185f60ff841683611c1e565b80820281158282048414176105bb576105bb611bc8565b5f60208284031215611cf1575f80fd5b815161185f81611a08565b5f805f60608486031215611d0e575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611d37575f80fd5b8151801515811461185f575f80fd5b600181811c90821680611d5a57607f821691505b6020821081036118b557634e487b7160e01b5f52602260045260245ffd5b5f82611d9257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611da7575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b601f821115611e0b575f81815260208120601f850160051c81016020861015611de85750805b601f850160051c820191505b81811015611e0757828155600101611df4565b5050505b505050565b67ffffffffffffffff831115611e2857611e28611dae565b611e3c83611e368354611d46565b83611dc2565b5f601f841160018114611e6d575f8515611e565750838201355b5f19600387901b1c1916600186901b178355611ec5565b5f83815260209020601f19861690835b82811015611e9d5786850135825560209485019460019092019101611e7d565b5086821015611eb9575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b808201808211156105bb576105bb611bc8565b5f60018201611ef057611ef0611bc8565b5060010190565b818103818111156105bb576105bb611bc8565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f6c5784516001600160a01b031683529383019391830191600101611f47565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a8d93ec5434fcd2417002294e786085c9db399580e32f29408c4dc3d8a7b884464736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101d3575f3560e01c80638da5cb5b116100fd578063c3f93b0111610092578063dedd452011610062578063dedd452014610526578063e0dc35461461053a578063f1f5943f1461054e578063f2fcac0b14610562575f80fd5b8063c3f93b011461049b578063c8043432146104af578063d0edc03f146104c3578063dd62ed3e146104e2575f80fd5b8063a6f34383116100cd578063a6f3438314610429578063a9059cbb14610448578063bc205ad314610467578063bf474bed14610486575f80fd5b80638da5cb5b146103ac5780638f9a55c0146103d257806395d89b41146103e75780639b53b31714610415575f80fd5b8063313ce56711610173578063715018a611610143578063715018a614610350578063756b7bb7146103645780637d1db4a5146103785780637efd4be71461038d575f80fd5b8063313ce567146102d957806345a01698146102f457806356c8c7ae1461030857806370a082311461031c575f80fd5b80630faee56f116101ae5780630faee56f1461026457806318160ddd1461028757806323b872dd1461029b5780633101e456146102ba575f80fd5b80630614117a146101de57806306fdde03146101f4578063095ea7b314610235575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506101f2610581565b005b3480156101ff575f80fd5b50604080518082019091526007815266048617920322e360cc1b60208201525b60405161022c91906119bd565b60405180910390f35b348015610240575f80fd5b5061025461024f366004611a1f565b6105ab565b604051901515815260200161022c565b34801561026f575f80fd5b5061027960195481565b60405190815260200161022c565b348015610292575f80fd5b506102796105c1565b3480156102a6575f80fd5b506102546102b5366004611a49565b6105e1565b3480156102c5575f80fd5b506101f26102d4366004611a87565b610648565b3480156102e4575f80fd5b506040516009815260200161022c565b3480156102ff575f80fd5b506101f2610678565b348015610313575f80fd5b5061021f610a65565b348015610327575f80fd5b50610279610336366004611a9e565b6001600160a01b03165f9081526001602052604090205490565b34801561035b575f80fd5b506101f2610af1565b34801561036f575f80fd5b5061021f610b92565b348015610383575f80fd5b5061027960165481565b348015610398575f80fd5b506101f26103a7366004611a87565b610c22565b3480156103b7575f80fd5b505f546040516001600160a01b03909116815260200161022c565b3480156103dd575f80fd5b5061027960175481565b3480156103f2575f80fd5b506040805180820190915260068152650484159322e360d41b602082015261021f565b348015610420575f80fd5b506101f2610c79565b348015610434575f80fd5b506101f2610443366004611a87565b610d20565b348015610453575f80fd5b50610254610462366004611a1f565b610d77565b348015610472575f80fd5b506101f2610481366004611ab9565b610d83565b348015610491575f80fd5b5061027960185481565b3480156104a6575f80fd5b5061021f610eda565b3480156104ba575f80fd5b5061021f610ee9565b3480156104ce575f80fd5b506101f26104dd366004611b35565b610ef6565b3480156104ed575f80fd5b506102796104fc366004611ab9565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610531575f80fd5b5061021f610f47565b348015610545575f80fd5b5061021f610f54565b348015610559575f80fd5b506101f2610f63565b34801561056d575f80fd5b506101f261057c366004611a87565b610fb4565b6004546001600160a01b0316336001600160a01b0316146105a0575f80fd5b6105a947610fe4565b565b5f6105b733848461101b565b5060015b92915050565b5f6105ce6009600a611cbc565b6105dc90633b9aca00611cca565b905090565b5f6105ed84848461113e565b61063e843361063985604051806060016040528060288152602001611f8e602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611639565b61101b565b5060019392505050565b6004546001600160a01b0316336001600160a01b031614610667575f80fd5b60018110610673575f80fd5b601355565b5f546001600160a01b031633146106d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600b54600160a01b900460ff16156107305760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106cd565b600b805460ff60b01b1916600160b01b179055600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117825561078c9130919061077e90600990611cbc565b61063990633b9aca00611cca565b600a5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108009190611ce1565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561085f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108839190611ce1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156108cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f19190611ce1565b600b80546001600160a01b039283166001600160a01b0319909116179055600a541663f305d7194730610938816001600160a01b03165f9081526001602052604090205490565b5f8061094b5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156109b1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906109d69190611cfc565b5050600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610a2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4f9190611d27565b50600b805460ff60a01b1916600160a01b179055565b60098054610a7290611d46565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e90611d46565b8015610ae95780601f10610ac057610100808354040283529160200191610ae9565b820191905f5260205f20905b815481529060010190602001808311610acc57829003601f168201915b505050505081565b5f546001600160a01b03163314610b4a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106cd565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b606060088054610ba190611d46565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcd90611d46565b8015610c185780601f10610bef57610100808354040283529160200191610c18565b820191905f5260205f20905b815481529060010190602001808311610bfb57829003601f168201915b5050505050905090565b6004546001600160a01b0316336001600160a01b031614610c41575f80fd5b80612710610c516009600a611cbc565b610c5f90633b9aca00611cca565b610c699190611d78565b610c739190611cca565b60185550565b6004546001600160a01b0316336001600160a01b031614610c98575f80fd5b610ca46009600a611cbc565b610cb290633b9aca00611cca565b601655610cc16009600a611cbc565b610ccf90633b9aca00611cca565b6017557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610cff6009600a611cbc565b610d0d90633b9aca00611cca565b60405190815260200160405180910390a1565b6004546001600160a01b0316336001600160a01b031614610d3f575f80fd5b80612710610d4f6009600a611cbc565b610d5d90633b9aca00611cca565b610d679190611d78565b610d719190611cca565b60195550565b5f6105b733848461113e565b6004546001600160a01b0316336001600160a01b031614610da2575f80fd5b6001600160a01b038216610df85760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016106cd565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610e3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e609190611d97565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610eb0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed49190611d27565b50505050565b606060098054610ba190611d46565b60078054610a7290611d46565b6004546001600160a01b0316336001600160a01b031614610f15575f80fd5b6007610f22868883611e10565b506008610f30848683611e10565b506009610f3e828483611e10565b50505050505050565b60088054610a7290611d46565b606060078054610ba190611d46565b6004546001600160a01b0316336001600160a01b031614610f82575f80fd5b305f908152600160205260409020548015610fa057610fa081611671565b478015610fb057610fb081610fe4565b5050565b6004546001600160a01b0316336001600160a01b031614610fd3575f80fd5b60018110610fdf575f80fd5b601255565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fb0573d5f803e3d5ffd5b6001600160a01b03831661107d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106cd565b6001600160a01b0382166110de5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106cd565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111a25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106cd565b6001600160a01b0382166112045760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106cd565b5f81116112655760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106cd565b5f80546001600160a01b0385811691161480159061129057505f546001600160a01b03848116911614155b156114fc576112c160646112bb600d54600c54116112b0576010546112b4565b6012545b85906117e1565b90611866565b600b549091506001600160a01b0385811691161480156112ef5750600a546001600160a01b03848116911614155b801561131357506001600160a01b0383165f9081526003602052604090205460ff16155b156113f95760165482111561136a5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016106cd565b6017548261138c856001600160a01b03165f9081526001602052604090205490565b6113969190611ecc565b11156113e45760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016106cd565b600c8054905f6113f383611edf565b91905055505b600b546001600160a01b03848116911614801561141f57506001600160a01b0384163014155b1561144c5761144960646112bb600e54600c541161143f576011546112b4565b60135485906117e1565b90505b305f90815260016020526040902054600b54600160a81b900460ff161580156114825750600b546001600160a01b038581169116145b80156114975750600b54600160b01b900460ff165b80156114a4575060185481115b80156114b35750600f54600c54115b156114fa576114d56114d0846114cb846019546118a7565b6118a7565b611671565b4780156114f8576114ef6114ea476005611866565b6118bb565b6114f847610fe4565b505b505b801561157457305f9081526001602052604090205461151b90826118f2565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061156b9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546115969083611950565b6001600160a01b0385165f908152600160205260409020556115d96115bb8383611950565b6001600160a01b0385165f90815260016020526040902054906118f2565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6116228585611950565b60405190815260200160405180910390a350505050565b5f818484111561165c5760405162461bcd60e51b81526004016106cd91906119bd565b505f6116688486611ef7565b95945050505050565b600b805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106116b7576116b7611f0a565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561170e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117329190611ce1565b8160018151811061174557611745611f0a565b6001600160a01b039283166020918202929092010152600a5461176b913091168461101b565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906117a39085905f90869030904290600401611f1e565b5f604051808303815f87803b1580156117ba575f80fd5b505af11580156117cc573d5f803e3d5ffd5b5050600b805460ff60a81b1916905550505050565b5f825f036117f057505f6105bb565b5f6117fb8385611cca565b9050826118088583611d78565b1461185f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106cd565b9392505050565b5f61185f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611991565b5f8183116118b5578261185f565b50919050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fb0573d5f803e3d5ffd5b5f806118fe8385611ecc565b90508381101561185f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106cd565b5f61185f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611639565b5f81836119b15760405162461bcd60e51b81526004016106cd91906119bd565b505f6116688486611d78565b5f6020808352835180828501525f5b818110156119e8578581018301518582016040015282016119cc565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a1c575f80fd5b50565b5f8060408385031215611a30575f80fd5b8235611a3b81611a08565b946020939093013593505050565b5f805f60608486031215611a5b575f80fd5b8335611a6681611a08565b92506020840135611a7681611a08565b929592945050506040919091013590565b5f60208284031215611a97575f80fd5b5035919050565b5f60208284031215611aae575f80fd5b813561185f81611a08565b5f8060408385031215611aca575f80fd5b8235611ad581611a08565b91506020830135611ae581611a08565b809150509250929050565b5f8083601f840112611b00575f80fd5b50813567ffffffffffffffff811115611b17575f80fd5b602083019150836020828501011115611b2e575f80fd5b9250929050565b5f805f805f8060608789031215611b4a575f80fd5b863567ffffffffffffffff80821115611b61575f80fd5b611b6d8a838b01611af0565b90985096506020890135915080821115611b85575f80fd5b611b918a838b01611af0565b90965094506040890135915080821115611ba9575f80fd5b50611bb689828a01611af0565b979a9699509497509295939492505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c1657815f1904821115611bfc57611bfc611bc8565b80851615611c0957918102915b93841c9390800290611be1565b509250929050565b5f82611c2c575060016105bb565b81611c3857505f6105bb565b8160018114611c4e5760028114611c5857611c74565b60019150506105bb565b60ff841115611c6957611c69611bc8565b50506001821b6105bb565b5060208310610133831016604e8410600b8410161715611c97575081810a6105bb565b611ca18383611bdc565b805f1904821115611cb457611cb4611bc8565b029392505050565b5f61185f60ff841683611c1e565b80820281158282048414176105bb576105bb611bc8565b5f60208284031215611cf1575f80fd5b815161185f81611a08565b5f805f60608486031215611d0e575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611d37575f80fd5b8151801515811461185f575f80fd5b600181811c90821680611d5a57607f821691505b6020821081036118b557634e487b7160e01b5f52602260045260245ffd5b5f82611d9257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611da7575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b601f821115611e0b575f81815260208120601f850160051c81016020861015611de85750805b601f850160051c820191505b81811015611e0757828155600101611df4565b5050505b505050565b67ffffffffffffffff831115611e2857611e28611dae565b611e3c83611e368354611d46565b83611dc2565b5f601f841160018114611e6d575f8515611e565750838201355b5f19600387901b1c1916600186901b178355611ec5565b5f83815260209020601f19861690835b82811015611e9d5786850135825560209485019460019092019101611e7d565b5086821015611eb9575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b808201808211156105bb576105bb611bc8565b5f60018201611ef057611ef0611bc8565b5060010190565b818103818111156105bb576105bb611bc8565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f6c5784516001600160a01b031683529383019391830191600101611f47565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a8d93ec5434fcd2417002294e786085c9db399580e32f29408c4dc3d8a7b884464736f6c63430008140033
Deployed Bytecode Sourcemap
4150:10420:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9306:137;;;;;;;;;;;;;:::i;:::-;;9808:83;;;;;;;;;;-1:-1:-1;9878:5:0;;;;;;;;;;;;-1:-1:-1;;;9878:5:0;;;;9808:83;;;;;;;:::i;:::-;;;;;;;;10647:161;;;;;;;;;;-1:-1:-1;10647:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10647:161:0;1023:187:1;6009:49:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;6009:49:0;1215:177:1;10087:95:0;;;;;;;;;;;;;:::i;10817:313::-;;;;;;;;;;-1:-1:-1;10817:313:0;;;;;:::i;:::-;;:::i;7617:168::-;;;;;;;;;;-1:-1:-1;7617:168:0;;;;;:::i;:::-;;:::i;9996:83::-;;;;;;;;;;-1:-1:-1;9996:83:0;;5638:1;2185:36:1;;2173:2;2158:18;9996:83:0;2043:184:1;6553:668:0;;;;;;;;;;;;;:::i;4700:33::-;;;;;;;;;;;;;:::i;10191:119::-;;;;;;;;;;-1:-1:-1;10191:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;10284:18:0;10257:7;10284:18;;;:9;:18;;;;;;;10191:119;1688:148;;;;;;;;;;;;;:::i;8332:116::-;;;;;;;;;;;;;:::i;5826:53::-;;;;;;;;;;;;;;;;9626:174;;;;;;;;;;-1:-1:-1;9626:174:0;;;;;:::i;:::-;;:::i;1474:79::-;;;;;;;;;;-1:-1:-1;1512:7:0;1539:6;1474:79;;-1:-1:-1;;;;;1539:6:0;;;2630:51:1;;2618:2;2603:18;1474:79:0;2484:203:1;5887:53:0;;;;;;;;;;;;;;;;9900:87;;;;;;;;;;-1:-1:-1;9972:7:0;;;;;;;;;;;;-1:-1:-1;;;9972:7:0;;;;9900:87;;7229:206;;;;;;;;;;;;;:::i;9451:167::-;;;;;;;;;;-1:-1:-1;9451:167:0;;;;;:::i;:::-;;:::i;10319:::-;;;;;;;;;;-1:-1:-1;10319:167:0;;;;;:::i;:::-;;:::i;8578:331::-;;;;;;;;;;-1:-1:-1;8578:331:0;;;;;:::i;:::-;;:::i;5948:54::-;;;;;;;;;;;;;;;;8456:114;;;;;;;;;;;;;:::i;4619:33::-;;;;;;;;;;;;;:::i;7793:407::-;;;;;;;;;;-1:-1:-1;7793:407:0;;;;;:::i;:::-;;:::i;10495:143::-;;;;;;;;;;-1:-1:-1;10495:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;10603:18:0;;;10576:7;10603:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10495:143;4659:34;;;;;;;;;;;;;:::i;8210:114::-;;;;;;;;;;;;;:::i;8917:384::-;;;;;;;;;;;;;:::i;7443:166::-;;;;;;;;;;-1:-1:-1;7443:166:0;;;;;:::i;:::-;;:::i;9306:137::-;9370:19;;-1:-1:-1;;;;;9370:19:0;343:10;-1:-1:-1;;;;;9356:33:0;;9348:42;;;;;;9395:43;9416:21;9395:20;:43::i;:::-;9306:137::o;10647:161::-;10722:4;10739:39;343:10;10762:7;10771:6;10739:8;:39::i;:::-;-1:-1:-1;10796:4:0;10647:161;;;;;:::o;10087:95::-;10140:7;5694:14;5638:1;5694:2;:14;:::i;:::-;5681:27;;:10;:27;:::i;:::-;10160:14;;10087:95;:::o;10817:313::-;10915:4;10932:36;10942:6;10950:9;10961:6;10932:9;:36::i;:::-;10979:121;10988:6;343:10;11010:89;11048:6;11010:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11010:19:0;;;;;;:11;:19;;;;;;;;343:10;11010:33;;;;;;;;;;:37;:89::i;:::-;10979:8;:121::i;:::-;-1:-1:-1;11118:4:0;10817:313;;;;;:::o;7617:168::-;7698:19;;-1:-1:-1;;;;;7698:19:0;343:10;-1:-1:-1;;;;;7684:33:0;;7676:42;;;;;;7743:1;7735:7;:9;7727:18;;;;;;7754:15;:23;7617:168::o;6553:668::-;1601:6;;-1:-1:-1;;;;;1601:6:0;343:10;1601:22;1593:67;;;;-1:-1:-1;;;1593:67:0;;6343:2:1;1593:67:0;;;6325:21:1;;;6362:18;;;6355:30;6421:34;6401:18;;;6394:62;6473:18;;1593:67:0;;;;;;;;;6614:11:::1;::::0;-1:-1:-1;;;6614:11:0;::::1;;;6613:12;6605:47;;;::::0;-1:-1:-1;;;6605:47:0;;6704:2:1;6605:47:0::1;::::0;::::1;6686:21:1::0;6743:2;6723:18;;;6716:30;6782:25;6762:18;;;6755:53;6825:18;;6605:47:0::1;6502:347:1::0;6605:47:0::1;6663:11;:18:::0;;-1:-1:-1;;;;6663:18:0::1;-1:-1:-1::0;;;6663:18:0::1;::::0;;6692:15:::1;:80:::0;;-1:-1:-1;;;;;;6692:80:0::1;6729:42;6692:80:::0;;::::1;::::0;;6783:58:::1;::::0;6800:4:::1;::::0;6729:42;5694:14:::1;::::0;5638:1:::1;::::0;5694:14:::1;:::i;:::-;5681:27;::::0;:10:::1;:27;:::i;6783:58::-;6886:15;;;;;;;;;-1:-1:-1::0;;;;;6886:15:0::1;-1:-1:-1::0;;;;;6886:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6868:55:0::1;;6932:4;6939:15;;;;;;;;;-1:-1:-1::0;;;;;6939:15:0::1;-1:-1:-1::0;;;;;6939:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6868:94;::::0;-1:-1:-1;;;;;;6868:94:0::1;::::0;;;;;;-1:-1:-1;;;;;7340:15:1;;;6868:94:0::1;::::0;::::1;7322:34:1::0;7392:15;;7372:18;;;7365:43;7257:18;;6868:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6852:13;:110:::0;;-1:-1:-1;;;;;6852:110:0;;::::1;-1:-1:-1::0;;;;;;6852:110:0;;::::1;;::::0;;6973:15:::1;::::0;::::1;:31;7012:21;7043:4;7049:24;7043:4:::0;-1:-1:-1;;;;;10284:18:0;10257:7;10284:18;;;:9;:18;;;;;;;10191:119;7049:24:::1;7074:1;7076::::0;7078:7:::1;1512::::0;1539:6;-1:-1:-1;;;;;1539:6:0;;1474:79;7078:7:::1;6973:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;6973:129:0;;;-1:-1:-1;;;;;7778:15:1;;;6973:129:0::1;::::0;::::1;7760:34:1::0;7810:18;;;7803:34;;;;7853:18;;;7846:34;;;;7896:18;;;7889:34;7960:15;;;7939:19;;;7932:44;7086:15:0::1;7992:19:1::0;;;7985:35;7694:19;;6973:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;7120:13:0::1;::::0;7151:15:::1;::::0;7113:71:::1;::::0;-1:-1:-1;;;7113:71:0;;-1:-1:-1;;;;;7151:15:0;;::::1;7113:71;::::0;::::1;8516:51:1::0;-1:-1:-1;;8583:18:1;;;8576:34;7120:13:0;::::1;::::0;-1:-1:-1;7113:29:0::1;::::0;8489:18:1;;7113:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7195:11:0::1;:18:::0;;-1:-1:-1;;;;7195:18:0::1;-1:-1:-1::0;;;7195:18:0::1;::::0;;6553:668::o;4700:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1688:148::-;1601:6;;-1:-1:-1;;;;;1601:6:0;343:10;1601:22;1593:67;;;;-1:-1:-1;;;1593:67:0;;6343:2:1;1593:67:0;;;6325:21:1;;;6362:18;;;6355:30;6421:34;6401:18;;;6394:62;6473:18;;1593:67:0;6141:356:1;1593:67:0;1795:1:::1;1779:6:::0;;1758:40:::1;::::0;-1:-1:-1;;;;;1779:6:0;;::::1;::::0;1758:40:::1;::::0;1795:1;;1758:40:::1;1826:1;1809:19:::0;;-1:-1:-1;;;;;;1809:19:0::1;::::0;;1688:148::o;8332:116::-;8387:13;8420:20;8413:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8332:116;:::o;9626:174::-;9717:19;;-1:-1:-1;;;;;9717:19:0;343:10;-1:-1:-1;;;;;9703:33:0;;9695:42;;;;;;9786:6;9778:5;5694:14;5638:1;5694:2;:14;:::i;:::-;5681:27;;:10;:27;:::i;:::-;9768:15;;;;:::i;:::-;:24;;;;:::i;:::-;9748:17;:44;-1:-1:-1;9626:174:0:o;7229:206::-;7298:19;;-1:-1:-1;;;;;7298:19:0;343:10;-1:-1:-1;;;;;7284:33:0;;7276:42;;;;;;5694:14;5638:1;5694:2;:14;:::i;:::-;5681:27;;:10;:27;:::i;:::-;7329:12;:22;5694:14;5638:1;5694:2;:14;:::i;:::-;5681:27;;:10;:27;:::i;:::-;7362:14;:22;7400:27;5694:14;5638:1;5694:2;:14;:::i;:::-;5681:27;;:10;:27;:::i;:::-;7400;;1361:25:1;;;1349:2;1334:18;7400:27:0;;;;;;;7229:206::o;9451:167::-;9541:19;;-1:-1:-1;;;;;9541:19:0;343:10;-1:-1:-1;;;;;9527:33:0;;9519:42;;;;;;9604:6;9596:5;5694:14;5638:1;5694:2;:14;:::i;:::-;5681:27;;:10;:27;:::i;:::-;9586:15;;;;:::i;:::-;:24;;;;:::i;:::-;9572:11;:38;-1:-1:-1;9451:167:0:o;10319:::-;10397:4;10414:42;343:10;10438:9;10449:6;10414:9;:42::i;8578:331::-;8677:19;;-1:-1:-1;;;;;8677:19:0;343:10;-1:-1:-1;;;;;8663:33:0;;8655:42;;;;;;-1:-1:-1;;;;;8716:20:0;;8708:59;;;;-1:-1:-1;;;8708:59:0;;9712:2:1;8708:59:0;;;9694:21:1;9751:2;9731:18;;;9724:30;9790:28;9770:18;;;9763:56;9836:18;;8708:59:0;9510:350:1;8708:59:0;8805:39;;-1:-1:-1;;;8805:39:0;;8838:4;8805:39;;;2630:51:1;8778:24:0;;-1:-1:-1;;;;;8805:24:0;;;;;2603:18:1;;8805:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8855:46;;-1:-1:-1;;;8855:46:0;;-1:-1:-1;;;;;8534:32:1;;;8855:46:0;;;8516:51:1;8583:18;;;8576:34;;;8778:66:0;;-1:-1:-1;8855:23:0;;;;;;8489:18:1;;8855:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8644:265;8578:331;;:::o;8456:114::-;8510:13;8543:19;8536:26;;;;;:::i;4619:33::-;;;;;;;:::i;7793:407::-;8013:19;;-1:-1:-1;;;;;8013:19:0;343:10;-1:-1:-1;;;;;7998:34:0;;7990:43;;;;;;8046:19;:42;8068:20;;8046:19;:42;:::i;:::-;-1:-1:-1;8099:20:0;:44;8122:21;;8099:20;:44;:::i;:::-;-1:-1:-1;8154:19:0;:42;8176:20;;8154:19;:42;:::i;:::-;;7793:407;;;;;;:::o;4659:34::-;;;;;;;:::i;8210:114::-;8264:13;8297:19;8290:26;;;;;:::i;8917:384::-;9000:19;;-1:-1:-1;;;;;9000:19:0;343:10;-1:-1:-1;;;;;8986:33:0;;8978:42;;;;;;9070:4;9031:20;10284:18;;;:9;:18;;;;;;9090:14;;9087:73;;9118:30;9135:12;9118:16;:30::i;:::-;9189:21;9224:12;;9221:73;;9250:32;9271:10;9250:20;:32::i;:::-;8967:334;;8917:384::o;7443:166::-;7523:19;;-1:-1:-1;;;;;7523:19:0;343:10;-1:-1:-1;;;;;7509:33:0;;7501:42;;;;;;7568:1;7560:7;:9;7552:18;;;;;;7579:14;:22;7443:166::o;12082:109::-;12147:19;;:36;;-1:-1:-1;;;;;12147:19:0;;;;:36;;;;;12176:6;;12147:19;:36;:19;:36;12176:6;12147:19;:36;;;;;;;;;;;;;;;;;;;11139:335;-1:-1:-1;;;;;11232:19:0;;11224:68;;;;-1:-1:-1;;;11224:68:0;;12446:2:1;11224:68:0;;;12428:21:1;12485:2;12465:18;;;12458:30;12524:34;12504:18;;;12497:62;-1:-1:-1;;;12575:18:1;;;12568:34;12619:19;;11224:68:0;12244:400:1;11224:68:0;-1:-1:-1;;;;;11311:21:0;;11303:68;;;;-1:-1:-1;;;11303:68:0;;12851:2:1;11303:68:0;;;12833:21:1;12890:2;12870:18;;;12863:30;12929:34;12909:18;;;12902:62;-1:-1:-1;;;12980:18:1;;;12973:32;13022:19;;11303:68:0;12649:398:1;11303:68:0;-1:-1:-1;;;;;11382:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11434:32;;1361:25:1;;;11434:32:0;;1334:18:1;11434:32:0;;;;;;;11139:335;;;:::o;12236:2020::-;-1:-1:-1;;;;;12324:18:0;;12316:68;;;;-1:-1:-1;;;12316:68:0;;13254:2:1;12316:68:0;;;13236:21:1;13293:2;13273:18;;;13266:30;13332:34;13312:18;;;13305:62;-1:-1:-1;;;13383:18:1;;;13376:35;13428:19;;12316:68:0;13052:401:1;12316:68:0;-1:-1:-1;;;;;12403:16:0;;12395:64;;;;-1:-1:-1;;;12395:64:0;;13660:2:1;12395:64:0;;;13642:21:1;13699:2;13679:18;;;13672:30;13738:34;13718:18;;;13711:62;-1:-1:-1;;;13789:18:1;;;13782:33;13832:19;;12395:64:0;13458:399:1;12395:64:0;12487:1;12478:6;:10;12470:64;;;;-1:-1:-1;;;12470:64:0;;14064:2:1;12470:64:0;;;14046:21:1;14103:2;14083:18;;;14076:30;14142:34;14122:18;;;14115:62;-1:-1:-1;;;14193:18:1;;;14186:39;14242:19;;12470:64:0;13862:405:1;12470:64:0;12545:17;1539:6;;-1:-1:-1;;;;;12579:15:0;;;1539:6;;12579:15;;;;:32;;-1:-1:-1;1512:7:0;1539:6;-1:-1:-1;;;;;12598:13:0;;;1539:6;;12598:13;;12579:32;12575:1325;;;12640:103;12739:3;12640:94;12670:31;;12652:17;;:49;12651:82;;12718:15;;12651:82;;;12703:14;;12651:82;12640:6;;:10;:94::i;:::-;:98;;:103::i;:::-;12772:13;;12628:115;;-1:-1:-1;;;;;;12764:21:0;;;12772:13;;12764:21;:55;;;;-1:-1:-1;12803:15:0;;-1:-1:-1;;;;;12789:30:0;;;12803:15;;12789:30;;12764:55;:83;;;;-1:-1:-1;;;;;;12825:22:0;;;;;;:18;:22;;;;;;;;12823:24;12764:83;12760:321;;;12887:12;;12877:6;:22;;12869:60;;;;-1:-1:-1;;;12869:60:0;;14474:2:1;12869:60:0;;;14456:21:1;14513:2;14493:18;;;14486:30;14552:27;14532:18;;;14525:55;14597:18;;12869:60:0;14272:349:1;12869:60:0;12982:14;;12972:6;12956:13;12966:2;-1:-1:-1;;;;;10284:18:0;10257:7;10284:18;;;:9;:18;;;;;;;10191:119;12956:13;:22;;;;:::i;:::-;:40;;12948:79;;;;-1:-1:-1;;;12948:79:0;;14958:2:1;12948:79:0;;;14940:21:1;14997:2;14977:18;;;14970:30;15036:28;15016:18;;;15009:56;15082:18;;12948:79:0;14756:350:1;12948:79:0;13046:17;:19;;;:17;:19;;;:::i;:::-;;;;;;12760:321;13106:13;;-1:-1:-1;;;;;13100:19:0;;;13106:13;;13100:19;:43;;;;-1:-1:-1;;;;;;13123:20:0;;13138:4;13123:20;;13100:43;13097:201;;;13176:106;13278:3;13176:97;13206:32;;13188:17;;:50;13187:85;;13256:16;;13187:85;;;13240:15;;13176:6;;:10;:97::i;:106::-;13164:118;;13097:201;13363:4;13314:28;10284:18;;;:9;:18;;;;;;13389:6;;-1:-1:-1;;;13389:6:0;;;;13388:7;:32;;;;-1:-1:-1;13407:13:0;;-1:-1:-1;;;;;13399:21:0;;;13407:13;;13399:21;13388:32;:47;;;;-1:-1:-1;13424:11:0;;-1:-1:-1;;;13424:11:0;;;;13388:47;:89;;;;;13460:17;;13439:20;:38;13388:89;:139;;;;;13499:28;;13481:17;;:46;13388:139;13384:505;;;13548:67;13565:49;13569:6;13576:37;13580:20;13601:11;;13576:3;:37::i;:::-;13565:3;:49::i;:::-;13548:16;:67::i;:::-;13663:21;13706:22;;13703:171;;13738:48;13757:28;:21;13783:1;13757:25;:28::i;:::-;13738:18;:48::i;:::-;13809:43;13830:21;13809:20;:43::i;:::-;13529:360;13384:505;12613:1287;12575:1325;13915:11;;13912:161;;13983:4;13965:24;;;;:9;:24;;;;;;:39;;13994:9;13965:28;:39::i;:::-;13958:4;13940:24;;;;:9;:24;;;;;;;:64;;;;14022:39;;-1:-1:-1;;;;;14022:39:0;;;;;;;14051:9;1361:25:1;;1349:2;1334:18;;1215:177;14022:39:0;;;;;;;;13912:161;-1:-1:-1;;;;;14099:15:0;;;;;;:9;:15;;;;;;:27;;14119:6;14099:19;:27::i;:::-;-1:-1:-1;;;;;14083:15:0;;;;;;:9;:15;;;;;:43;14151:40;14169:21;:6;14180:9;14169:10;:21::i;:::-;-1:-1:-1;;;;;14151:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;14137:13:0;;;;;;;:9;:13;;;;;:54;;;;14207:41;;;14226:21;:6;14237:9;14226:10;:21::i;:::-;14207:41;;1361:25:1;;;1349:2;1334:18;14207:41:0;;;;;;;12305:1951;12236:2020;;;:::o;3360:190::-;3446:7;3482:12;3474:6;;;;3466:29;;;;-1:-1:-1;;;3466:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3506:9:0;3518:5;3522:1;3518;:5;:::i;:::-;3506:17;3360:190;-1:-1:-1;;;;;3360:190:0:o;11482:483::-;5083:6;:13;;-1:-1:-1;;;;5083:13:0;-1:-1:-1;;;5083:13:0;;;11584:16:::1;::::0;;11598:1:::1;11584:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11584:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11584:16:0::1;11560:40;;11629:4;11611;11616:1;11611:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11611:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11655:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11655:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11611:7;;11655:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11645:4;11650:1;11645:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11645:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11720:15:::1;::::0;11688:62:::1;::::0;11705:4:::1;::::0;11720:15:::1;11738:11:::0;11688:8:::1;:62::i;:::-;11761:15;::::0;:196:::1;::::0;-1:-1:-1;;;11761:196:0;;-1:-1:-1;;;;;11761:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11842:11;;11761:15:::1;::::0;11884:4;;11911::::1;::::0;11931:15:::1;::::0;11761:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5119:6:0;:14;;-1:-1:-1;;;;5119:14:0;;;-1:-1:-1;;;;11482:483:0:o;3558:246::-;3616:7;3640:1;3645;3640:6;3636:47;;-1:-1:-1;3670:1:0;3663:8;;3636:47;3693:9;3705:5;3709:1;3705;:5;:::i;:::-;3693:17;-1:-1:-1;3738:1:0;3729:5;3733:1;3693:17;3729:5;:::i;:::-;:10;3721:56;;;;-1:-1:-1;;;3721:56:0;;16703:2:1;3721:56:0;;;16685:21:1;16742:2;16722:18;;;16715:30;16781:34;16761:18;;;16754:62;-1:-1:-1;;;16832:18:1;;;16825:31;16873:19;;3721:56:0;16501:397:1;3721:56:0;3795:1;3558:246;-1:-1:-1;;;3558:246:0:o;3812:132::-;3870:7;3897:39;3901:1;3904;3897:39;;;;;;;;;;;;;;;;;:3;:39::i;14264:98::-;14321:7;14348:1;14346;:3;14345:9;;14353:1;14345:9;;;-1:-1:-1;14351:1:0;14264:98;-1:-1:-1;14264:98:0:o;11970:104::-;12033:16;;:33;;-1:-1:-1;;;;;12033:16:0;;;;:33;;;;;12059:6;;12033:16;:33;:16;:33;12059:6;12033:16;:33;;;;;;;;;;;;;;;;;;;3029:179;3087:7;;3119:5;3123:1;3119;:5;:::i;:::-;3107:17;;3148:1;3143;:6;;3135:46;;;;-1:-1:-1;;;3135:46:0;;17105:2:1;3135:46:0;;;17087:21:1;17144:2;17124:18;;;17117:30;17183:29;17163:18;;;17156:57;17230:18;;3135:46:0;16903:351:1;3216:136:0;3274:7;3301:43;3305:1;3308;3301:43;;;;;;;;;;;;;;;;;:3;:43::i;3952:189::-;4038:7;4073:12;4066:5;4058:28;;;;-1:-1:-1;;;4058:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4097:9:0;4109:5;4113:1;4109;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;-1:-1:-1;2009:23:1;;1858:180;-1:-1:-1;1858:180:1:o;2232:247::-;2291:6;2344:2;2332:9;2323:7;2319:23;2315:32;2312:52;;;2360:1;2357;2350:12;2312:52;2399:9;2386:23;2418:31;2443:5;2418:31;:::i;2692:388::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;3002:2:1;2987:18;;2974:32;3015:33;2974:32;3015:33;:::i;:::-;3067:7;3057:17;;;2692:388;;;;;:::o;3085:348::-;3137:8;3147:6;3201:3;3194:4;3186:6;3182:17;3178:27;3168:55;;3219:1;3216;3209:12;3168:55;-1:-1:-1;3242:20:1;;3285:18;3274:30;;3271:50;;;3317:1;3314;3307:12;3271:50;3354:4;3346:6;3342:17;3330:29;;3406:3;3399:4;3390:6;3382;3378:19;3374:30;3371:39;3368:59;;;3423:1;3420;3413:12;3368:59;3085:348;;;;;:::o;3438:1010::-;3551:6;3559;3567;3575;3583;3591;3644:2;3632:9;3623:7;3619:23;3615:32;3612:52;;;3660:1;3657;3650:12;3612:52;3700:9;3687:23;3729:18;3770:2;3762:6;3759:14;3756:34;;;3786:1;3783;3776:12;3756:34;3825:59;3876:7;3867:6;3856:9;3852:22;3825:59;:::i;:::-;3903:8;;-1:-1:-1;3799:85:1;-1:-1:-1;3991:2:1;3976:18;;3963:32;;-1:-1:-1;4007:16:1;;;4004:36;;;4036:1;4033;4026:12;4004:36;4075:61;4128:7;4117:8;4106:9;4102:24;4075:61;:::i;:::-;4155:8;;-1:-1:-1;4049:87:1;-1:-1:-1;4243:2:1;4228:18;;4215:32;;-1:-1:-1;4259:16:1;;;4256:36;;;4288:1;4285;4278:12;4256:36;;4327:61;4380:7;4369:8;4358:9;4354:24;4327:61;:::i;:::-;3438:1010;;;;-1:-1:-1;3438:1010:1;;-1:-1:-1;3438:1010:1;;4407:8;;3438:1010;-1:-1:-1;;;3438:1010:1:o;4453:127::-;4514:10;4509:3;4505:20;4502:1;4495:31;4545:4;4542:1;4535:15;4569:4;4566:1;4559:15;4585:422;4674:1;4717:5;4674:1;4731:270;4752:7;4742:8;4739:21;4731:270;;;4811:4;4807:1;4803:6;4799:17;4793:4;4790:27;4787:53;;;4820:18;;:::i;:::-;4870:7;4860:8;4856:22;4853:55;;;4890:16;;;;4853:55;4969:22;;;;4929:15;;;;4731:270;;;4735:3;4585:422;;;;;:::o;5012:806::-;5061:5;5091:8;5081:80;;-1:-1:-1;5132:1:1;5146:5;;5081:80;5180:4;5170:76;;-1:-1:-1;5217:1:1;5231:5;;5170:76;5262:4;5280:1;5275:59;;;;5348:1;5343:130;;;;5255:218;;5275:59;5305:1;5296:10;;5319:5;;;5343:130;5380:3;5370:8;5367:17;5364:43;;;5387:18;;:::i;:::-;-1:-1:-1;;5443:1:1;5429:16;;5458:5;;5255:218;;5557:2;5547:8;5544:16;5538:3;5532:4;5529:13;5525:36;5519:2;5509:8;5506:16;5501:2;5495:4;5492:12;5488:35;5485:77;5482:159;;;-1:-1:-1;5594:19:1;;;5626:5;;5482:159;5673:34;5698:8;5692:4;5673:34;:::i;:::-;5743:6;5739:1;5735:6;5731:19;5722:7;5719:32;5716:58;;;5754:18;;:::i;:::-;5792:20;;5012:806;-1:-1:-1;;;5012:806:1:o;5823:140::-;5881:5;5910:47;5951:4;5941:8;5937:19;5931:4;5910:47;:::i;5968:168::-;6041:9;;;6072;;6089:15;;;6083:22;;6069:37;6059:71;;6110:18;;:::i;6854:251::-;6924:6;6977:2;6965:9;6956:7;6952:23;6948:32;6945:52;;;6993:1;6990;6983:12;6945:52;7025:9;7019:16;7044:31;7069:5;7044:31;:::i;8031:306::-;8119:6;8127;8135;8188:2;8176:9;8167:7;8163:23;8159:32;8156:52;;;8204:1;8201;8194:12;8156:52;8233:9;8227:16;8217:26;;8283:2;8272:9;8268:18;8262:25;8252:35;;8327:2;8316:9;8312:18;8306:25;8296:35;;8031:306;;;;;:::o;8621:277::-;8688:6;8741:2;8729:9;8720:7;8716:23;8712:32;8709:52;;;8757:1;8754;8747:12;8709:52;8789:9;8783:16;8842:5;8835:13;8828:21;8821:5;8818:32;8808:60;;8864:1;8861;8854:12;8903:380;8982:1;8978:12;;;;9025;;;9046:61;;9100:4;9092:6;9088:17;9078:27;;9046:61;9153:2;9145:6;9142:14;9122:18;9119:38;9116:161;;9199:10;9194:3;9190:20;9187:1;9180:31;9234:4;9231:1;9224:15;9262:4;9259:1;9252:15;9288:217;9328:1;9354;9344:132;;9398:10;9393:3;9389:20;9386:1;9379:31;9433:4;9430:1;9423:15;9461:4;9458:1;9451:15;9344:132;-1:-1:-1;9490:9:1;;9288:217::o;9865:184::-;9935:6;9988:2;9976:9;9967:7;9963:23;9959:32;9956:52;;;10004:1;10001;9994:12;9956:52;-1:-1:-1;10027:16:1;;9865:184;-1:-1:-1;9865:184:1:o;10054:127::-;10115:10;10110:3;10106:20;10103:1;10096:31;10146:4;10143:1;10136:15;10170:4;10167:1;10160:15;10312:545;10414:2;10409:3;10406:11;10403:448;;;10450:1;10475:5;10471:2;10464:17;10520:4;10516:2;10506:19;10590:2;10578:10;10574:19;10571:1;10567:27;10561:4;10557:38;10626:4;10614:10;10611:20;10608:47;;;-1:-1:-1;10649:4:1;10608:47;10704:2;10699:3;10695:12;10692:1;10688:20;10682:4;10678:31;10668:41;;10759:82;10777:2;10770:5;10767:13;10759:82;;;10822:17;;;10803:1;10792:13;10759:82;;;10763:3;;;10403:448;10312:545;;;:::o;11033:1206::-;11157:18;11152:3;11149:27;11146:53;;;11179:18;;:::i;:::-;11208:94;11298:3;11258:38;11290:4;11284:11;11258:38;:::i;:::-;11252:4;11208:94;:::i;:::-;11328:1;11353:2;11348:3;11345:11;11370:1;11365:616;;;;12025:1;12042:3;12039:93;;;-1:-1:-1;12098:19:1;;;12085:33;12039:93;-1:-1:-1;;10990:1:1;10986:11;;;10982:24;10978:29;10968:40;11014:1;11010:11;;;10965:57;12145:78;;11338:895;;11365:616;10259:1;10252:14;;;10296:4;10283:18;;-1:-1:-1;;11401:17:1;;;11502:9;11524:229;11538:7;11535:1;11532:14;11524:229;;;11627:19;;;11614:33;11599:49;;11734:4;11719:20;;;;11687:1;11675:14;;;;11554:12;11524:229;;;11528:3;11781;11772:7;11769:16;11766:159;;;11905:1;11901:6;11895:3;11889;11886:1;11882:11;11878:21;11874:34;11870:39;11857:9;11852:3;11848:19;11835:33;11831:79;11823:6;11816:95;11766:159;;;11968:1;11962:3;11959:1;11955:11;11951:19;11945:4;11938:33;11338:895;;;11033:1206;;;:::o;14626:125::-;14691:9;;;14712:10;;;14709:36;;;14725:18;;:::i;15111:135::-;15150:3;15171:17;;;15168:43;;15191:18;;:::i;:::-;-1:-1:-1;15238:1:1;15227:13;;15111:135::o;15251:128::-;15318:9;;;15339:11;;;15336:37;;;15353:18;;:::i;15384:127::-;15445:10;15440:3;15436:20;15433:1;15426:31;15476:4;15473:1;15466:15;15500:4;15497:1;15490:15;15516:980;15778:4;15826:3;15815:9;15811:19;15857:6;15846:9;15839:25;15883:2;15921:6;15916:2;15905:9;15901:18;15894:34;15964:3;15959:2;15948:9;15944:18;15937:31;15988:6;16023;16017:13;16054:6;16046;16039:22;16092:3;16081:9;16077:19;16070:26;;16131:2;16123:6;16119:15;16105:29;;16152:1;16162:195;16176:6;16173:1;16170:13;16162:195;;;16241:13;;-1:-1:-1;;;;;16237:39:1;16225:52;;16332:15;;;;16297:12;;;;16273:1;16191:9;16162:195;;;-1:-1:-1;;;;;;;16413:32:1;;;;16408:2;16393:18;;16386:60;-1:-1:-1;;;16477:3:1;16462:19;16455:35;16374:3;15516:980;-1:-1:-1;;;15516:980:1:o
Swarm Source
ipfs://a8d93ec5434fcd2417002294e786085c9db399580e32f29408c4dc3d8a7b8844
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.