ERC-20
Overview
Max Total Supply
97,133.77084435281003017 SAUCE
Holders
59
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SecretSauce
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-31 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.7; 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 ERC20 is IERC20 { uint256 internal _totalSupply = 1e23; string _name; string _symbol; uint8 constant _decimals = 18; mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() external view returns (string memory) { return _name; } function symbol() external view returns (string memory) { return _symbol; } function decimals() external pure returns (uint8) { return _decimals; } function totalSupply() external view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { _beforeTokenTransfer(from, to, amount); uint256 senderBalance = _balances[from]; require(senderBalance >= amount); unchecked { _balances[from] = senderBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve( address owner, address spender, uint256 amount ) internal virtual { _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][msg.sender]; require(currentAllowance >= amount); unchecked { _approve(sender, msg.sender, currentAllowance - amount); } return true; } function _burn(address account, uint256 amount) internal virtual { require(account != address(0)); uint256 accountBalance = _balances[account]; require(accountBalance >= amount); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } pragma solidity ^0.8.7; interface IUniswapV2Router02 { //function swapExactTokensForETHSupportingFeeOnTransferTokens( function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } pragma solidity ^0.8.7; interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } abstract contract TradableErc20 is ERC20 { IUniswapV2Router02 internal constant _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public uniswapV2Pair; address private ecosystemWallet = payable(0xe3C69E06e4c785Ed8b99D6569Eb59120087549F6); address public _deployerWallet; bool _inSwap; bool public _swapandliquifyEnabled = false; // bool public tradingEnable; uint256 public _totalBotSupply; address[] public blacklistedBotWallets; bool _autoBanBots = true; mapping(address => bool) public isBot; mapping(address => bool) _isExcludedFromFee; mapping(address => uint256) private _lastBuy; mapping(address => uint256) private _lastReflectionBasis; mapping(address => uint256) private _totalWalletRewards; mapping(address => bool) private _reflectionExcluded; uint256 constant maxBuyIncrementPercent = 1; uint256 public maxBuyIncrementValue; uint256 public incrementTime; uint256 public maxBuy; uint256 public _initialSupply = 1e23; uint256 public earlySellTime = 24 hours; uint256 public swapThreshold = 1e21; bool internal useEarlySellTime = true; uint256 internal _ethReflectionBasis; uint256 public _totalDistributed; uint256 public _totalBurned; modifier onlyOwner() { require(isOwner(msg.sender)); _; } modifier lockTheSwap() { _inSwap = true; _; _inSwap = false; } constructor(string memory name_, string memory symbol_) ERC20(name_, symbol_) { _balances[msg.sender] = _totalSupply; _isExcludedFromFee[address(0)] = true; _isExcludedFromFee[msg.sender] = true; _deployerWallet = msg.sender; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function addLp() public onlyOwner { require(uniswapV2Pair == address(0)); address pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair( address(this), _uniswapV2Router.WETH() ); _allowances[address(this)][address(_uniswapV2Router)] = _totalSupply; _isExcludedFromFee[pair] = true; _uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), _balances[address(this)], 0, 0, msg.sender, block.timestamp ); uniswapV2Pair = pair; _swapandliquifyEnabled = true; } function _transfer( address from, address to, uint256 amount ) internal override { require(!isBot[from] && !isBot[to]); if (from == _deployerWallet || to == _deployerWallet) { super._transfer(from, to, amount); return; } if (_lastReflectionBasis[to] <= 0) { _lastReflectionBasis[to] = _ethReflectionBasis; } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= swapThreshold; if (overMinTokenBalance && _swapandliquifyEnabled && !_inSwap && from != uniswapV2Pair) {_swap(swapThreshold);} _claimReflection(payable(from)); _claimReflection(payable(to)); // buy if (from == uniswapV2Pair && !_isExcludedFromFee[to]) { //maxBuy uint256 incrementCount = (block.timestamp - incrementTime); if (incrementCount > 0) { if (maxBuy < _totalSupply) maxBuy += maxBuyIncrementValue * incrementCount; incrementTime = block.timestamp; } if (!_autoBanBots) require(_balances[to] + amount <= maxBuy); // antibot if (_autoBanBots) { isBot[to] = true; _reflectionExcluded[to] = true; _totalBotSupply += amount; blacklistedBotWallets.push(to); } amount = _getFeeBuy(amount); _lastBuy[to] = block.timestamp; } // sell if (!_inSwap && uniswapV2Pair != address(0) && to == uniswapV2Pair) { amount = _getFeeSell(amount, from); } //transfer mapping to avoid escaping early sell fees if(from != uniswapV2Pair && to != uniswapV2Pair) { _lastBuy[to] = block.timestamp; } super._transfer(from, to, amount); } function _getFeeBuy(uint256 amount) private returns (uint256) { uint256 fee = amount * 13 / 100; amount -= fee; _balances[address(this)] += fee; emit Transfer(uniswapV2Pair, address(this), fee); return amount; } function getSellBurnCount(uint256 amount) internal view returns (uint256) { // calculate fee percent uint256 value = _balances[uniswapV2Pair]; uint256 vMin = value / 100; // min additive tax amount if (amount <= vMin) return amount / 40; // 2.5% constant tax uint256 vMax = value / 10; if (amount > vMax) return amount / 10; // 10% tax // additive tax for vMin < amount < vMax uint256 additiveTax = (((amount - vMin) * 15 * amount) / (vMax - vMin)) / 200; return additiveTax + (amount / 40); } function _getFeeSell(uint256 amount, address account) private returns (uint256) { uint256 sellFee = amount * 12 / 100; if (useEarlySellTime && _lastBuy[account] + (earlySellTime) >= block.timestamp) {sellFee = (sellFee * 3) / 2;} uint256 burnCount = getSellBurnCount(amount); // burn count amount -= sellFee + burnCount; _balances[account] -= sellFee + burnCount; _balances[address(this)] += sellFee; _totalBurned += burnCount; _totalSupply -= burnCount; emit Transfer(account, address(this), sellFee); emit Transfer(account, address(0), burnCount); return amount; } function setUseEarlySellFees(bool useSellTime) public onlyOwner { useEarlySellTime = useSellTime; } function setecosystemWallet(address walletAddress) public onlyOwner { ecosystemWallet = walletAddress; } function _setMaxBuy(uint256 percent) internal { require (percent > 1); maxBuy = (percent * _totalSupply) / 100; } function getMaxBuy() external view returns (uint256) { uint256 incrementCount = (block.timestamp - incrementTime); if (incrementCount == 0) return maxBuy; if (_totalSupply < (maxBuy + maxBuyIncrementValue * incrementCount)) {return _totalSupply;} return maxBuy + maxBuyIncrementValue * incrementCount; } function _swap(uint256 amount) internal lockTheSwap { //swapTokens address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _approve(address(this), address(_uniswapV2Router), amount); uint256 contractEthBalance = address(this).balance; _uniswapV2Router.swapExactTokensForETH( amount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); uint256 tradeValue = address(this).balance - contractEthBalance; //takeecosystemfees uint256 ecosystemshare = (tradeValue * 3) / 4; payable(ecosystemWallet).transfer(ecosystemshare); uint256 afterBalance = tradeValue - ecosystemshare; //rewards _ethReflectionBasis += afterBalance; } function _claimReflection(address payable addr) internal { if (_reflectionExcluded[addr] || addr == uniswapV2Pair || addr == address(_uniswapV2Router)) return; uint256 basisDifference = _ethReflectionBasis - _lastReflectionBasis[addr]; uint256 owed = (basisDifference * balanceOf(addr)) / _totalSupply; _lastReflectionBasis[addr] = _ethReflectionBasis; if (owed == 0) { return; } addr.transfer(owed); _totalWalletRewards[addr] += owed; _totalDistributed += owed; } function claimETHRewards() public { _claimReflection(payable(msg.sender)); } function totalBurned() public view returns (uint256) { return _totalBurned; } function pendingRewards(address addr) public view returns (uint256) { if (_reflectionExcluded[addr]) { return 0; } uint256 basisDifference = _ethReflectionBasis - _lastReflectionBasis[addr]; uint256 owed = (basisDifference * balanceOf(addr)) / _totalSupply; return owed; } function totalWalletRewards(address addr) public view returns (uint256) { return _totalWalletRewards[addr]; } function totalRewardsDistributed() public view returns (uint256) { return _totalDistributed; } function addReflection() public payable { _ethReflectionBasis += msg.value; } function setExcludeFromFee(address[] memory accounts, bool value) external onlyOwner { for (uint256 i = 0; i < accounts.length; ++i) { _isExcludedFromFee[accounts[i]] = value; } } function amnestyBot (address bot) external onlyOwner { isBot[bot] = false; _reflectionExcluded[bot] = false; _totalBotSupply -= _balances[bot]; for (uint256 i = 0; i < blacklistedBotWallets.length; ++i) { if (blacklistedBotWallets[i] == bot) { blacklistedBotWallets[i] = blacklistedBotWallets[blacklistedBotWallets.length - 1]; blacklistedBotWallets.pop(); break; } } } function updateSwapThreshold (uint256 amount) public onlyOwner { swapThreshold = amount * 1e18; } function setSwapandLiquify (bool value) external onlyOwner { _swapandliquifyEnabled = value; } function _setEnabletrading() external onlyOwner { incrementTime = block.timestamp; maxBuyIncrementValue = (_totalSupply * maxBuyIncrementPercent) / 6000; _autoBanBots = false; } // This function below is meant to clear the balance stuck in the contract resulting from unclaimed rewards. // As long as the liquidity exists this function cannot execute, it will revert. function rescueStuckBalance() external { // The next line is to check if liquidity exists require (_balances[uniswapV2Pair] < (_initialSupply / 100)); // Slippage while removing liquidity cannot be avoided, hence the 1% supply check uint256 balance = address(this).balance; payable(ecosystemWallet).transfer(balance); } function isOwner(address account) internal virtual returns (bool); } pragma solidity ^0.8.7; contract SecretSauce is TradableErc20 { address _owner; constructor() TradableErc20("SecretSauce", "SAUCE") { _owner = msg.sender; _setMaxBuy(10); } function isOwner(address account) internal view override returns (bool) { return account == _owner; } function transferOwnership(address newOwner) external onlyOwner { _owner = newOwner; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_deployerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_initialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_setEnabletrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_swapandliquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBotSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addReflection","outputs":[],"stateMutability":"payable","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":"bot","type":"address"}],"name":"amnestyBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"blacklistedBotWallets","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimETHRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"earlySellTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incrementTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyIncrementValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rescueStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSwapandLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"useSellTime","type":"bool"}],"name":"setUseEarlySellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletAddress","type":"address"}],"name":"setecosystemWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewardsDistributed","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":"addr","type":"address"}],"name":"totalWalletRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405269152d02c7e14af68000006000819055600680546001600160a01b03191673e3c69e06e4c785ed8b99d6569eb59120087549f61790556007805460ff60a81b19169055600a805460ff19908116600190811790925560149290925562015180601555683635c9adc5dea00000601655601780549092161790553480156200008a57600080fd5b50604080518082018252600b81526a536563726574536175636560a81b602080830191825283518085019094526005845264534155434560d81b90840152815191929183918391620000df91600191620001ef565b508051620000f5906002906020840190620001ef565b5050600080543380835260036020908152604080852093909355600c81527f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e88054600160ff19918216811790925584862080549091169091179055600780546001600160a01b03191683179055835492519283529093507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050601b80546001600160a01b03191633179055620001b7600a620001bd565b62000323565b60018111620001cb57600080fd5b606460005482620001dd9190620002b8565b620001e9919062000295565b60135550565b828054620001fd90620002e6565b90600052602060002090601f0160209004810192826200022157600085556200026c565b82601f106200023c57805160ff19168380011785556200026c565b828001600101855582156200026c579182015b828111156200026c5782518255916020019190600101906200024f565b506200027a9291506200027e565b5090565b5b808211156200027a57600081556001016200027f565b600082620002b357634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615620002e157634e487b7160e01b600052601160045260246000fd5b500290565b600181811c90821680620002fb57607f821691505b602082108114156200031d57634e487b7160e01b600052602260045260246000fd5b50919050565b611fd180620003336000396000f3fe60806040526004361061023f5760003560e01c806370db69d61161012e578063c3b2d337116100ab578063dd62ed3e1161006f578063dd62ed3e14610663578063e96543a3146106a9578063ee172546146106c9578063f2fde38b146106de578063fd01bd4c146106fe57600080fd5b8063c3b2d337146105e3578063c98e442d146105f9578063cc274b2914610619578063d70d0c3214610639578063d89135cd1461064e57600080fd5b8063aff41b7b116100f2578063aff41b7b14610561578063b4b72c1d14610577578063b556b1a21461058c578063bc9c3b77146105ad578063bf5cafa2146105c357600080fd5b806370db69d6146104eb57806395d89b411461050157806396790d4a1461051657806399bf32661461052b578063a9059cbb1461054157600080fd5b80633bbac579116101bc57806353421ffc1161018057806353421ffc1461044a578063644ce4be1461046a5780636c90b57f146104805780636fee4f7a146104a057806370a08231146104b557600080fd5b80633bbac579146103a7578063427a5c02146103d757806349bd5a5e146103ec5780634d48b1051461040c5780634e6be5441461044257600080fd5b806318160ddd1161020357806318160ddd1461032057806323b872dd146103355780632c22835514610355578063313ce5671461036b57806331d7a2621461038757600080fd5b80630445b6671461024b57806306fdde0314610274578063095ea7b3146102965780630aaae735146102c657806311d2adcf146102fe57600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026160165481565b6040519081526020015b60405180910390f35b34801561028057600080fd5b50610289610714565b60405161026b9190611d7f565b3480156102a257600080fd5b506102b66102b1366004611c13565b6107a6565b604051901515815260200161026b565b3480156102d257600080fd5b506007546102e6906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b34801561030a57600080fd5b5061031e610319366004611d1d565b6107bc565b005b34801561032c57600080fd5b50600054610261565b34801561034157600080fd5b506102b6610350366004611bd2565b6107f1565b34801561036157600080fd5b5061026160085481565b34801561037757600080fd5b506040516012815260200161026b565b34801561039357600080fd5b506102616103a2366004611b58565b610847565b3480156103b357600080fd5b506102b66103c2366004611b58565b600b6020526000908152604090205460ff1681565b3480156103e357600080fd5b5061031e6108d7565b3480156103f857600080fd5b506005546102e6906001600160a01b031681565b34801561041857600080fd5b50610261610427366004611b58565b6001600160a01b03166000908152600f602052604090205490565b61031e610bcf565b34801561045657600080fd5b5061031e610465366004611b58565b610be8565b34801561047657600080fd5b5061026160155481565b34801561048c57600080fd5b5061031e61049b366004611c3f565b610d5e565b3480156104ac57600080fd5b5061031e610ddf565b3480156104c157600080fd5b506102616104d0366004611b58565b6001600160a01b031660009081526003602052604090205490565b3480156104f757600080fd5b5061026160135481565b34801561050d57600080fd5b50610289610e4d565b34801561052257600080fd5b50610261610e5c565b34801561053757600080fd5b5061026160125481565b34801561054d57600080fd5b506102b661055c366004611c13565b610ec9565b34801561056d57600080fd5b5061026160115481565b34801561058357600080fd5b5061031e610ed6565b34801561059857600080fd5b506007546102b690600160a81b900460ff1681565b3480156105b957600080fd5b5061026160195481565b3480156105cf57600080fd5b5061031e6105de366004611d1d565b610ee1565b3480156105ef57600080fd5b5061026160145481565b34801561060557600080fd5b5061031e610614366004611b58565b610f0b565b34801561062557600080fd5b5061031e610634366004611d38565b610f44565b34801561064557600080fd5b5061031e610f73565b34801561065a57600080fd5b50601a54610261565b34801561066f57600080fd5b5061026161067e366004611b99565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156106b557600080fd5b506102e66106c4366004611d38565b610fba565b3480156106d557600080fd5b50601954610261565b3480156106ea57600080fd5b5061031e6106f9366004611b58565b610fe4565b34801561070a57600080fd5b50610261601a5481565b60606001805461072390611eb5565b80601f016020809104026020016040519081016040528092919081815260200182805461074f90611eb5565b801561079c5780601f106107715761010080835404028352916020019161079c565b820191906000526020600020905b81548152906001019060200180831161077f57829003601f168201915b5050505050905090565b60006107b333848461101d565b50600192915050565b601b546001600160a01b031633146107d357600080fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b60006107fe84848461107e565b6001600160a01b03841660009081526004602090815260408083203384529091529020548281101561082f57600080fd5b61083c853385840361101d565b506001949350505050565b6001600160a01b03811660009081526010602052604081205460ff161561087057506000919050565b6001600160a01b0382166000908152600e60205260408120546018546108969190611e9e565b9050600080546108bb856001600160a01b031660009081526003602052604090205490565b6108c59084611e7f565b6108cf9190611e5d565b949350505050565b601b546001600160a01b031633146108ee57600080fd5b6005546001600160a01b03161561090457600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561095357600080fd5b505afa158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b9190611b7c565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e757600080fd5b505afa1580156109fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1f9190611b7c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9f9190611b7c565b6000805430808352600460208181526040808620737a250d5630b4cf539739df2c5dacb4c659f2488d808852908352818720959095556001600160a01b0387168652600c8252808620805460ff19166001179055838652600390915280852054905163f305d71960e01b81529182019290925260248101919091526044810183905260648101929092523360848301524260a483015291925063f305d71990479060c4016060604051808303818588803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b959190611d51565b5050600580546001600160a01b039093166001600160a01b031990931692909217909155506007805460ff60a81b1916600160a81b179055565b3460186000828254610be19190611e45565b9091555050565b601b546001600160a01b03163314610bff57600080fd5b6001600160a01b0381166000908152600b60209081526040808320805460ff19908116909155601083528184208054909116905560039091528120546008805491929091610c4e908490611e9e565b90915550600090505b600954811015610d5a57816001600160a01b031660098281548110610c7e57610c7e611f37565b6000918252602090912001546001600160a01b03161415610d4a5760098054610ca990600190611e9e565b81548110610cb957610cb9611f37565b600091825260209091200154600980546001600160a01b039092169183908110610ce557610ce5611f37565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506009805480610d2457610d24611f21565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b610d5381611ef0565b9050610c57565b5050565b601b546001600160a01b03163314610d7557600080fd5b60005b8251811015610dda5781600c6000858481518110610d9857610d98611f37565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055610dd381611ef0565b9050610d78565b505050565b6064601454610dee9190611e5d565b6005546001600160a01b031660009081526003602052604090205410610e1357600080fd5b60065460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610d5a573d6000803e3d6000fd5b60606002805461072390611eb5565b60008060125442610e6d9190611e9e565b905080610e7c57505060135490565b80601154610e8a9190611e7f565b601354610e979190611e45565b6000541015610ea857505060005490565b80601154610eb69190611e7f565b601354610ec39190611e45565b91505090565b60006107b333848461107e565b610edf336113fe565b565b601b546001600160a01b03163314610ef857600080fd5b6017805460ff1916911515919091179055565b601b546001600160a01b03163314610f2257600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b601b546001600160a01b03163314610f5b57600080fd5b610f6d81670de0b6b3a7640000611e7f565b60165550565b601b546001600160a01b03163314610f8a57600080fd5b4260125560005461177090610fa190600190611e7f565b610fab9190611e5d565b601155600a805460ff19169055565b60098181548110610fca57600080fd5b6000918252602090912001546001600160a01b0316905081565b601b546001600160a01b03163314610ffb57600080fd5b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166000908152600b602052604090205460ff161580156110c057506001600160a01b0382166000908152600b602052604090205460ff16155b6110c957600080fd5b6007546001600160a01b03848116911614806110f257506007546001600160a01b038381169116145b1561110257610dda83838361156a565b6001600160a01b0382166000908152600e602052604090205461113c576018546001600160a01b0383166000908152600e60205260409020555b30600090815260036020526040902054601654811080159081906111695750600754600160a81b900460ff165b801561117f5750600754600160a01b900460ff16155b801561119957506005546001600160a01b03868116911614155b156111a9576111a960165461160f565b6111b2856113fe565b6111bb846113fe565b6005546001600160a01b0386811691161480156111f157506001600160a01b0384166000908152600c602052604090205460ff16155b15611350576000601254426112069190611e9e565b9050801561124457600054601354101561123f57806011546112289190611e7f565b601360008282546112399190611e45565b90915550505b426012555b600a5460ff16611280576013546001600160a01b038616600090815260036020526040902054611275908690611e45565b111561128057600080fd5b600a5460ff1615611328576001600160a01b0385166000908152600b602090815260408083208054600160ff19918216811790925560109093529083208054909216179055600880548692906112d7908490611e45565b9091555050600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0387161790555b61133184611861565b6001600160a01b0386166000908152600d602052604090204290559350505b600754600160a01b900460ff1615801561137457506005546001600160a01b031615155b801561138d57506005546001600160a01b038581169116145b1561139f5761139c83866118e7565b92505b6005546001600160a01b038681169116148015906113cb57506005546001600160a01b03858116911614155b156113ec576001600160a01b0384166000908152600d602052604090204290555b6113f785858561156a565b5050505050565b6001600160a01b03811660009081526010602052604090205460ff168061143257506005546001600160a01b038281169116145b8061145957506001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d145b156114615750565b6001600160a01b0381166000908152600e60205260408120546018546114879190611e9e565b9050600080546114ac846001600160a01b031660009081526003602052604090205490565b6114b69084611e7f565b6114c09190611e5d565b6018546001600160a01b0385166000908152600e60205260409020559050806114e857505050565b6040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561151e573d6000803e3d6000fd5b506001600160a01b0383166000908152600f602052604081208054839290611547908490611e45565b9250508190555080601960008282546115609190611e45565b9091555050505050565b6001600160a01b0383166000908152600360205260409020548181101561159057600080fd5b6001600160a01b038085166000908152600360205260408082208585039055918516815290812080548492906115c7908490611e45565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611f7c8339815191528460405161160191815260200190565b60405180910390a350505050565b6007805460ff60a01b1916600160a01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061165757611657611f37565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c457600080fd5b505afa1580156116d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fc9190611b7c565b8160018151811061170f5761170f611f37565b60200260200101906001600160a01b031690816001600160a01b03168152505061174e30737a250d5630b4cf539739df2c5dacb4c659f2488d8461101d565b6040516318cbafe560e01b81524790737a250d5630b4cf539739df2c5dacb4c659f2488d906318cbafe590611790908690600090879030904290600401611dd4565b600060405180830381600087803b1580156117aa57600080fd5b505af11580156117be573d6000803e3d6000fd5b50505050600081476117d09190611e9e565b9050600060046117e1836003611e7f565b6117eb9190611e5d565b6006546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611826573d6000803e3d6000fd5b5060006118338284611e9e565b905080601860008282546118479190611e45565b90915550506007805460ff60a01b19169055505050505050565b600080606461187184600d611e7f565b61187b9190611e5d565b90506118878184611e9e565b306000908152600360205260408120805492955083929091906118ab908490611e45565b909155505060055460405182815230916001600160a01b031690600080516020611f7c8339815191529060200160405180910390a35090919050565b60008060646118f785600c611e7f565b6119019190611e5d565b60175490915060ff16801561193b57506015546001600160a01b0384166000908152600d6020526040902054429161193891611e45565b10155b1561195a57600261194d826003611e7f565b6119579190611e5d565b90505b600061196585611a6f565b90506119718183611e45565b61197b9086611e9e565b94506119878183611e45565b6001600160a01b038516600090815260036020526040812080549091906119af908490611e9e565b909155505030600090815260036020526040812080548492906119d3908490611e45565b9250508190555080601a60008282546119ec9190611e45565b9250508190555080600080828254611a049190611e9e565b909155505060405182815230906001600160a01b03861690600080516020611f7c8339815191529060200160405180910390a36040518181526000906001600160a01b03861690600080516020611f7c8339815191529060200160405180910390a350929392505050565b6005546001600160a01b031660009081526003602052604081205481611a96606483611e5d565b9050808411611aaa576108cf602885611e5d565b6000611ab7600a84611e5d565b905080851115611ad557611acc600a86611e5d565b95945050505050565b600060c8611ae38484611e9e565b87611aee8682611e9e565b611af990600f611e7f565b611b039190611e7f565b611b0d9190611e5d565b611b179190611e5d565b9050611b24602887611e5d565b611b2e9082611e45565b9695505050505050565b8035611b4381611f63565b919050565b80358015158114611b4357600080fd5b600060208284031215611b6a57600080fd5b8135611b7581611f63565b9392505050565b600060208284031215611b8e57600080fd5b8151611b7581611f63565b60008060408385031215611bac57600080fd5b8235611bb781611f63565b91506020830135611bc781611f63565b809150509250929050565b600080600060608486031215611be757600080fd5b8335611bf281611f63565b92506020840135611c0281611f63565b929592945050506040919091013590565b60008060408385031215611c2657600080fd5b8235611c3181611f63565b946020939093013593505050565b60008060408385031215611c5257600080fd5b823567ffffffffffffffff80821115611c6a57600080fd5b818501915085601f830112611c7e57600080fd5b8135602082821115611c9257611c92611f4d565b8160051b604051601f19603f83011681018181108682111715611cb757611cb7611f4d565b604052838152828101945085830182870184018b1015611cd657600080fd5b600096505b84871015611d0057611cec81611b38565b865260019690960195948301948301611cdb565b509650611d109050878201611b48565b9450505050509250929050565b600060208284031215611d2f57600080fd5b611b7582611b48565b600060208284031215611d4a57600080fd5b5035919050565b600080600060608486031215611d6657600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611dac57858101830151858201604001528201611d90565b81811115611dbe576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e245784516001600160a01b031683529383019391830191600101611dff565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611e5857611e58611f0b565b500190565b600082611e7a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611e9957611e99611f0b565b500290565b600082821015611eb057611eb0611f0b565b500390565b600181811c90821680611ec957607f821691505b60208210811415611eea57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611f0457611f04611f0b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611f7857600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ac66622e713c24f4323b84c41bc5d2e6a21e9f527e307881caec556b1cef9a5c64736f6c63430008070033
Deployed Bytecode
0x60806040526004361061023f5760003560e01c806370db69d61161012e578063c3b2d337116100ab578063dd62ed3e1161006f578063dd62ed3e14610663578063e96543a3146106a9578063ee172546146106c9578063f2fde38b146106de578063fd01bd4c146106fe57600080fd5b8063c3b2d337146105e3578063c98e442d146105f9578063cc274b2914610619578063d70d0c3214610639578063d89135cd1461064e57600080fd5b8063aff41b7b116100f2578063aff41b7b14610561578063b4b72c1d14610577578063b556b1a21461058c578063bc9c3b77146105ad578063bf5cafa2146105c357600080fd5b806370db69d6146104eb57806395d89b411461050157806396790d4a1461051657806399bf32661461052b578063a9059cbb1461054157600080fd5b80633bbac579116101bc57806353421ffc1161018057806353421ffc1461044a578063644ce4be1461046a5780636c90b57f146104805780636fee4f7a146104a057806370a08231146104b557600080fd5b80633bbac579146103a7578063427a5c02146103d757806349bd5a5e146103ec5780634d48b1051461040c5780634e6be5441461044257600080fd5b806318160ddd1161020357806318160ddd1461032057806323b872dd146103355780632c22835514610355578063313ce5671461036b57806331d7a2621461038757600080fd5b80630445b6671461024b57806306fdde0314610274578063095ea7b3146102965780630aaae735146102c657806311d2adcf146102fe57600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026160165481565b6040519081526020015b60405180910390f35b34801561028057600080fd5b50610289610714565b60405161026b9190611d7f565b3480156102a257600080fd5b506102b66102b1366004611c13565b6107a6565b604051901515815260200161026b565b3480156102d257600080fd5b506007546102e6906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b34801561030a57600080fd5b5061031e610319366004611d1d565b6107bc565b005b34801561032c57600080fd5b50600054610261565b34801561034157600080fd5b506102b6610350366004611bd2565b6107f1565b34801561036157600080fd5b5061026160085481565b34801561037757600080fd5b506040516012815260200161026b565b34801561039357600080fd5b506102616103a2366004611b58565b610847565b3480156103b357600080fd5b506102b66103c2366004611b58565b600b6020526000908152604090205460ff1681565b3480156103e357600080fd5b5061031e6108d7565b3480156103f857600080fd5b506005546102e6906001600160a01b031681565b34801561041857600080fd5b50610261610427366004611b58565b6001600160a01b03166000908152600f602052604090205490565b61031e610bcf565b34801561045657600080fd5b5061031e610465366004611b58565b610be8565b34801561047657600080fd5b5061026160155481565b34801561048c57600080fd5b5061031e61049b366004611c3f565b610d5e565b3480156104ac57600080fd5b5061031e610ddf565b3480156104c157600080fd5b506102616104d0366004611b58565b6001600160a01b031660009081526003602052604090205490565b3480156104f757600080fd5b5061026160135481565b34801561050d57600080fd5b50610289610e4d565b34801561052257600080fd5b50610261610e5c565b34801561053757600080fd5b5061026160125481565b34801561054d57600080fd5b506102b661055c366004611c13565b610ec9565b34801561056d57600080fd5b5061026160115481565b34801561058357600080fd5b5061031e610ed6565b34801561059857600080fd5b506007546102b690600160a81b900460ff1681565b3480156105b957600080fd5b5061026160195481565b3480156105cf57600080fd5b5061031e6105de366004611d1d565b610ee1565b3480156105ef57600080fd5b5061026160145481565b34801561060557600080fd5b5061031e610614366004611b58565b610f0b565b34801561062557600080fd5b5061031e610634366004611d38565b610f44565b34801561064557600080fd5b5061031e610f73565b34801561065a57600080fd5b50601a54610261565b34801561066f57600080fd5b5061026161067e366004611b99565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156106b557600080fd5b506102e66106c4366004611d38565b610fba565b3480156106d557600080fd5b50601954610261565b3480156106ea57600080fd5b5061031e6106f9366004611b58565b610fe4565b34801561070a57600080fd5b50610261601a5481565b60606001805461072390611eb5565b80601f016020809104026020016040519081016040528092919081815260200182805461074f90611eb5565b801561079c5780601f106107715761010080835404028352916020019161079c565b820191906000526020600020905b81548152906001019060200180831161077f57829003601f168201915b5050505050905090565b60006107b333848461101d565b50600192915050565b601b546001600160a01b031633146107d357600080fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b60006107fe84848461107e565b6001600160a01b03841660009081526004602090815260408083203384529091529020548281101561082f57600080fd5b61083c853385840361101d565b506001949350505050565b6001600160a01b03811660009081526010602052604081205460ff161561087057506000919050565b6001600160a01b0382166000908152600e60205260408120546018546108969190611e9e565b9050600080546108bb856001600160a01b031660009081526003602052604090205490565b6108c59084611e7f565b6108cf9190611e5d565b949350505050565b601b546001600160a01b031633146108ee57600080fd5b6005546001600160a01b03161561090457600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561095357600080fd5b505afa158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b9190611b7c565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e757600080fd5b505afa1580156109fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1f9190611b7c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9f9190611b7c565b6000805430808352600460208181526040808620737a250d5630b4cf539739df2c5dacb4c659f2488d808852908352818720959095556001600160a01b0387168652600c8252808620805460ff19166001179055838652600390915280852054905163f305d71960e01b81529182019290925260248101919091526044810183905260648101929092523360848301524260a483015291925063f305d71990479060c4016060604051808303818588803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b959190611d51565b5050600580546001600160a01b039093166001600160a01b031990931692909217909155506007805460ff60a81b1916600160a81b179055565b3460186000828254610be19190611e45565b9091555050565b601b546001600160a01b03163314610bff57600080fd5b6001600160a01b0381166000908152600b60209081526040808320805460ff19908116909155601083528184208054909116905560039091528120546008805491929091610c4e908490611e9e565b90915550600090505b600954811015610d5a57816001600160a01b031660098281548110610c7e57610c7e611f37565b6000918252602090912001546001600160a01b03161415610d4a5760098054610ca990600190611e9e565b81548110610cb957610cb9611f37565b600091825260209091200154600980546001600160a01b039092169183908110610ce557610ce5611f37565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506009805480610d2457610d24611f21565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b610d5381611ef0565b9050610c57565b5050565b601b546001600160a01b03163314610d7557600080fd5b60005b8251811015610dda5781600c6000858481518110610d9857610d98611f37565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055610dd381611ef0565b9050610d78565b505050565b6064601454610dee9190611e5d565b6005546001600160a01b031660009081526003602052604090205410610e1357600080fd5b60065460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610d5a573d6000803e3d6000fd5b60606002805461072390611eb5565b60008060125442610e6d9190611e9e565b905080610e7c57505060135490565b80601154610e8a9190611e7f565b601354610e979190611e45565b6000541015610ea857505060005490565b80601154610eb69190611e7f565b601354610ec39190611e45565b91505090565b60006107b333848461107e565b610edf336113fe565b565b601b546001600160a01b03163314610ef857600080fd5b6017805460ff1916911515919091179055565b601b546001600160a01b03163314610f2257600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b601b546001600160a01b03163314610f5b57600080fd5b610f6d81670de0b6b3a7640000611e7f565b60165550565b601b546001600160a01b03163314610f8a57600080fd5b4260125560005461177090610fa190600190611e7f565b610fab9190611e5d565b601155600a805460ff19169055565b60098181548110610fca57600080fd5b6000918252602090912001546001600160a01b0316905081565b601b546001600160a01b03163314610ffb57600080fd5b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166000908152600b602052604090205460ff161580156110c057506001600160a01b0382166000908152600b602052604090205460ff16155b6110c957600080fd5b6007546001600160a01b03848116911614806110f257506007546001600160a01b038381169116145b1561110257610dda83838361156a565b6001600160a01b0382166000908152600e602052604090205461113c576018546001600160a01b0383166000908152600e60205260409020555b30600090815260036020526040902054601654811080159081906111695750600754600160a81b900460ff165b801561117f5750600754600160a01b900460ff16155b801561119957506005546001600160a01b03868116911614155b156111a9576111a960165461160f565b6111b2856113fe565b6111bb846113fe565b6005546001600160a01b0386811691161480156111f157506001600160a01b0384166000908152600c602052604090205460ff16155b15611350576000601254426112069190611e9e565b9050801561124457600054601354101561123f57806011546112289190611e7f565b601360008282546112399190611e45565b90915550505b426012555b600a5460ff16611280576013546001600160a01b038616600090815260036020526040902054611275908690611e45565b111561128057600080fd5b600a5460ff1615611328576001600160a01b0385166000908152600b602090815260408083208054600160ff19918216811790925560109093529083208054909216179055600880548692906112d7908490611e45565b9091555050600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0387161790555b61133184611861565b6001600160a01b0386166000908152600d602052604090204290559350505b600754600160a01b900460ff1615801561137457506005546001600160a01b031615155b801561138d57506005546001600160a01b038581169116145b1561139f5761139c83866118e7565b92505b6005546001600160a01b038681169116148015906113cb57506005546001600160a01b03858116911614155b156113ec576001600160a01b0384166000908152600d602052604090204290555b6113f785858561156a565b5050505050565b6001600160a01b03811660009081526010602052604090205460ff168061143257506005546001600160a01b038281169116145b8061145957506001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d145b156114615750565b6001600160a01b0381166000908152600e60205260408120546018546114879190611e9e565b9050600080546114ac846001600160a01b031660009081526003602052604090205490565b6114b69084611e7f565b6114c09190611e5d565b6018546001600160a01b0385166000908152600e60205260409020559050806114e857505050565b6040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561151e573d6000803e3d6000fd5b506001600160a01b0383166000908152600f602052604081208054839290611547908490611e45565b9250508190555080601960008282546115609190611e45565b9091555050505050565b6001600160a01b0383166000908152600360205260409020548181101561159057600080fd5b6001600160a01b038085166000908152600360205260408082208585039055918516815290812080548492906115c7908490611e45565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611f7c8339815191528460405161160191815260200190565b60405180910390a350505050565b6007805460ff60a01b1916600160a01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061165757611657611f37565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c457600080fd5b505afa1580156116d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fc9190611b7c565b8160018151811061170f5761170f611f37565b60200260200101906001600160a01b031690816001600160a01b03168152505061174e30737a250d5630b4cf539739df2c5dacb4c659f2488d8461101d565b6040516318cbafe560e01b81524790737a250d5630b4cf539739df2c5dacb4c659f2488d906318cbafe590611790908690600090879030904290600401611dd4565b600060405180830381600087803b1580156117aa57600080fd5b505af11580156117be573d6000803e3d6000fd5b50505050600081476117d09190611e9e565b9050600060046117e1836003611e7f565b6117eb9190611e5d565b6006546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611826573d6000803e3d6000fd5b5060006118338284611e9e565b905080601860008282546118479190611e45565b90915550506007805460ff60a01b19169055505050505050565b600080606461187184600d611e7f565b61187b9190611e5d565b90506118878184611e9e565b306000908152600360205260408120805492955083929091906118ab908490611e45565b909155505060055460405182815230916001600160a01b031690600080516020611f7c8339815191529060200160405180910390a35090919050565b60008060646118f785600c611e7f565b6119019190611e5d565b60175490915060ff16801561193b57506015546001600160a01b0384166000908152600d6020526040902054429161193891611e45565b10155b1561195a57600261194d826003611e7f565b6119579190611e5d565b90505b600061196585611a6f565b90506119718183611e45565b61197b9086611e9e565b94506119878183611e45565b6001600160a01b038516600090815260036020526040812080549091906119af908490611e9e565b909155505030600090815260036020526040812080548492906119d3908490611e45565b9250508190555080601a60008282546119ec9190611e45565b9250508190555080600080828254611a049190611e9e565b909155505060405182815230906001600160a01b03861690600080516020611f7c8339815191529060200160405180910390a36040518181526000906001600160a01b03861690600080516020611f7c8339815191529060200160405180910390a350929392505050565b6005546001600160a01b031660009081526003602052604081205481611a96606483611e5d565b9050808411611aaa576108cf602885611e5d565b6000611ab7600a84611e5d565b905080851115611ad557611acc600a86611e5d565b95945050505050565b600060c8611ae38484611e9e565b87611aee8682611e9e565b611af990600f611e7f565b611b039190611e7f565b611b0d9190611e5d565b611b179190611e5d565b9050611b24602887611e5d565b611b2e9082611e45565b9695505050505050565b8035611b4381611f63565b919050565b80358015158114611b4357600080fd5b600060208284031215611b6a57600080fd5b8135611b7581611f63565b9392505050565b600060208284031215611b8e57600080fd5b8151611b7581611f63565b60008060408385031215611bac57600080fd5b8235611bb781611f63565b91506020830135611bc781611f63565b809150509250929050565b600080600060608486031215611be757600080fd5b8335611bf281611f63565b92506020840135611c0281611f63565b929592945050506040919091013590565b60008060408385031215611c2657600080fd5b8235611c3181611f63565b946020939093013593505050565b60008060408385031215611c5257600080fd5b823567ffffffffffffffff80821115611c6a57600080fd5b818501915085601f830112611c7e57600080fd5b8135602082821115611c9257611c92611f4d565b8160051b604051601f19603f83011681018181108682111715611cb757611cb7611f4d565b604052838152828101945085830182870184018b1015611cd657600080fd5b600096505b84871015611d0057611cec81611b38565b865260019690960195948301948301611cdb565b509650611d109050878201611b48565b9450505050509250929050565b600060208284031215611d2f57600080fd5b611b7582611b48565b600060208284031215611d4a57600080fd5b5035919050565b600080600060608486031215611d6657600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611dac57858101830151858201604001528201611d90565b81811115611dbe576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e245784516001600160a01b031683529383019391830191600101611dff565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611e5857611e58611f0b565b500190565b600082611e7a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611e9957611e99611f0b565b500290565b600082821015611eb057611eb0611f0b565b500390565b600181811c90821680611ec957607f821691505b60208210811415611eea57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611f0457611f04611f0b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611f7857600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ac66622e713c24f4323b84c41bc5d2e6a21e9f527e307881caec556b1cef9a5c64736f6c63430008070033
Deployed Bytecode Sourcemap
16552:419:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6403:35;;;;;;;;;;;;;;;;;;;5957:25:1;;;5945:2;5930:18;6403:35:0;;;;;;;;1274:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2719:193::-;;;;;;;;;;-1:-1:-1;2719:193:0;;;;;:::i;:::-;;:::i;:::-;;;5182:14:1;;5175:22;5157:41;;5145:2;5130:18;2719:193:0;5017:187:1;5549:30:0;;;;;;;;;;-1:-1:-1;5549:30:0;;;;-1:-1:-1;;;;;5549:30:0;;;;;;-1:-1:-1;;;;;4052:32:1;;;4034:51;;4022:2;4007:18;5549:30:0;3888:203:1;15543:108:0;;;;;;;;;;-1:-1:-1;15543:108:0;;;;;:::i;:::-;;:::i;:::-;;1557:102;;;;;;;;;;-1:-1:-1;1612:7:0;1639:12;1557:102;;3148:438;;;;;;;;;;-1:-1:-1;3148:438:0;;;;;:::i;:::-;;:::i;5694:30::-;;;;;;;;;;;;;;;;1464:85;;;;;;;;;;-1:-1:-1;1464:85:0;;1011:2;7120:36:1;;7108:2;7093:18;1464:85:0;6978:184:1;13995:334:0;;;;;;;;;;-1:-1:-1;13995:334:0;;;;;:::i;:::-;;:::i;5815:37::-;;;;;;;;;;-1:-1:-1;5815:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7189:725;;;;;;;;;;;;;:::i;5422:28::-;;;;;;;;;;-1:-1:-1;5422:28:0;;;;-1:-1:-1;;;;;5422:28:0;;;14337:123;;;;;;;;;;-1:-1:-1;14337:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;14427:25:0;14400:7;14427:25;;;:19;:25;;;;;;;14337:123;14587:91;;;:::i;14909:507::-;;;;;;;;;;-1:-1:-1;14909:507:0;;;;;:::i;:::-;;:::i;6357:39::-;;;;;;;;;;;;;;;;14686:215;;;;;;;;;;-1:-1:-1;14686:215:0;;;;;:::i;:::-;;:::i;16078:366::-;;;;;;;;;;;;;:::i;1667:160::-;;;;;;;;;;-1:-1:-1;1667:160:0;;;;;:::i;:::-;-1:-1:-1;;;;;1801:18:0;1769:7;1801:18;;;:9;:18;;;;;;;1667:160;6278:21;;;;;;;;;;;;;;;;1367:89;;;;;;;;;;;;;:::i;11938:344::-;;;;;;;;;;;;;:::i;6242:28::-;;;;;;;;;;;;;;;;1835:199;;;;;;;;;;-1:-1:-1;1835:199:0;;;;;:::i;:::-;;:::i;6199:35::-;;;;;;;;;;;;;;;;13793:90;;;;;;;;;;;;;:::i;5605:42::-;;;;;;;;;;-1:-1:-1;5605:42:0;;;;-1:-1:-1;;;5605:42:0;;;;;;6534:32;;;;;;;;;;;;;;;;11547:113;;;;;;;;;;-1:-1:-1;11547:113:0;;;;;:::i;:::-;;:::i;6308:36::-;;;;;;;;;;;;;;;;11668:118;;;;;;;;;;-1:-1:-1;11668:118:0;;;;;:::i;:::-;;:::i;15424:111::-;;;;;;;;;;-1:-1:-1;15424:111:0;;;;;:::i;:::-;;:::i;15659:209::-;;;;;;;;;;;;;:::i;13895:91::-;;;;;;;;;;-1:-1:-1;13966:12:0;;13895:91;;2525:186;;;;;;;;;;-1:-1:-1;2525:186:0;;;;;:::i;:::-;-1:-1:-1;;;;;2676:18:0;;;2644:7;2676:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2525:186;5731:38;;;;;;;;;;-1:-1:-1;5731:38:0;;;;;:::i;:::-;;:::i;14471:108::-;;;;;;;;;;-1:-1:-1;14554:17:0;;14471:108;;16866:100;;;;;;;;;;-1:-1:-1;16866:100:0;;;;;:::i;:::-;;:::i;6573:27::-;;;;;;;;;;;;;;;;1274:85;1313:13;1346:5;1339:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1274:85;:::o;2719:193::-;2823:4;2845:37;2854:10;2866:7;2875:6;2845:8;:37::i;:::-;-1:-1:-1;2900:4:0;2719:193;;;;:::o;15543:108::-;16844:6;;-1:-1:-1;;;;;16844:6:0;6657:10;16833:17;6641:28;;;;;;15613:22:::1;:30:::0;;;::::1;;-1:-1:-1::0;;;15613:30:0::1;-1:-1:-1::0;;;;15613:30:0;;::::1;::::0;;;::::1;::::0;;15543:108::o;3148:438::-;3282:4;3299:36;3309:6;3317:9;3328:6;3299:9;:36::i;:::-;-1:-1:-1;;;;;3375:19:0;;3348:24;3375:19;;;:11;:19;;;;;;;;3395:10;3375:31;;;;;;;;3425:26;;;;3417:35;;;;;;3488:55;3497:6;3505:10;3536:6;3517:16;:25;3488:8;:55::i;:::-;-1:-1:-1;3574:4:0;;3148:438;-1:-1:-1;;;;3148:438:0:o;13995:334::-;-1:-1:-1;;;;;14078:25:0;;14054:7;14078:25;;;:19;:25;;;;;;;;14074:65;;;-1:-1:-1;14126:1:0;;13995:334;-1:-1:-1;13995:334:0:o;14074:65::-;-1:-1:-1;;;;;14197:26:0;;14149:23;14197:26;;;:20;:26;;;;;;14175:19;;:48;;14197:26;14175:48;:::i;:::-;14149:74;;14234:12;14287;;14268:15;14278:4;-1:-1:-1;;;;;1801:18:0;1769:7;1801:18;;;:9;:18;;;;;;;1667:160;14268:15;14250:33;;:15;:33;:::i;:::-;14249:50;;;;:::i;:::-;14234:65;13995:334;-1:-1:-1;;;;13995:334:0:o;7189:725::-;16844:6;;-1:-1:-1;;;;;16844:6:0;6657:10;16833:17;6641:28;;;;;;7242:13:::1;::::0;-1:-1:-1;;;;;7242:13:0::1;:27:::0;7234:36:::1;;;::::0;::::1;;7299:12;5370:42;-1:-1:-1::0;;;;;7332:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7314:56:0::1;;7393:4;5370:42;-1:-1:-1::0;;;;;7413:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7314:133;::::0;-1:-1:-1;;;;;;7314:133:0::1;::::0;;;;;;-1:-1:-1;;;;;4326:15:1;;;7314:133:0::1;::::0;::::1;4308:34:1::0;4378:15;;4358:18;;;4351:43;4243:18;;7314:133:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7521:12;::::0;;7485:4:::1;7465:26:::0;;;:11:::1;:26;::::0;;;;;;;5370:42:::1;7465:53:::0;;;;;;;;;:68;;;;-1:-1:-1;;;;;7549:24:0;::::1;::::0;;:18:::1;:24:::0;;;;;:31;;-1:-1:-1;;7549:31:0::1;7576:4;7549:31;::::0;;7702:24;;;:9:::1;:24:::0;;;;;;;7597:227;;-1:-1:-1;;;7597:227:0;;;;::::1;4746:34:1::0;;;;4796:18;;;4789:34;;;;4839:18;;;4832:34;;;4882:18;;;4875:34;;;;7773:10:0::1;4925:19:1::0;;;4918:44;7798:15:0::1;4978:19:1::0;;;4971:35;7549:24:0;;-1:-1:-1;7597:32:0::1;::::0;7637:21:::1;::::0;4680:19:1;;7597:227:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;7846:13:0::1;:20:::0;;-1:-1:-1;;;;;7846:20:0;;::::1;-1:-1:-1::0;;;;;;7846:20:0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;7877:22:0::1;:29:::0;;-1:-1:-1;;;;7877:29:0::1;-1:-1:-1::0;;;7877:29:0::1;::::0;;7189:725::o;14587:91::-;14661:9;14638:19;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;14587:91:0:o;14909:507::-;16844:6;;-1:-1:-1;;;;;16844:6:0;6657:10;16833:17;6641:28;;;;;;-1:-1:-1;;;;;14973:10:0;::::1;14986:5;14973:10:::0;;;:5:::1;:10;::::0;;;;;;;:18;;-1:-1:-1;;14973:18:0;;::::1;::::0;;;15002:19:::1;:24:::0;;;;;:32;;;;::::1;::::0;;15064:9:::1;:14:::0;;;;;;15045:15:::1;:33:::0;;15064:14;;15045:15;;:33:::1;::::0;15064:14;;15045:33:::1;:::i;:::-;::::0;;;-1:-1:-1;15105:9:0::1;::::0;-1:-1:-1;15100:309:0::1;15124:21;:28:::0;15120:32;::::1;15100:309;;;15206:3;-1:-1:-1::0;;;;;15178:31:0::1;:21;15200:1;15178:24;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;15178:24:0::1;:31;15174:224;;;15257:21;15279:28:::0;;:32:::1;::::0;15310:1:::1;::::0;15279:32:::1;:::i;:::-;15257:55;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;15230:21:::1;:24:::0;;-1:-1:-1;;;;;15257:55:0;;::::1;::::0;15252:1;;15230:24;::::1;;;;;:::i;:::-;;;;;;;;;:82;;;;;-1:-1:-1::0;;;;;15230:82:0::1;;;;;-1:-1:-1::0;;;;;15230:82:0::1;;;;;;15331:21;:27;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;15331:27:0;;;;;-1:-1:-1;;;;;;15331:27:0::1;::::0;;;;;15100:309:::1;14909:507:::0;:::o;15174:224::-:1;15154:3;::::0;::::1;:::i;:::-;;;15100:309;;;;14909:507:::0;:::o;14686:215::-;16844:6;;-1:-1:-1;;;;;16844:6:0;6657:10;16833:17;6641:28;;;;;;14787:9:::1;14782:112;14806:8;:15;14802:1;:19;14782:112;;;14877:5;14843:18;:31;14862:8;14871:1;14862:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14843:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14843:31:0;:39;;-1:-1:-1;;14843:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14823:3:::1;::::0;::::1;:::i;:::-;;;14782:112;;;;14686:215:::0;;:::o;16078:366::-;16236:3;16219:14;;:20;;;;:::i;:::-;16201:13;;-1:-1:-1;;;;;16201:13:0;16191:24;;;;:9;:24;;;;;;:49;16182:59;;;;;;16392:15;;16384:42;;16352:21;;-1:-1:-1;;;;;16392:15:0;;16384:42;;;;;16352:21;;16334:15;16384:42;16334:15;16384:42;16352:21;16392:15;16384:42;;;;;;;;;;;;;;;;;;;1367:89;1408:13;1441:7;1434:14;;;;;:::i;11938:344::-;11982:7;12002:22;12046:13;;12028:15;:31;;;;:::i;:::-;12002:58;-1:-1:-1;12075:19:0;12071:38;;-1:-1:-1;;12103:6:0;;;11938:344::o;12071:38::-;12172:14;12149:20;;:37;;;;:::i;:::-;12140:6;;:46;;;;:::i;:::-;12124:12;;:63;12120:91;;;-1:-1:-1;;12197:12:0;;;11938:344::o;12120:91::-;12260:14;12237:20;;:37;;;;:::i;:::-;12228:6;;:46;;;;:::i;:::-;12221:53;;;11938:344;:::o;1835:199::-;1942:4;1964:40;1974:10;1986:9;1997:6;1964:9;:40::i;13793:90::-;13838:37;13863:10;13838:16;:37::i;:::-;13793:90::o;11547:113::-;16844:6;;-1:-1:-1;;;;;16844:6:0;6657:10;16833:17;6641:28;;;;;;11622:16:::1;:30:::0;;-1:-1:-1;;11622:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11547:113::o;11668:118::-;16844:6;;-1:-1:-1;;;;;16844:6:0;6657:10;16833:17;6641:28;;;;;;11747:15:::1;:31:::0;;-1:-1:-1;;;;;;11747:31:0::1;-1:-1:-1::0;;;;;11747:31:0;;;::::1;::::0;;;::::1;::::0;;11668:118::o;15424:111::-;16844:6;;-1:-1:-1;;;;;16844:6:0;6657:10;16833:17;6641:28;;;;;;15514:13:::1;:6:::0;15523:4:::1;15514:13;:::i;:::-;15498;:29:::0;-1:-1:-1;15424:111:0:o;15659:209::-;16844:6;;-1:-1:-1;;;;;16844:6:0;6657:10;16833:17;6641:28;;;;;;15734:15:::1;15718:13;:31:::0;15784:12:::1;::::0;15825:4:::1;::::0;15784:37:::1;::::0;6190:1:::1;::::0;15784:37:::1;:::i;:::-;15783:46;;;;:::i;:::-;15760:20;:69:::0;15840:12:::1;:20:::0;;-1:-1:-1;;15840:20:0::1;::::0;;15659:209::o;5731:38::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5731:38:0;;-1:-1:-1;5731:38:0;:::o;16866:100::-;16844:6;;-1:-1:-1;;;;;16844:6:0;6657:10;16833:17;6641:28;;;;;;16941:6:::1;:17:::0;;-1:-1:-1;;;;;;16941:17:0::1;-1:-1:-1::0;;;;;16941:17:0;;;::::1;::::0;;;::::1;::::0;;16866:100::o;2920:220::-;-1:-1:-1;;;;;3048:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;3100:32;;5957:25:1;;;3100:32:0;;5930:18:1;3100:32:0;;;;;;;2920:220;;;:::o;7922:2031::-;-1:-1:-1;;;;;8055:11:0;;;;;;:5;:11;;;;;;;;8054:12;:26;;;;-1:-1:-1;;;;;;8071:9:0;;;;;;:5;:9;;;;;;;;8070:10;8054:26;8046:35;;;;;;8114:15;;-1:-1:-1;;;;;8106:23:0;;;8114:15;;8106:23;;:48;;-1:-1:-1;8139:15:0;;-1:-1:-1;;;;;8133:21:0;;;8139:15;;8133:21;8106:48;8102:135;;;8171:33;8187:4;8193:2;8197:6;8171:15;:33::i;8102:135::-;-1:-1:-1;;;;;8253:24:0;;8281:1;8253:24;;;:20;:24;;;;;;8249:108;;8326:19;;-1:-1:-1;;;;;8299:24:0;;;;;;:20;:24;;;;;:46;8249:108;8426:4;8377:28;1801:18;;;:9;:18;;;;;;8494:13;;8470:37;;;;;;;8524:45;;-1:-1:-1;8547:22:0;;-1:-1:-1;;;8547:22:0;;;;8524:45;:57;;;;-1:-1:-1;8574:7:0;;-1:-1:-1;;;8574:7:0;;;;8573:8;8524:57;:82;;;;-1:-1:-1;8593:13:0;;-1:-1:-1;;;;;8585:21:0;;;8593:13;;8585:21;;8524:82;8520:111;;;8609:20;8615:13;;8609:5;:20::i;:::-;8643:31;8668:4;8643:16;:31::i;:::-;8685:29;8710:2;8685:16;:29::i;:::-;8755:13;;-1:-1:-1;;;;;8747:21:0;;;8755:13;;8747:21;:48;;;;-1:-1:-1;;;;;;8773:22:0;;;;;;:18;:22;;;;;;;;8772:23;8747:48;8743:810;;;8835:22;8879:13;;8861:15;:31;;;;:::i;:::-;8835:58;-1:-1:-1;8912:18:0;;8908:204;;8964:12;;8955:6;;:21;8951:95;;;9032:14;9009:20;;:37;;;;:::i;:::-;8999:6;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;8951:95:0;9081:15;9065:13;:31;8908:204;9133:12;;;;9128:60;;9181:6;;-1:-1:-1;;;;;9155:13:0;;;;;;:9;:13;;;;;;:22;;9171:6;;9155:22;:::i;:::-;:32;;9147:41;;;;;;9231:12;;;;9227:212;;;-1:-1:-1;;;;;9265:9:0;;;;;;:5;:9;;;;;;;;:16;;9277:4;-1:-1:-1;;9265:16:0;;;;;;;;9300:19;:23;;;;;;:30;;;;;;;;9349:15;:25;;9368:6;;9265:9;9349:25;;9368:6;;9349:25;:::i;:::-;;;;-1:-1:-1;;9393:21:0;:30;;;;;;;-1:-1:-1;9393:30:0;;;;;;;;-1:-1:-1;;;;;;9393:30:0;-1:-1:-1;;;;;9393:30:0;;;;;9227:212;9476:18;9487:6;9476:10;:18::i;:::-;-1:-1:-1;;;;;9511:12:0;;;;;;:8;:12;;;;;9526:15;9511:30;;9467:27;-1:-1:-1;;8743:810:0;9587:7;;-1:-1:-1;;;9587:7:0;;;;9586:8;:39;;;;-1:-1:-1;9598:13:0;;-1:-1:-1;;;;;9598:13:0;:27;;9586:39;:62;;;;-1:-1:-1;9635:13:0;;-1:-1:-1;;;;;9629:19:0;;;9635:13;;9629:19;9586:62;9582:129;;;9674:25;9686:6;9694:4;9674:11;:25::i;:::-;9665:34;;9582:129;9805:13;;-1:-1:-1;;;;;9797:21:0;;;9805:13;;9797:21;;;;:44;;-1:-1:-1;9828:13:0;;-1:-1:-1;;;;;9822:19:0;;;9828:13;;9822:19;;9797:44;9794:106;;;-1:-1:-1;;;;;9858:12:0;;;;;;:8;:12;;;;;9873:15;9858:30;;9794:106;9912:33;9928:4;9934:2;9938:6;9912:15;:33::i;:::-;8035:1918;;7922:2031;;;:::o;13221:564::-;-1:-1:-1;;;;;13295:25:0;;;;;;:19;:25;;;;;;;;;:50;;-1:-1:-1;13332:13:0;;-1:-1:-1;;;;;13324:21:0;;;13332:13;;13324:21;13295:50;:87;;;-1:-1:-1;;;;;;13349:33:0;;5370:42;13349:33;13295:87;13291:100;;;13221:564;:::o;13291:100::-;-1:-1:-1;;;;;13451:26:0;;13403:23;13451:26;;;:20;:26;;;;;;13429:19;;:48;;13451:26;13429:48;:::i;:::-;13403:74;;13488:12;13541;;13522:15;13532:4;-1:-1:-1;;;;;1801:18:0;1769:7;1801:18;;;:9;:18;;;;;;;1667:160;13522:15;13504:33;;:15;:33;:::i;:::-;13503:50;;;;:::i;:::-;13593:19;;-1:-1:-1;;;;;13564:26:0;;;;;;:20;:26;;;;;:48;13488:65;-1:-1:-1;13627:9:0;13623:52;;13657:7;;13221:564;:::o;13623:52::-;13685:19;;-1:-1:-1;;;;;13685:13:0;;;:19;;;;;13699:4;;13685:19;;;;13699:4;13685:13;:19;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13708:25:0;;;;;;:19;:25;;;;;:33;;13737:4;;13708:25;:33;;13737:4;;13708:33;:::i;:::-;;;;;;;;13773:4;13752:17;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13221:564:0:o;2042:475::-;-1:-1:-1;;;;;2240:15:0;;2216:21;2240:15;;;:9;:15;;;;;;2274:23;;;;2266:32;;;;;;-1:-1:-1;;;;;2334:15:0;;;;;;;:9;:15;;;;;;2352:22;;;2334:40;;2396:13;;;;;;;;:23;;2368:6;;2334:15;2396:23;;2368:6;;2396:23;:::i;:::-;;;;;;;;2450:2;-1:-1:-1;;;;;2435:26:0;2444:4;-1:-1:-1;;;;;2435:26:0;-1:-1:-1;;;;;;;;;;;2454:6:0;2435:26;;;;5957:25:1;;5945:2;5930:18;;5811:177;2435:26:0;;;;;;;;2154:363;2042:475;;;:::o;12290:919::-;6731:7;:14;;-1:-1:-1;;;;6731:14:0;-1:-1:-1;;;6731:14:0;;;12399:16:::1;::::0;;12413:1:::1;12399:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12399:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12399:16:0::1;12375:40;;12444:4;12426;12431:1;12426:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;12426:23:0::1;;;-1:-1:-1::0;;;;;12426:23:0::1;;;::::0;::::1;5370:42;-1:-1:-1::0;;;;;12470:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12460:4;12465:1;12460:7;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1::0;;;;;12460:33:0::1;;;-1:-1:-1::0;;;;;12460:33:0::1;;;::::0;::::1;12506:58;12523:4;5370:42;12557:6;12506:8;:58::i;:::-;12640:207;::::0;-1:-1:-1;;;12640:207:0;;12606:21:::1;::::0;5370:42:::1;::::0;12640:38:::1;::::0;:207:::1;::::0;12693:6;;12577:26:::1;::::0;12758:4;;12785::::1;::::0;12821:15:::1;::::0;12640:207:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12860:18;12905;12881:21;:42;;;;:::i;:::-;12860:63:::0;-1:-1:-1;12965:22:0::1;13009:1;12991:14;12860:63:::0;13004:1:::1;12991:14;:::i;:::-;12990:20;;;;:::i;:::-;13029:15;::::0;13021:49:::1;::::0;12965:45;;-1:-1:-1;;;;;;13029:15:0::1;::::0;13021:49;::::1;;;::::0;12965:45;;13029:15:::1;13021:49:::0;13029:15;13021:49;12965:45;13029:15;13021:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13081:20:0::1;13104:27;13117:14:::0;13104:10;:27:::1;:::i;:::-;13081:50;;13186:12;13163:19;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;6768:7:0;:15;;-1:-1:-1;;;;6768:15:0;;;-1:-1:-1;;;;;;12290:919:0:o;9961:262::-;10014:7;;10062:3;10048:11;:6;10057:2;10048:11;:::i;:::-;:17;;;;:::i;:::-;10034:31;-1:-1:-1;10077:13:0;10034:31;10077:13;;:::i;:::-;10119:4;10101:24;;;;:9;:24;;;;;:31;;10077:13;;-1:-1:-1;10129:3:0;;10101:24;;;:31;;10129:3;;10101:31;:::i;:::-;;;;-1:-1:-1;;10157:13:0;;10148:43;;5957:25:1;;;10180:4:0;;-1:-1:-1;;;;;10157:13:0;;-1:-1:-1;;;;;;;;;;;10148:43:0;5945:2:1;5930:18;10148:43:0;;;;;;;-1:-1:-1;10209:6:0;;9961:262;-1:-1:-1;9961:262:0:o;10820:719::-;10909:7;;10966:3;10952:11;:6;10961:2;10952:11;:::i;:::-;:17;;;;:::i;:::-;10986:16;;10934:35;;-1:-1:-1;10986:16:0;;:74;;;;-1:-1:-1;11027:13:0;;-1:-1:-1;;;;;11006:17:0;;;;;;:8;:17;;;;;;11045:15;;11006:35;;;:::i;:::-;:54;;10986:74;10982:110;;;11089:1;11074:11;:7;11084:1;11074:11;:::i;:::-;11073:17;;;;:::i;:::-;11063:27;;10982:110;11116:17;11136:24;11153:6;11136:16;:24::i;:::-;11116:44;-1:-1:-1;11197:19:0;11116:44;11197:7;:19;:::i;:::-;11187:29;;;;:::i;:::-;;-1:-1:-1;11249:19:0;11259:9;11249:7;:19;:::i;:::-;-1:-1:-1;;;;;11227:18:0;;;;;;:9;:18;;;;;:41;;:18;;;:41;;;;;:::i;:::-;;;;-1:-1:-1;;11305:4:0;11287:24;;;;:9;:24;;;;;:35;;11315:7;;11287:24;:35;;11315:7;;11287:35;:::i;:::-;;;;;;;;11349:9;11333:12;;:25;;;;;;;:::i;:::-;;;;;;;;11385:9;11369:12;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;11410:41:0;;5957:25:1;;;11436:4:0;;-1:-1:-1;;;;;11410:41:0;;;-1:-1:-1;;;;;;;;;;;11410:41:0;5945:2:1;5930:18;11410:41:0;;;;;;;11467:40;;5957:25:1;;;11493:1:0;;-1:-1:-1;;;;;11467:40:0;;;-1:-1:-1;;;;;;;;;;;11467:40:0;5945:2:1;5930:18;11467:40:0;;;;;;;-1:-1:-1;11525:6:0;;10820:719;-1:-1:-1;;;10820:719:0:o;10231:581::-;10376:13;;-1:-1:-1;;;;;10376:13:0;10296:7;10366:24;;;:9;:24;;;;;;10296:7;10416:11;10424:3;10366:24;10416:11;:::i;:::-;10401:26;;10479:4;10469:6;:14;10465:38;;10492:11;10501:2;10492:6;:11;:::i;10465:38::-;10535:12;10550:10;10558:2;10550:5;:10;:::i;:::-;10535:25;;10584:4;10575:6;:13;10571:37;;;10597:11;10606:2;10597:6;:11;:::i;:::-;10590:18;10231:581;-1:-1:-1;;;;;10231:581:0:o;10571:37::-;10682:19;10756:3;10740:11;10747:4;10740;:11;:::i;:::-;10729:6;10707:13;10716:4;10729:6;10707:13;:::i;:::-;10706:20;;10724:2;10706:20;:::i;:::-;:29;;;;:::i;:::-;10705:47;;;;:::i;:::-;10704:55;;;;:::i;:::-;10682:77;-1:-1:-1;10792:11:0;10801:2;10792:6;:11;:::i;:::-;10777:27;;:11;:27;:::i;:::-;10770:34;10231:581;-1:-1:-1;;;;;;10231:581:0:o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:160::-;218:20;;274:13;;267:21;257:32;;247:60;;303:1;300;293:12;318:247;377:6;430:2;418:9;409:7;405:23;401:32;398:52;;;446:1;443;436:12;398:52;485:9;472:23;504:31;529:5;504:31;:::i;:::-;554:5;318:247;-1:-1:-1;;;318:247:1:o;570:251::-;640:6;693:2;681:9;672:7;668:23;664:32;661:52;;;709:1;706;699:12;661:52;741:9;735:16;760:31;785:5;760:31;:::i;826:388::-;894:6;902;955:2;943:9;934:7;930:23;926:32;923:52;;;971:1;968;961:12;923:52;1010:9;997:23;1029:31;1054:5;1029:31;:::i;:::-;1079:5;-1:-1:-1;1136:2:1;1121:18;;1108:32;1149:33;1108:32;1149:33;:::i;:::-;1201:7;1191:17;;;826:388;;;;;:::o;1219:456::-;1296:6;1304;1312;1365:2;1353:9;1344:7;1340:23;1336:32;1333:52;;;1381:1;1378;1371:12;1333:52;1420:9;1407:23;1439:31;1464:5;1439:31;:::i;:::-;1489:5;-1:-1:-1;1546:2:1;1531:18;;1518:32;1559:33;1518:32;1559:33;:::i;:::-;1219:456;;1611:7;;-1:-1:-1;;;1665:2:1;1650:18;;;;1637:32;;1219:456::o;1680:315::-;1748:6;1756;1809:2;1797:9;1788:7;1784:23;1780:32;1777:52;;;1825:1;1822;1815:12;1777:52;1864:9;1851:23;1883:31;1908:5;1883:31;:::i;:::-;1933:5;1985:2;1970:18;;;;1957:32;;-1:-1:-1;;;1680:315:1:o;2000:1202::-;2090:6;2098;2151:2;2139:9;2130:7;2126:23;2122:32;2119:52;;;2167:1;2164;2157:12;2119:52;2207:9;2194:23;2236:18;2277:2;2269:6;2266:14;2263:34;;;2293:1;2290;2283:12;2263:34;2331:6;2320:9;2316:22;2306:32;;2376:7;2369:4;2365:2;2361:13;2357:27;2347:55;;2398:1;2395;2388:12;2347:55;2434:2;2421:16;2456:4;2479:2;2475;2472:10;2469:36;;;2485:18;;:::i;:::-;2531:2;2528:1;2524:10;2563:2;2557:9;2626:2;2622:7;2617:2;2613;2609:11;2605:25;2597:6;2593:38;2681:6;2669:10;2666:22;2661:2;2649:10;2646:18;2643:46;2640:72;;;2692:18;;:::i;:::-;2728:2;2721:22;2778:18;;;2812:15;;;;-1:-1:-1;2847:11:1;;;2877;;;2873:20;;2870:33;-1:-1:-1;2867:53:1;;;2916:1;2913;2906:12;2867:53;2938:1;2929:10;;2948:169;2962:2;2959:1;2956:9;2948:169;;;3019:23;3038:3;3019:23;:::i;:::-;3007:36;;2980:1;2973:9;;;;;3063:12;;;;3095;;2948:169;;;-1:-1:-1;3136:6:1;-1:-1:-1;3161:35:1;;-1:-1:-1;3177:18:1;;;3161:35;:::i;:::-;3151:45;;;;;;2000:1202;;;;;:::o;3207:180::-;3263:6;3316:2;3304:9;3295:7;3291:23;3287:32;3284:52;;;3332:1;3329;3322:12;3284:52;3355:26;3371:9;3355:26;:::i;3392:180::-;3451:6;3504:2;3492:9;3483:7;3479:23;3475:32;3472:52;;;3520:1;3517;3510:12;3472:52;-1:-1:-1;3543:23:1;;3392:180;-1:-1:-1;3392:180:1:o;3577:306::-;3665:6;3673;3681;3734:2;3722:9;3713:7;3709:23;3705:32;3702:52;;;3750:1;3747;3740:12;3702:52;3779:9;3773:16;3763:26;;3829:2;3818:9;3814:18;3808:25;3798:35;;3873:2;3862:9;3858:18;3852:25;3842:35;;3577:306;;;;;:::o;5209:597::-;5321:4;5350:2;5379;5368:9;5361:21;5411:6;5405:13;5454:6;5449:2;5438:9;5434:18;5427:34;5479:1;5489:140;5503:6;5500:1;5497:13;5489:140;;;5598:14;;;5594:23;;5588:30;5564:17;;;5583:2;5560:26;5553:66;5518:10;;5489:140;;;5647:6;5644:1;5641:13;5638:91;;;5717:1;5712:2;5703:6;5692:9;5688:22;5684:31;5677:42;5638:91;-1:-1:-1;5790:2:1;5769:15;-1:-1:-1;;5765:29:1;5750:45;;;;5797:2;5746:54;;5209:597;-1:-1:-1;;;5209:597:1:o;5993:980::-;6255:4;6303:3;6292:9;6288:19;6334:6;6323:9;6316:25;6360:2;6398:6;6393:2;6382:9;6378:18;6371:34;6441:3;6436:2;6425:9;6421:18;6414:31;6465:6;6500;6494:13;6531:6;6523;6516:22;6569:3;6558:9;6554:19;6547:26;;6608:2;6600:6;6596:15;6582:29;;6629:1;6639:195;6653:6;6650:1;6647:13;6639:195;;;6718:13;;-1:-1:-1;;;;;6714:39:1;6702:52;;6809:15;;;;6774:12;;;;6750:1;6668:9;6639:195;;;-1:-1:-1;;;;;;;6890:32:1;;;;6885:2;6870:18;;6863:60;-1:-1:-1;;;6954:3:1;6939:19;6932:35;6851:3;5993:980;-1:-1:-1;;;5993:980:1:o;7167:128::-;7207:3;7238:1;7234:6;7231:1;7228:13;7225:39;;;7244:18;;:::i;:::-;-1:-1:-1;7280:9:1;;7167:128::o;7300:217::-;7340:1;7366;7356:132;;7410:10;7405:3;7401:20;7398:1;7391:31;7445:4;7442:1;7435:15;7473:4;7470:1;7463:15;7356:132;-1:-1:-1;7502:9:1;;7300:217::o;7522:168::-;7562:7;7628:1;7624;7620:6;7616:14;7613:1;7610:21;7605:1;7598:9;7591:17;7587:45;7584:71;;;7635:18;;:::i;:::-;-1:-1:-1;7675:9:1;;7522:168::o;7695:125::-;7735:4;7763:1;7760;7757:8;7754:34;;;7768:18;;:::i;:::-;-1:-1:-1;7805:9:1;;7695:125::o;7825:380::-;7904:1;7900:12;;;;7947;;;7968:61;;8022:4;8014:6;8010:17;8000:27;;7968:61;8075:2;8067:6;8064:14;8044:18;8041:38;8038:161;;;8121:10;8116:3;8112:20;8109:1;8102:31;8156:4;8153:1;8146:15;8184:4;8181:1;8174:15;8038:161;;7825:380;;;:::o;8210:135::-;8249:3;-1:-1:-1;;8270:17:1;;8267:43;;;8290:18;;:::i;:::-;-1:-1:-1;8337:1:1;8326:13;;8210:135::o;8350:127::-;8411:10;8406:3;8402:20;8399:1;8392:31;8442:4;8439:1;8432:15;8466:4;8463:1;8456:15;8482:127;8543:10;8538:3;8534:20;8531:1;8524:31;8574:4;8571:1;8564:15;8598:4;8595:1;8588:15;8614:127;8675:10;8670:3;8666:20;8663:1;8656:31;8706:4;8703:1;8696:15;8730:4;8727:1;8720:15;8746:127;8807:10;8802:3;8798:20;8795:1;8788:31;8838:4;8835:1;8828:15;8862:4;8859:1;8852:15;8878:131;-1:-1:-1;;;;;8953:31:1;;8943:42;;8933:70;;8999:1;8996;8989:12;8933:70;8878:131;:::o
Swarm Source
ipfs://ac66622e713c24f4323b84c41bc5d2e6a21e9f527e307881caec556b1cef9a5c
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.