ERC-20
Overview
Max Total Supply
1,000,000,000 RIPDIP
Holders
71
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.663573442937845262 RIPDIPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
RipDipToken
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-21 */ //Project Name: RipDip //Contract Name: RipDipToken (RipDip) //Total Supply: 1 Billion //Telegram: https://t.me/ripdipchat //Twitter: https://twitter.com/ripdipcoin //SPDX-License-Identifier: MIT pragma solidity ^0.8.15; interface IBEP20 { function totalSupply() external view returns (uint); function balanceOf(address account) external view returns (uint); function transfer(address recipient, uint amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint amount) external returns (bool); function transferFrom(address sender, address recipient, uint amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); } library SafeMath { function add(uint a, uint b) internal pure returns (uint) { uint c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint a, uint b) internal pure returns (uint) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) { require(b <= a, errorMessage); uint c = a - b; return c; } function mul(uint a, uint b) internal pure returns (uint) { if (a == 0) { return 0; } uint c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint a, uint b) internal pure returns (uint) { return div(a, b, "SafeMath: division by zero"); } function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint c = a / b; return c; } } contract Context { constructor () { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address) { return msg.sender; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { _owner = msg.sender ; emit OwnershipTransferred(address(0), _owner); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender() , "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract BEP20Detailed { string private _name; string private _symbol; uint8 private _decimals; constructor (string memory tname, string memory tsymbol, uint8 tdecimals) { _name = tname; _symbol = tsymbol; _decimals = tdecimals; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } } library SafeBEP20 { using SafeMath for uint; using Address for address; function safeTransfer(IBEP20 token, address to, uint value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IBEP20 token, address from, address to, uint value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IBEP20 token, address spender, uint value) internal { require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeBEP20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function callOptionalReturn(IBEP20 token, bytes memory data) private { require(address(token).isContract(), "SafeBEP20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeBEP20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeBEP20: BEP20 operation did not succeed"); } } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract RipDipToken is Context, Ownable, IBEP20, BEP20Detailed { using SafeBEP20 for IBEP20; using Address for address; using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; mapping (address => uint) internal _balances; mapping (address => mapping (address => uint)) internal _allowances; mapping (address => bool) private _isExcludedFromFee; uint256 internal _totalSupply; uint256 public sellMarketingFee = 2; uint256 public buyMarketingFee = 2; uint256 private marketingFee; address payable private marketingaddress = payable(0x93a6C13bbd93B8D17Cd62207DA471F0f22CC5dA3); bool inSwapAndLiquify; bool private swapAndLiquifyEnabled = true; uint256 public numTokensSellToFee = 25000 * 10**18; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } address private _owner; constructor () BEP20Detailed("RipDip", "RIPDIP", 18) { _owner = msg.sender ; _totalSupply = 1000000000 * (10**18); _balances[_owner] = _totalSupply; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[marketingaddress] = true; emit Transfer(address(0), _msgSender(), _totalSupply); } function totalSupply() public view override returns (uint) { return _totalSupply; } function balanceOf(address account) public view override returns (uint) { return _balances[account]; } function transfer(address recipient, uint amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address towner, address spender) public view override returns (uint) { return _allowances[towner][spender]; } function approve(address spender, uint amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero")); return true; } function setBuyMarketingFeePercent(uint256 updatedBuyMarketingFee) external onlyOwner { require(updatedBuyMarketingFee <= 20, "Fee is crossing the boundaries"); buyMarketingFee = updatedBuyMarketingFee; } function setSellMarketingFeePercent(uint256 updatedSellMarketingFee) external onlyOwner { require(updatedSellMarketingFee <= 20, "Fee is crossing the boundaries"); sellMarketingFee = updatedSellMarketingFee; } function setMarketingAddress(address payable wallet) external onlyOwner { marketingaddress = wallet; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function changeNumTokensSellToFee(uint256 _numTokensSellToFee) external onlyOwner { numTokensSellToFee = _numTokensSellToFee; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _transfer(address sender, address recipient, uint amount) internal{ require(sender != address(0), "BEP20: transfer from the zero address"); require(recipient != address(0), "BEP20: transfer to the zero address"); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToFee; if ( overMinTokenBalance && !inSwapAndLiquify && sender != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToFee; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } if(sender != uniswapV2Pair && recipient != uniswapV2Pair) {takeFee = false;} if(takeFee) { if(sender == uniswapV2Pair){marketingFee = buyMarketingFee;} else{marketingFee = sellMarketingFee;} uint256 taxAmount = amount.mul(marketingFee).div(100); uint256 TotalSent = amount.sub(taxAmount); _balances[sender] = _balances[sender].sub(amount, "BEP20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(TotalSent); _balances[address(this)] = _balances[address(this)].add(taxAmount); emit Transfer(sender, recipient, TotalSent); emit Transfer(sender, address(this), taxAmount); } else { _balances[sender] = _balances[sender].sub(amount, "BEP20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // swap tokens for ETH swapTokensForEth(contractTokenBalance); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered payable(marketingaddress).transfer(address(this).balance); emit SwapAndLiquify(contractTokenBalance, address(this).balance); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function _approve(address towner, address spender, uint amount) internal { require(towner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[towner][spender] = amount; emit Approval(towner, spender, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"towner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numTokensSellToFee","type":"uint256"}],"name":"changeNumTokensSellToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"updatedBuyMarketingFee","type":"uint256"}],"name":"setBuyMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"updatedSellMarketingFee","type":"uint256"}],"name":"setSellMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405260026008819055600955600b8054600161ff0160a01b03191675010093a6c13bbd93b8d17cd62207da471f0f22cc5da317905569054b40b1f852bda00000600c553480156200005257600080fd5b5060408051808201825260068082526505269704469760d41b602080840191909152835180850185529182526505249504449560d41b90820152600080546001600160a01b03191633908117825593519293919260129291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001620000de848262000423565b506002620000ed838262000423565b506003805460ff90921660ff199092169190911790555050600d80546001600160a01b031916339081179091556b033b2e3c9fd0803ce8000000600781905560009182526004602081815260409384902092909255825163c45a015560e01b81529251737a250d5630b4cf539739df2c5dacb4c659f2488d93849363c45a0155938281019391928290030181865afa1580156200018e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b49190620004ef565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000202573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002289190620004ef565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000276573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029c9190620004ef565b6001600160a01b0390811660a0528116608052600160066000620002c86000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526006909352818320805485166001908117909155600b54909116835291208054909216179055620003273390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040516200036f91815260200190565b60405180910390a35062000521565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003a957607f821691505b602082108103620003ca57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200041e57600081815260208120601f850160051c81016020861015620003f95750805b601f850160051c820191505b818110156200041a5782815560010162000405565b5050505b505050565b81516001600160401b038111156200043f576200043f6200037e565b620004578162000450845462000394565b84620003d0565b602080601f8311600181146200048f5760008415620004765750858301515b600019600386901b1c1916600185901b1785556200041a565b600085815260208120601f198616915b82811015620004c0578886015182559484019460019091019084016200049f565b5085821015620004df5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200050257600080fd5b81516001600160a01b03811681146200051a57600080fd5b9392505050565b60805160a05161188b620005786000396000818161032d01528181610d0601528181610db001528181610ded0152610e330152600081816102200152818161134f015281816114080152611444015261188b6000f3fe6080604052600436106101855760003560e01c80637bce5a04116100d1578063a457c2d71161008a578063c49b9a8011610064578063c49b9a801461048f578063dd62ed3e146104af578063ea2f0b37146104f5578063f2fde38b1461051557600080fd5b8063a457c2d71461042f578063a9059cbb1461044f578063a928681c1461046f57600080fd5b80637bce5a041461039a57806384956ca9146103b05780638da5cb5b146103c6578063906e9dd0146103e4578063921369131461040457806395d89b411461041a57600080fd5b8063313ce5671161013e578063437823ec11610118578063437823ec146102fb57806349bd5a5e1461031b57806370a082311461034f578063715018a61461038557600080fd5b8063313ce56714610299578063333b9730146102bb57806339509351146102db57600080fd5b806306fdde03146101915780630844af26146101bc578063095ea7b3146101de5780631694505e1461020e57806318160ddd1461025a57806323b872dd1461027957600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610535565b6040516101b391906114de565b60405180910390f35b3480156101c857600080fd5b506101dc6101d7366004611533565b6105c7565b005b3480156101ea57600080fd5b506101fe6101f9366004611564565b610650565b60405190151581526020016101b3565b34801561021a57600080fd5b506102427f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101b3565b34801561026657600080fd5b506007545b6040519081526020016101b3565b34801561028557600080fd5b506101fe610294366004611590565b610667565b3480156102a557600080fd5b5060035460405160ff90911681526020016101b3565b3480156102c757600080fd5b506101dc6102d6366004611533565b6106d0565b3480156102e757600080fd5b506101fe6102f6366004611564565b6106ff565b34801561030757600080fd5b506101dc6103163660046115d1565b610735565b34801561032757600080fd5b506102427f000000000000000000000000000000000000000000000000000000000000000081565b34801561035b57600080fd5b5061026b61036a3660046115d1565b6001600160a01b031660009081526004602052604090205490565b34801561039157600080fd5b506101dc610783565b3480156103a657600080fd5b5061026b60095481565b3480156103bc57600080fd5b5061026b600c5481565b3480156103d257600080fd5b506000546001600160a01b0316610242565b3480156103f057600080fd5b506101dc6103ff3660046115d1565b6107f7565b34801561041057600080fd5b5061026b60085481565b34801561042657600080fd5b506101a6610843565b34801561043b57600080fd5b506101fe61044a366004611564565b610852565b34801561045b57600080fd5b506101fe61046a366004611564565b6108a1565b34801561047b57600080fd5b506101dc61048a366004611533565b6108ae565b34801561049b57600080fd5b506101dc6104aa3660046115ee565b61092e565b3480156104bb57600080fd5b5061026b6104ca366004611610565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561050157600080fd5b506101dc6105103660046115d1565b6109b0565b34801561052157600080fd5b506101dc6105303660046115d1565b6109fb565b60606001805461054490611649565b80601f016020809104026020016040519081016040528092919081815260200182805461057090611649565b80156105bd5780601f10610592576101008083540402835291602001916105bd565b820191906000526020600020905b8154815290600101906020018083116105a057829003601f168201915b5050505050905090565b6000546001600160a01b031633146105fa5760405162461bcd60e51b81526004016105f190611683565b60405180910390fd5b601481111561064b5760405162461bcd60e51b815260206004820152601e60248201527f4665652069732063726f7373696e672074686520626f756e646172696573000060448201526064016105f1565b600955565b600061065d338484610ae5565b5060015b92915050565b6000610674848484610c09565b6106c684336106c1856040518060600160405280602881526020016117e3602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906110b4565b610ae5565b5060019392505050565b6000546001600160a01b031633146106fa5760405162461bcd60e51b81526004016105f190611683565b600c55565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161065d9185906106c190866110ee565b6000546001600160a01b0316331461075f5760405162461bcd60e51b81526004016105f190611683565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b031633146107ad5760405162461bcd60e51b81526004016105f190611683565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108215760405162461bcd60e51b81526004016105f190611683565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60606002805461054490611649565b600061065d33846106c185604051806060016040528060258152602001611831602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906110b4565b600061065d338484610c09565b6000546001600160a01b031633146108d85760405162461bcd60e51b81526004016105f190611683565b60148111156109295760405162461bcd60e51b815260206004820152601e60248201527f4665652069732063726f7373696e672074686520626f756e646172696573000060448201526064016105f1565b600855565b6000546001600160a01b031633146109585760405162461bcd60e51b81526004016105f190611683565b600b8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906109a590831515815260200190565b60405180910390a150565b6000546001600160a01b031633146109da5760405162461bcd60e51b81526004016105f190611683565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b03163314610a255760405162461bcd60e51b81526004016105f190611683565b6001600160a01b038116610a8a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b475760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f1565b6001600160a01b038216610ba85760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f1565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c6d5760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f1565b6001600160a01b038216610ccf5760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f1565b30600090815260046020526040902054600c5481108015908190610cfd5750600b54600160a01b900460ff16155b8015610d3b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015610d505750600b54600160a81b900460ff165b15610d6357600c549150610d6382611154565b6001600160a01b03851660009081526006602052604090205460019060ff1680610da557506001600160a01b03851660009081526006602052604090205460ff165b15610dae575060005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614158015610e2257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b15610e2b575060005b8015610fe3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031603610e7557600954600a55610e7c565b600854600a555b6000610e9e6064610e98600a54886111f290919063ffffffff16565b90611274565b90506000610eac86836112b6565b9050610eeb8660405180606001604052806026815260200161180b602691396001600160a01b038b1660009081526004602052604090205491906110b4565b6001600160a01b03808a166000908152600460205260408082209390935590891681522054610f1a90826110ee565b6001600160a01b038816600090815260046020526040808220929092553081522054610f4690836110ee565b3060009081526004602090815260409182902092909255518281526001600160a01b0389811692908b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a360405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350506110ac565b6110208460405180606001604052806026815260200161180b602691396001600160a01b03891660009081526004602052604090205491906110b4565b6001600160a01b03808816600090815260046020526040808220939093559087168152205461104f90856110ee565b6001600160a01b0380871660008181526004602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110a39088815260200190565b60405180910390a35b505050505050565b600081848411156110d85760405162461bcd60e51b81526004016105f191906114de565b5060006110e584866116ce565b95945050505050565b6000806110fb83856116e5565b90508381101561114d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105f1565b9392505050565b600b805460ff60a01b1916600160a01b179055611170816112f8565b600b546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156111a9573d6000803e3d6000fd5b50604080518281524760208201527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150600b805460ff60a01b19169055565b60008260000361120457506000610661565b600061121083856116fd565b90508261121d858361171c565b1461114d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105f1565b600061114d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114b0565b600061114d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110b4565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061132d5761132d61173e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cf9190611754565b816001815181106113e2576113e261173e565b60200260200101906001600160a01b031690816001600160a01b03168152505061142d307f000000000000000000000000000000000000000000000000000000000000000084610ae5565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611482908590600090869030904290600401611771565b600060405180830381600087803b15801561149c57600080fd5b505af11580156110ac573d6000803e3d6000fd5b600081836114d15760405162461bcd60e51b81526004016105f191906114de565b5060006110e5848661171c565b600060208083528351808285015260005b8181101561150b578581018301518582016040015282016114ef565b8181111561151d576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561154557600080fd5b5035919050565b6001600160a01b038116811461156157600080fd5b50565b6000806040838503121561157757600080fd5b82356115828161154c565b946020939093013593505050565b6000806000606084860312156115a557600080fd5b83356115b08161154c565b925060208401356115c08161154c565b929592945050506040919091013590565b6000602082840312156115e357600080fd5b813561114d8161154c565b60006020828403121561160057600080fd5b8135801515811461114d57600080fd5b6000806040838503121561162357600080fd5b823561162e8161154c565b9150602083013561163e8161154c565b809150509250929050565b600181811c9082168061165d57607f821691505b60208210810361167d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156116e0576116e06116b8565b500390565b600082198211156116f8576116f86116b8565b500190565b6000816000190483118215151615611717576117176116b8565b500290565b60008261173957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561176657600080fd5b815161114d8161154c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117c15784516001600160a01b03168352938301939183019160010161179c565b50506001600160a01b0396909616606085015250505060800152939250505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203f32f3dc45f6859ae8df8364546ce5aa72bdf15e750b64e90f7047a41d87249464736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106101855760003560e01c80637bce5a04116100d1578063a457c2d71161008a578063c49b9a8011610064578063c49b9a801461048f578063dd62ed3e146104af578063ea2f0b37146104f5578063f2fde38b1461051557600080fd5b8063a457c2d71461042f578063a9059cbb1461044f578063a928681c1461046f57600080fd5b80637bce5a041461039a57806384956ca9146103b05780638da5cb5b146103c6578063906e9dd0146103e4578063921369131461040457806395d89b411461041a57600080fd5b8063313ce5671161013e578063437823ec11610118578063437823ec146102fb57806349bd5a5e1461031b57806370a082311461034f578063715018a61461038557600080fd5b8063313ce56714610299578063333b9730146102bb57806339509351146102db57600080fd5b806306fdde03146101915780630844af26146101bc578063095ea7b3146101de5780631694505e1461020e57806318160ddd1461025a57806323b872dd1461027957600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610535565b6040516101b391906114de565b60405180910390f35b3480156101c857600080fd5b506101dc6101d7366004611533565b6105c7565b005b3480156101ea57600080fd5b506101fe6101f9366004611564565b610650565b60405190151581526020016101b3565b34801561021a57600080fd5b506102427f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016101b3565b34801561026657600080fd5b506007545b6040519081526020016101b3565b34801561028557600080fd5b506101fe610294366004611590565b610667565b3480156102a557600080fd5b5060035460405160ff90911681526020016101b3565b3480156102c757600080fd5b506101dc6102d6366004611533565b6106d0565b3480156102e757600080fd5b506101fe6102f6366004611564565b6106ff565b34801561030757600080fd5b506101dc6103163660046115d1565b610735565b34801561032757600080fd5b506102427f000000000000000000000000826707ee9da275e0e496857adcdeb921d1b9fbe281565b34801561035b57600080fd5b5061026b61036a3660046115d1565b6001600160a01b031660009081526004602052604090205490565b34801561039157600080fd5b506101dc610783565b3480156103a657600080fd5b5061026b60095481565b3480156103bc57600080fd5b5061026b600c5481565b3480156103d257600080fd5b506000546001600160a01b0316610242565b3480156103f057600080fd5b506101dc6103ff3660046115d1565b6107f7565b34801561041057600080fd5b5061026b60085481565b34801561042657600080fd5b506101a6610843565b34801561043b57600080fd5b506101fe61044a366004611564565b610852565b34801561045b57600080fd5b506101fe61046a366004611564565b6108a1565b34801561047b57600080fd5b506101dc61048a366004611533565b6108ae565b34801561049b57600080fd5b506101dc6104aa3660046115ee565b61092e565b3480156104bb57600080fd5b5061026b6104ca366004611610565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561050157600080fd5b506101dc6105103660046115d1565b6109b0565b34801561052157600080fd5b506101dc6105303660046115d1565b6109fb565b60606001805461054490611649565b80601f016020809104026020016040519081016040528092919081815260200182805461057090611649565b80156105bd5780601f10610592576101008083540402835291602001916105bd565b820191906000526020600020905b8154815290600101906020018083116105a057829003601f168201915b5050505050905090565b6000546001600160a01b031633146105fa5760405162461bcd60e51b81526004016105f190611683565b60405180910390fd5b601481111561064b5760405162461bcd60e51b815260206004820152601e60248201527f4665652069732063726f7373696e672074686520626f756e646172696573000060448201526064016105f1565b600955565b600061065d338484610ae5565b5060015b92915050565b6000610674848484610c09565b6106c684336106c1856040518060600160405280602881526020016117e3602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906110b4565b610ae5565b5060019392505050565b6000546001600160a01b031633146106fa5760405162461bcd60e51b81526004016105f190611683565b600c55565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161065d9185906106c190866110ee565b6000546001600160a01b0316331461075f5760405162461bcd60e51b81526004016105f190611683565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b031633146107ad5760405162461bcd60e51b81526004016105f190611683565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108215760405162461bcd60e51b81526004016105f190611683565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60606002805461054490611649565b600061065d33846106c185604051806060016040528060258152602001611831602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906110b4565b600061065d338484610c09565b6000546001600160a01b031633146108d85760405162461bcd60e51b81526004016105f190611683565b60148111156109295760405162461bcd60e51b815260206004820152601e60248201527f4665652069732063726f7373696e672074686520626f756e646172696573000060448201526064016105f1565b600855565b6000546001600160a01b031633146109585760405162461bcd60e51b81526004016105f190611683565b600b8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906109a590831515815260200190565b60405180910390a150565b6000546001600160a01b031633146109da5760405162461bcd60e51b81526004016105f190611683565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b03163314610a255760405162461bcd60e51b81526004016105f190611683565b6001600160a01b038116610a8a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b475760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f1565b6001600160a01b038216610ba85760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f1565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c6d5760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f1565b6001600160a01b038216610ccf5760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f1565b30600090815260046020526040902054600c5481108015908190610cfd5750600b54600160a01b900460ff16155b8015610d3b57507f000000000000000000000000826707ee9da275e0e496857adcdeb921d1b9fbe26001600160a01b0316856001600160a01b031614155b8015610d505750600b54600160a81b900460ff165b15610d6357600c549150610d6382611154565b6001600160a01b03851660009081526006602052604090205460019060ff1680610da557506001600160a01b03851660009081526006602052604090205460ff165b15610dae575060005b7f000000000000000000000000826707ee9da275e0e496857adcdeb921d1b9fbe26001600160a01b0316866001600160a01b031614158015610e2257507f000000000000000000000000826707ee9da275e0e496857adcdeb921d1b9fbe26001600160a01b0316856001600160a01b031614155b15610e2b575060005b8015610fe3577f000000000000000000000000826707ee9da275e0e496857adcdeb921d1b9fbe26001600160a01b0316866001600160a01b031603610e7557600954600a55610e7c565b600854600a555b6000610e9e6064610e98600a54886111f290919063ffffffff16565b90611274565b90506000610eac86836112b6565b9050610eeb8660405180606001604052806026815260200161180b602691396001600160a01b038b1660009081526004602052604090205491906110b4565b6001600160a01b03808a166000908152600460205260408082209390935590891681522054610f1a90826110ee565b6001600160a01b038816600090815260046020526040808220929092553081522054610f4690836110ee565b3060009081526004602090815260409182902092909255518281526001600160a01b0389811692908b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a360405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350506110ac565b6110208460405180606001604052806026815260200161180b602691396001600160a01b03891660009081526004602052604090205491906110b4565b6001600160a01b03808816600090815260046020526040808220939093559087168152205461104f90856110ee565b6001600160a01b0380871660008181526004602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110a39088815260200190565b60405180910390a35b505050505050565b600081848411156110d85760405162461bcd60e51b81526004016105f191906114de565b5060006110e584866116ce565b95945050505050565b6000806110fb83856116e5565b90508381101561114d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105f1565b9392505050565b600b805460ff60a01b1916600160a01b179055611170816112f8565b600b546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156111a9573d6000803e3d6000fd5b50604080518281524760208201527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150600b805460ff60a01b19169055565b60008260000361120457506000610661565b600061121083856116fd565b90508261121d858361171c565b1461114d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105f1565b600061114d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114b0565b600061114d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110b4565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061132d5761132d61173e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cf9190611754565b816001815181106113e2576113e261173e565b60200260200101906001600160a01b031690816001600160a01b03168152505061142d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610ae5565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611482908590600090869030904290600401611771565b600060405180830381600087803b15801561149c57600080fd5b505af11580156110ac573d6000803e3d6000fd5b600081836114d15760405162461bcd60e51b81526004016105f191906114de565b5060006110e5848661171c565b600060208083528351808285015260005b8181101561150b578581018301518582016040015282016114ef565b8181111561151d576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561154557600080fd5b5035919050565b6001600160a01b038116811461156157600080fd5b50565b6000806040838503121561157757600080fd5b82356115828161154c565b946020939093013593505050565b6000806000606084860312156115a557600080fd5b83356115b08161154c565b925060208401356115c08161154c565b929592945050506040919091013590565b6000602082840312156115e357600080fd5b813561114d8161154c565b60006020828403121561160057600080fd5b8135801515811461114d57600080fd5b6000806040838503121561162357600080fd5b823561162e8161154c565b9150602083013561163e8161154c565b809150509250929050565b600181811c9082168061165d57607f821691505b60208210810361167d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156116e0576116e06116b8565b500390565b600082198211156116f8576116f86116b8565b500190565b6000816000190483118215151615611717576117176116b8565b500290565b60008261173957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561176657600080fd5b815161114d8161154c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117c15784516001600160a01b03168352938301939183019160010161179c565b50506001600160a01b0396909616606085015250505060800152939250505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203f32f3dc45f6859ae8df8364546ce5aa72bdf15e750b64e90f7047a41d87249464736f6c634300080f0033
Deployed Bytecode Sourcemap
14272:8640:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4199:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17880:234;;;;;;;;;;-1:-1:-1;17880:234:0;;;;;:::i;:::-;;:::i;:::-;;16921:158;;;;;;;;;;-1:-1:-1;16921:158:0;;;;;:::i;:::-;;:::i;:::-;;;1422:14:1;;1415:22;1397:41;;1385:2;1370:18;16921:158:0;1257:187:1;14439:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1640:32:1;;;1622:51;;1610:2;1595:18;14439:51:0;1449:230:1;16377:97:0;;;;;;;;;;-1:-1:-1;16454:12:0;;16377:97;;;1830:25:1;;;1818:2;1803:18;16377:97:0;1684:177:1;17085:310:0;;;;;;;;;;-1:-1:-1;17085:310:0;;;;;:::i;:::-;;:::i;4381:83::-;;;;;;;;;;-1:-1:-1;4447:9:0;;4381:83;;4447:9;;;;2469:36:1;;2457:2;2442:18;4381:83:0;2327:184:1;18679:146:0;;;;;;;;;;-1:-1:-1;18679:146:0;;;;;:::i;:::-;;:::i;17401:207::-;;;;;;;;;;-1:-1:-1;17401:207:0;;;;;:::i;:::-;;:::i;18833:111::-;;;;;;;;;;-1:-1:-1;18833:111:0;;;;;:::i;:::-;;:::i;14497:38::-;;;;;;;;;;;;;;;16480:116;;;;;;;;;;-1:-1:-1;16480:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;16570:18:0;16546:4;16570:18;;;:9;:18;;;;;;;16480:116;3339:148;;;;;;;;;;;;;:::i;14817:34::-;;;;;;;;;;;;;;;;15082:50;;;;;;;;;;;;;;;;2696:79;;;;;;;;;;-1:-1:-1;2734:7:0;2761:6;-1:-1:-1;;;;;2761:6:0;2696:79;;18369:121;;;;;;;;;;-1:-1:-1;18369:121:0;;;;;:::i;:::-;;:::i;14775:35::-;;;;;;;;;;;;;;;;4288:87;;;;;;;;;;;;;:::i;17614:258::-;;;;;;;;;;-1:-1:-1;17614:258:0;;;;;:::i;:::-;;:::i;16602:165::-;;;;;;;;;;-1:-1:-1;16602:165:0;;;;;:::i;:::-;;:::i;18122:239::-;;;;;;;;;;-1:-1:-1;18122:239:0;;;;;:::i;:::-;;:::i;18500:171::-;;;;;;;;;;-1:-1:-1;18500:171:0;;;;;:::i;:::-;;:::i;16773:142::-;;;;;;;;;;-1:-1:-1;16773:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;16879:19:0;;;16855:4;16879:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16773:142;18956:110;;;;;;;;;;-1:-1:-1;18956:110:0;;;;;:::i;:::-;;:::i;3642:244::-;;;;;;;;;;-1:-1:-1;3642:244:0;;;;;:::i;:::-;;:::i;4199:83::-;4236:13;4269:5;4262:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4199:83;:::o;17880:234::-;2908:6;;-1:-1:-1;;;;;2908:6:0;2205:10;2908:22;2900:68;;;;-1:-1:-1;;;2900:68:0;;;;;;;:::i;:::-;;;;;;;;;18011:2:::1;17985:22;:28;;17977:71;;;::::0;-1:-1:-1;;;17977:71:0;;4855:2:1;17977:71:0::1;::::0;::::1;4837:21:1::0;4894:2;4874:18;;;4867:30;4933:32;4913:18;;;4906:60;4983:18;;17977:71:0::1;4653:354:1::0;17977:71:0::1;18059:15;:40:::0;17880:234::o;16921:158::-;16993:4;17010:39;2205:10;17033:7;17042:6;17010:8;:39::i;:::-;-1:-1:-1;17067:4:0;16921:158;;;;;:::o;17085:310::-;17180:4;17197:36;17207:6;17215:9;17226:6;17197:9;:36::i;:::-;17244:121;17253:6;2205:10;17275:89;17313:6;17275:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17275:19:0;;;;;;:11;:19;;;;;;;;2205:10;17275:33;;;;;;;;;;:37;:89::i;:::-;17244:8;:121::i;:::-;-1:-1:-1;17383:4:0;17085:310;;;;;:::o;18679:146::-;2908:6;;-1:-1:-1;;;;;2908:6:0;2205:10;2908:22;2900:68;;;;-1:-1:-1;;;2900:68:0;;;;;;;:::i;:::-;18777:18:::1;:40:::0;18679:146::o;17401:207::-;2205:10;17478:4;17527:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17527:34:0;;;;;;;;;;17478:4;;17495:83;;17518:7;;17527:50;;17566:10;17527:38;:50::i;18833:111::-;2908:6;;-1:-1:-1;;;;;2908:6:0;2205:10;2908:22;2900:68;;;;-1:-1:-1;;;2900:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18902:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;18902:34:0::1;18932:4;18902:34;::::0;;18833:111::o;3339:148::-;2908:6;;-1:-1:-1;;;;;2908:6:0;2205:10;2908:22;2900:68;;;;-1:-1:-1;;;2900:68:0;;;;;;;:::i;:::-;3446:1:::1;3430:6:::0;;3409:40:::1;::::0;-1:-1:-1;;;;;3430:6:0;;::::1;::::0;3409:40:::1;::::0;3446:1;;3409:40:::1;3477:1;3460:19:::0;;-1:-1:-1;;;;;;3460:19:0::1;::::0;;3339:148::o;18369:121::-;2908:6;;-1:-1:-1;;;;;2908:6:0;2205:10;2908:22;2900:68;;;;-1:-1:-1;;;2900:68:0;;;;;;;:::i;:::-;18457:16:::1;:25:::0;;-1:-1:-1;;;;;;18457:25:0::1;-1:-1:-1::0;;;;;18457:25:0;;;::::1;::::0;;;::::1;::::0;;18369:121::o;4288:87::-;4327:13;4360:7;4353:14;;;;;:::i;17614:258::-;17696:4;17713:129;2205:10;17736:7;17745:96;17784:15;17745:96;;;;;;;;;;;;;;;;;2205:10;17745:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17745:34:0;;;;;;;;;;;;:38;:96::i;16602:165::-;16678:4;16695:42;2205:10;16719:9;16730:6;16695:9;:42::i;18122:239::-;2908:6;;-1:-1:-1;;;;;2908:6:0;2205:10;2908:22;2900:68;;;;-1:-1:-1;;;2900:68:0;;;;;;;:::i;:::-;18256:2:::1;18229:23;:29;;18221:72;;;::::0;-1:-1:-1;;;18221:72:0;;4855:2:1;18221:72:0::1;::::0;::::1;4837:21:1::0;4894:2;4874:18;;;4867:30;4933:32;4913:18;;;4906:60;4983:18;;18221:72:0::1;4653:354:1::0;18221:72:0::1;18304:16;:42:::0;18122:239::o;18500:171::-;2908:6;;-1:-1:-1;;;;;2908:6:0;2205:10;2908:22;2900:68;;;;-1:-1:-1;;;2900:68:0;;;;;;;:::i;:::-;18577:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18577:32:0::1;-1:-1:-1::0;;;;18577:32:0;;::::1;;::::0;;18625:38:::1;::::0;::::1;::::0;::::1;::::0;18601:8;1422:14:1;1415:22;1397:41;;1385:2;1370:18;;1257:187;18625:38:0::1;;;;;;;;18500:171:::0;:::o;18956:110::-;2908:6;;-1:-1:-1;;;;;2908:6:0;2205:10;2908:22;2900:68;;;;-1:-1:-1;;;2900:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19023:27:0::1;19053:5;19023:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;19023:35:0::1;::::0;;18956:110::o;3642:244::-;2908:6;;-1:-1:-1;;;;;2908:6:0;2205:10;2908:22;2900:68;;;;-1:-1:-1;;;2900:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3731:22:0;::::1;3723:73;;;::::0;-1:-1:-1;;;3723:73:0;;5214:2:1;3723:73:0::1;::::0;::::1;5196:21:1::0;5253:2;5233:18;;;5226:30;5292:34;5272:18;;;5265:62;-1:-1:-1;;;5343:18:1;;;5336:36;5389:19;;3723:73:0::1;5012:402:1::0;3723:73:0::1;3833:6;::::0;;3812:38:::1;::::0;-1:-1:-1;;;;;3812:38:0;;::::1;::::0;3833:6;::::1;::::0;3812:38:::1;::::0;::::1;3861:6;:17:::0;;-1:-1:-1;;;;;;3861:17:0::1;-1:-1:-1::0;;;;;3861:17:0;;;::::1;::::0;;;::::1;::::0;;3642:244::o;22563:339::-;-1:-1:-1;;;;;22655:20:0;;22647:69;;;;-1:-1:-1;;;22647:69:0;;5621:2:1;22647:69:0;;;5603:21:1;5660:2;5640:18;;;5633:30;5699:34;5679:18;;;5672:62;-1:-1:-1;;;5750:18:1;;;5743:34;5794:19;;22647:69:0;5419:400:1;22647:69:0;-1:-1:-1;;;;;22735:21:0;;22727:68;;;;-1:-1:-1;;;22727:68:0;;6026:2:1;22727:68:0;;;6008:21:1;6065:2;6045:18;;;6038:30;6104:34;6084:18;;;6077:62;-1:-1:-1;;;6155:18:1;;;6148:32;6197:19;;22727:68:0;5824:398:1;22727:68:0;-1:-1:-1;;;;;22808:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;22861:33;;1830:25:1;;;22861:33:0;;1803:18:1;22861:33:0;;;;;;;22563:339;;;:::o;19168:2385::-;-1:-1:-1;;;;;19264:20:0;;19256:70;;;;-1:-1:-1;;;19256:70:0;;6429:2:1;19256:70:0;;;6411:21:1;6468:2;6448:18;;;6441:30;6507:34;6487:18;;;6480:62;-1:-1:-1;;;6558:18:1;;;6551:35;6603:19;;19256:70:0;6227:401:1;19256:70:0;-1:-1:-1;;;;;19345:23:0;;19337:71;;;;-1:-1:-1;;;19337:71:0;;6835:2:1;19337:71:0;;;6817:21:1;6874:2;6854:18;;;6847:30;6913:34;6893:18;;;6886:62;-1:-1:-1;;;6964:18:1;;;6957:33;7007:19;;19337:71:0;6633:399:1;19337:71:0;19754:4;19705:28;16570:18;;;:9;:18;;;;;;19842;;19818:42;;;;;;;19889:53;;-1:-1:-1;19926:16:0;;-1:-1:-1;;;19926:16:0;;;;19925:17;19889:53;:93;;;;;19969:13;-1:-1:-1;;;;;19959:23:0;:6;-1:-1:-1;;;;;19959:23:0;;;19889:93;:131;;;;-1:-1:-1;19999:21:0;;-1:-1:-1;;;19999:21:0;;;;19889:131;19871:309;;;20070:18;;20047:41;;20132:36;20147:20;20132:14;:36::i;:::-;-1:-1:-1;;;;;20381:26:0;;20254:12;20381:26;;;:18;:26;;;;;;20269:4;;20381:26;;;:59;;-1:-1:-1;;;;;;20411:29:0;;;;;;:18;:29;;;;;;;;20381:59;20378:105;;;-1:-1:-1;20466:5:0;20378:105;20515:13;-1:-1:-1;;;;;20505:23:0;:6;-1:-1:-1;;;;;20505:23:0;;;:53;;;;;20545:13;-1:-1:-1;;;;;20532:26:0;:9;-1:-1:-1;;;;;20532:26:0;;;20505:53;20502:85;;;-1:-1:-1;20580:5:0;20502:85;20610:7;20607:930;;;20656:13;-1:-1:-1;;;;;20646:23:0;:6;-1:-1:-1;;;;;20646:23:0;;20643:112;;20686:15;;20671:12;:30;20643:112;;;20737:16;;20722:12;:31;20643:112;20769:17;20789:33;20818:3;20789:24;20800:12;;20789:6;:10;;:24;;;;:::i;:::-;:28;;:33::i;:::-;20769:53;-1:-1:-1;20837:17:0;20857:21;:6;20769:53;20857:10;:21::i;:::-;20837:41;;20913:71;20935:6;20913:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20913:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;20893:17:0;;;;;;;:9;:17;;;;;;:91;;;;21022:20;;;;;;;:35;;21047:9;21022:24;:35::i;:::-;-1:-1:-1;;;;;20999:20:0;;;;;;:9;:20;;;;;;:58;;;;21117:4;21099:24;;;;:39;;21128:9;21099:28;:39::i;:::-;21090:4;21072:24;;;;:9;:24;;;;;;;;;:66;;;;21158:38;1830:25:1;;;-1:-1:-1;;;;;21158:38:0;;;;;;;;;;1803:18:1;21158:38:0;;;;;;;21216:42;;1830:25:1;;;21241:4:0;;-1:-1:-1;;;;;21216:42:0;;;;;1818:2:1;1803:18;21216:42:0;;;;;;;20628:642;;20607:930;;;21329:71;21351:6;21329:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21329:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;21309:17:0;;;;;;;:9;:17;;;;;;:91;;;;21438:20;;;;;;;:32;;21463:6;21438:24;:32::i;:::-;-1:-1:-1;;;;;21415:20:0;;;;;;;:9;:20;;;;;;;:55;;;;21490:35;;;;;;;;;;21518:6;1830:25:1;;1818:2;1803:18;;1684:177;21490:35:0;;;;;;;;20607:930;19243:2310;;;19168:2385;;;:::o;1217:180::-;1297:4;1330:12;1322:6;;;;1314:29;;;;-1:-1:-1;;;1314:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1354:6:0;1363:5;1367:1;1363;:5;:::i;:::-;1354:14;1217:180;-1:-1:-1;;;;;1217:180:0:o;909:169::-;961:4;;987:5;991:1;987;:5;:::i;:::-;978:14;;1016:1;1011;:6;;1003:46;;;;-1:-1:-1;;;1003:46:0;;7634:2:1;1003:46:0;;;7616:21:1;7673:2;7653:18;;;7646:30;7712:29;7692:18;;;7685:57;7759:18;;1003:46:0;7432:351:1;1003:46:0;1069:1;909:169;-1:-1:-1;;;909:169:0:o;21562:394::-;15408:16;:23;;-1:-1:-1;;;;15408:23:0;-1:-1:-1;;;15408:23:0;;;21685:38:::1;21702:20:::0;21685:16:::1;:38::i;:::-;21814:16;::::0;21806:57:::1;::::0;-1:-1:-1;;;;;21814:16:0;;::::1;::::0;21841:21:::1;21806:57:::0;::::1;;;::::0;21814:16:::1;21806:57:::0;21814:16;21806:57;21841:21;21814:16;21806:57;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21889:59:0::1;::::0;;7962:25:1;;;21926:21:0::1;8018:2:1::0;8003:18;;7996:34;21889:59:0::1;::::0;7935:18:1;21889:59:0::1;;;;;;;-1:-1:-1::0;15454:16:0;:24;;-1:-1:-1;;;;15454:24:0;;;21562:394::o;1403:238::-;1455:4;1476:1;1481;1476:6;1472:47;;-1:-1:-1;1506:1:0;1499:8;;1472:47;1531:6;1540:5;1544:1;1540;:5;:::i;:::-;1531:14;-1:-1:-1;1573:1:0;1564:5;1568:1;1531:14;1564:5;:::i;:::-;:10;1556:56;;;;-1:-1:-1;;;1556:56:0;;8638:2:1;1556:56:0;;;8620:21:1;8677:2;8657:18;;;8650:30;8716:34;8696:18;;;8689:62;-1:-1:-1;;;8767:18:1;;;8760:31;8808:19;;1556:56:0;8436:397:1;1647:123:0;1699:4;1723:39;1727:1;1730;1723:39;;;;;;;;;;;;;;;;;:3;:39::i;1084:127::-;1136:4;1160:43;1164:1;1167;1160:43;;;;;;;;;;;;;;;;;:3;:43::i;21964:589::-;22114:16;;;22128:1;22114:16;;;;;;;;22090:21;;22114:16;;;;;;;;;;-1:-1:-1;22114:16:0;22090:40;;22159:4;22141;22146:1;22141:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;22141:23:0;;;-1:-1:-1;;;;;22141:23:0;;;;;22185:15;-1:-1:-1;;;;;22185:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22175:4;22180:1;22175:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;22175:32:0;;;-1:-1:-1;;;;;22175:32:0;;;;;22220:62;22237:4;22252:15;22270:11;22220:8;:62::i;:::-;22321:224;;-1:-1:-1;;;22321:224:0;;-1:-1:-1;;;;;22321:15:0;:66;;;;:224;;22402:11;;22428:1;;22472:4;;22499;;22519:15;;22321:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1776:246;1856:4;1955:12;1948:5;1940:28;;;;-1:-1:-1;;;1940:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1979:6:0;1988:5;1992:1;1988;:5;:::i;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:180::-;675:6;728:2;716:9;707:7;703:23;699:32;696:52;;;744:1;741;734:12;696:52;-1:-1:-1;767:23:1;;616:180;-1:-1:-1;616:180:1:o;801:131::-;-1:-1:-1;;;;;876:31:1;;866:42;;856:70;;922:1;919;912:12;856:70;801:131;:::o;937:315::-;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;1121:9;1108:23;1140:31;1165:5;1140:31;:::i;:::-;1190:5;1242:2;1227:18;;;;1214:32;;-1:-1:-1;;;937:315:1:o;1866:456::-;1943:6;1951;1959;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2067:9;2054:23;2086:31;2111:5;2086:31;:::i;:::-;2136:5;-1:-1:-1;2193:2:1;2178:18;;2165:32;2206:33;2165:32;2206:33;:::i;:::-;1866:456;;2258:7;;-1:-1:-1;;;2312:2:1;2297:18;;;;2284:32;;1866:456::o;2516:247::-;2575:6;2628:2;2616:9;2607:7;2603:23;2599:32;2596:52;;;2644:1;2641;2634:12;2596:52;2683:9;2670:23;2702:31;2727:5;2702:31;:::i;3236:273::-;3292:6;3345:2;3333:9;3324:7;3320:23;3316:32;3313:52;;;3361:1;3358;3351:12;3313:52;3400:9;3387:23;3453:5;3446:13;3439:21;3432:5;3429:32;3419:60;;3475:1;3472;3465:12;3514:388;3582:6;3590;3643:2;3631:9;3622:7;3618:23;3614:32;3611:52;;;3659:1;3656;3649:12;3611:52;3698:9;3685:23;3717:31;3742:5;3717:31;:::i;:::-;3767:5;-1:-1:-1;3824:2:1;3809:18;;3796:32;3837:33;3796:32;3837:33;:::i;:::-;3889:7;3879:17;;;3514:388;;;;;:::o;3907:380::-;3986:1;3982:12;;;;4029;;;4050:61;;4104:4;4096:6;4092:17;4082:27;;4050:61;4157:2;4149:6;4146:14;4126:18;4123:38;4120:161;;4203:10;4198:3;4194:20;4191:1;4184:31;4238:4;4235:1;4228:15;4266:4;4263:1;4256:15;4120:161;;3907:380;;;:::o;4292:356::-;4494:2;4476:21;;;4513:18;;;4506:30;4572:34;4567:2;4552:18;;4545:62;4639:2;4624:18;;4292:356::o;7037:127::-;7098:10;7093:3;7089:20;7086:1;7079:31;7129:4;7126:1;7119:15;7153:4;7150:1;7143:15;7169:125;7209:4;7237:1;7234;7231:8;7228:34;;;7242:18;;:::i;:::-;-1:-1:-1;7279:9:1;;7169:125::o;7299:128::-;7339:3;7370:1;7366:6;7363:1;7360:13;7357:39;;;7376:18;;:::i;:::-;-1:-1:-1;7412:9:1;;7299:128::o;8041:168::-;8081:7;8147:1;8143;8139:6;8135:14;8132:1;8129:21;8124:1;8117:9;8110:17;8106:45;8103:71;;;8154:18;;:::i;:::-;-1:-1:-1;8194:9:1;;8041:168::o;8214:217::-;8254:1;8280;8270:132;;8324:10;8319:3;8315:20;8312:1;8305:31;8359:4;8356:1;8349:15;8387:4;8384:1;8377:15;8270:132;-1:-1:-1;8416:9:1;;8214:217::o;8970:127::-;9031:10;9026:3;9022:20;9019:1;9012:31;9062:4;9059:1;9052:15;9086:4;9083:1;9076:15;9102:251;9172:6;9225:2;9213:9;9204:7;9200:23;9196:32;9193:52;;;9241:1;9238;9231:12;9193:52;9273:9;9267:16;9292:31;9317:5;9292:31;:::i;9358:980::-;9620:4;9668:3;9657:9;9653:19;9699:6;9688:9;9681:25;9725:2;9763:6;9758:2;9747:9;9743:18;9736:34;9806:3;9801:2;9790:9;9786:18;9779:31;9830:6;9865;9859:13;9896:6;9888;9881:22;9934:3;9923:9;9919:19;9912:26;;9973:2;9965:6;9961:15;9947:29;;9994:1;10004:195;10018:6;10015:1;10012:13;10004:195;;;10083:13;;-1:-1:-1;;;;;10079:39:1;10067:52;;10174:15;;;;10139:12;;;;10115:1;10033:9;10004:195;;;-1:-1:-1;;;;;;;10255:32:1;;;;10250:2;10235:18;;10228:60;-1:-1:-1;;;10319:3:1;10304:19;10297:35;10216:3;9358:980;-1:-1:-1;;;9358:980:1:o
Swarm Source
ipfs://3f32f3dc45f6859ae8df8364546ce5aa72bdf15e750b64e90f7047a41d872494
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.