ERC-20
Overview
Max Total Supply
320,000,000,000,000 Peppa2.0
Holders
289
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
9,999,999,999.999999583119736832 Peppa2.0Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PEQI2
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-10 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.6; pragma experimental ABIEncoderV2; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage) internal pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IUniswapV2Pair { function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); 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 swapETHForExactTokens( uint amountOut, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapTokensForExactETH( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline )external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); } contract PEQI2 is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public _isExcludedFromFee; uint8 private _decimals = 18; uint256 private _tTotal; uint256 public supply = 3200000 * (10 ** 8) * (10 ** 18); string private _name = "Peppa2.0"; string private _symbol = "Peppa2.0"; uint256 public _marketFee = 1; address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address public marketAddress = 0x7e8acB38dcaB5667a5Be98b6f5Ff68602819581b ; address public initPoolAddress = 0x0eFf467a676A3593098DE4644A7b3e1386F423A1; IUniswapV2Router02 public uniswapV2Router; mapping(address => bool) public ammPairs; IERC20 public uniswapV2Pair; address public weth; mapping(address => bool) public isBlackList; address constant rootAddress = address(0x000000000000000000000000000000000000dEaD); address ethPair; uint256 currentIndex; uint256 distributorGas = 500000; uint256 tradingAmountLimit = 1000 * (10 ** 8) * (10 ** 18); uint256 addTradingLimit = 2000 * (10 ** 8) * (10 ** 18); uint256 launchedBlock; bool openTransaction; uint256 private firstTime = 3; uint256 private secondTime = 10; bool public swapEnabled = true; uint256 public swapThreshold = supply / 100000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { _tOwned[initPoolAddress] = supply; _tTotal = supply; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[address(msg.sender)] = true; _isExcludedFromFee[rootAddress] = true; _isExcludedFromFee[initPoolAddress] = true; _isExcludedFromFee[marketAddress] = true; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); uniswapV2Router = _uniswapV2Router; ethPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); weth = _uniswapV2Router.WETH(); uniswapV2Pair = IERC20(ethPair); ammPairs[ethPair] = true; emit Transfer(address(0), initPoolAddress, _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _take(uint256 tValue,address from,address to) private { _tOwned[to] = _tOwned[to].add(tValue); emit Transfer(from, to, tValue); } receive() external payable {} function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } struct Param{ bool takeFee; uint tTransferAmount; uint tContract; } function _initParam(uint256 tAmount,Param memory param) private view { uint tFee; if (block.number - launchedBlock > firstTime) { tFee = tAmount * _marketFee / 100; } else { tFee = tAmount * 90 / 100; } param.tContract = tFee; param.tTransferAmount = tAmount.sub(tFee); } function _takeFee(Param memory param,address from)private { if( param.tContract > 0 ){ _take(param.tContract, from, address(this)); } } function shouldSwapBack(address to) internal view returns (bool) { return (ammPairs[to]) && !inSwap && swapEnabled && balanceOf(address(this)) >= swapThreshold; } function swapBack() internal swapping { _allowances[address(this)][address(uniswapV2Router)] = swapThreshold; address[] memory path = new address[](2); path[0] = address(this); path[1] = weth; uint256 balanceBefore = address(this).balance; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( swapThreshold, 0, path, address(this), block.timestamp ); uint256 amountEth = address(this).balance.sub(balanceBefore); payable(marketAddress).transfer(amountEth); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(amount > 0, "ERC20: transfer amount must be greater than zero"); bool takeFee; Param memory param; param.tTransferAmount = amount; if( ammPairs[to] && IERC20(to).totalSupply() == 0 ){ require(from == initPoolAddress,"Not allow init"); } if(inSwap || _isExcludedFromFee[from] || _isExcludedFromFee[to]){ return _tokenTransfer(from,to,amount,param); } require(openTransaction && !isBlackList[from],"Not allow"); uint256 currentBlock = block.number; if (currentBlock - launchedBlock < firstTime && ammPairs[from]) { isBlackList[to] = true; } if (currentBlock - launchedBlock < secondTime) { if (ammPairs[from]) { require(amount <= tradingAmountLimit.add((currentBlock - launchedBlock).mul(addTradingLimit)), "Trading amount limit exceeded"); } } if(ammPairs[to] || ammPairs[from]){ takeFee = true; } if(shouldSwapBack(to)){ swapBack(); } param.takeFee = takeFee; if( takeFee ){ _initParam(amount,param); } _tokenTransfer(from,to,amount,param); } function _tokenTransfer(address sender, address recipient, uint256 tAmount,Param memory param) private { _tOwned[sender] = _tOwned[sender].sub(tAmount); _tOwned[recipient] = _tOwned[recipient].add(param.tTransferAmount); emit Transfer(sender, recipient, param.tTransferAmount); if(param.takeFee == true){ _takeFee(param,sender); } } function setOpenTransaction() external onlyOwner { require(openTransaction == false, "Already opened"); openTransaction = true; launchedBlock = block.number; } function muliSetExcludeFromFee(address[] calldata users, bool _isExclude) external onlyOwner { for (uint i = 0; i < users.length; i++) { _isExcludedFromFee[users[i]] = _isExclude; } } function muliSetBlackList(address[] calldata users, bool _isBlackList) external onlyOwner { for (uint i = 0; i < users.length; i++) { isBlackList[users[i]] = _isBlackList; } } function setTradingLimit(uint256 _tradingAmountLimit, uint256 _addTradingLimit) external onlyOwner { tradingAmountLimit = _tradingAmountLimit; addTradingLimit = _addTradingLimit; } function setTimes(uint256 _firstTime, uint256 _secondTime) external onlyOwner { firstTime = _firstTime; secondTime = _secondTime; } function setAmmPair(address pair,bool hasPair) external onlyOwner { ammPairs[pair] = hasPair; } function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner { swapEnabled = _enabled; swapThreshold = _amount; } function setFee(uint256 marketFee) external onlyOwner { _marketFee = marketFee; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initPoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"bool","name":"_isBlackList","type":"bool"}],"name":"muliSetBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"bool","name":"_isExclude","type":"bool"}],"name":"muliSetExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"hasPair","type":"bool"}],"name":"setAmmPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setOpenTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_firstTime","type":"uint256"},{"internalType":"uint256","name":"_secondTime","type":"uint256"}],"name":"setTimes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tradingAmountLimit","type":"uint256"},{"internalType":"uint256","name":"_addTradingLimit","type":"uint256"}],"name":"setTradingLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6004805460ff191660121790556d0fc6f7c40458122964d00000000060065560c0604052600860808190526705065707061322e360c41b60a09081526200004a916007919062000505565b506040805180820190915260088082526705065707061322e360c41b60209092019182526200007a918162000505565b5060016009819055600a80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d178255600b80548216737e8acb38dcab5667a5be98b6f5ff68602819581b179055600c8054909116730eff467a676a3593098de4644a7b3e1386f423a11790556207a1206014556c01431e0fae6d7217caa00000006015556c02863c1f5cdae42f95400000006016556003601955601a55601b805460ff191690911790556006546200013890620186a090620005dd565b601c553480156200014857600080fd5b506200015433620004b5565b600654600c80546001600160a01b03908116600090815260016020818152604080842087905560059690965530835260038152858320805460ff19908116841790915533845286842080548216841790557f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c80548216841790559454841683528583208054861683179055600b548416835291859020805490941617909255600a54600d80546001600160a01b03191691909216908117909155825163c45a015560e01b815292519092839263c45a015592600480840193829003018186803b1580156200024157600080fd5b505afa15801562000256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027c9190620005ab565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c557600080fd5b505afa158015620002da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003009190620005ab565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200034957600080fd5b505af11580156200035e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003849190620005ab565b601260006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003e457600080fd5b505afa158015620003f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041f9190620005ab565b601080546001600160a01b039283166001600160a01b031991821617909155601254600f80549092169083169081179091556000908152600e6020526040808220805460ff19166001179055600c5460055491519316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620004a69190815260200190565b60405180910390a3506200063d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620005139062000600565b90600052602060002090601f01602090048101928262000537576000855562000582565b82601f106200055257805160ff191683800117855562000582565b8280016001018555821562000582579182015b828111156200058257825182559160200191906001019062000565565b506200059092915062000594565b5090565b5b8082111562000590576000815560010162000595565b600060208284031215620005be57600080fd5b81516001600160a01b0381168114620005d657600080fd5b9392505050565b600082620005fb57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806200061557607f821691505b602082108114156200063757634e487b7160e01b600052602260045260246000fd5b50919050565b611a21806200064d6000396000f3fe6080604052600436106101fd5760003560e01c806370a082311161010d578063a457c2d7116100a0578063a9059cbb1161006f578063a9059cbb146105ce578063b36d6919146105ee578063dd62ed3e1461061e578063df20fd4914610664578063f2fde38b1461068457600080fd5b8063a457c2d714610549578063a4b3cf9814610569578063a500a5831461057e578063a72905a21461059e57600080fd5b8063876ab8d8116100dc578063876ab8d8146104d65780638da5cb5b146104f6578063956236411461051457806395d89b411461053457600080fd5b806370a0823114610445578063715018a61461047b578063768dc7101461049057806384d6ff2f146104c057600080fd5b806322434836116101905780633fc8cef31161015f5780633fc8cef3146103ab5780634509486a146103cb57806349bd5a5e146103eb57806369fe0e2d1461040b5780636ddd17131461042b57600080fd5b8063224348361461032957806323b872dd14610349578063313ce56714610369578063395093511461038b57600080fd5b80630a656923116101cc5780630a6569231461029a5780631694505e146102bc57806318160ddd146102f45780631e30da541461030957600080fd5b80630445b66714610209578063047fc9aa1461023257806306fdde0314610248578063095ea7b31461026a57600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021f601c5481565b6040519081526020015b60405180910390f35b34801561023e57600080fd5b5061021f60065481565b34801561025457600080fd5b5061025d6106a4565b60405161022991906117b1565b34801561027657600080fd5b5061028a610285366004611693565b610736565b6040519015158152602001610229565b3480156102a657600080fd5b506102ba6102b5366004611669565b61074c565b005b3480156102c857600080fd5b50600d546102dc906001600160a01b031681565b6040516001600160a01b039091168152602001610229565b34801561030057600080fd5b5060055461021f565b34801561031557600080fd5b506102ba6103243660046116bd565b6107aa565b34801561033557600080fd5b506102ba61034436600461178f565b61084b565b34801561035557600080fd5b5061028a61036436600461162d565b610880565b34801561037557600080fd5b5060045460405160ff9091168152602001610229565b34801561039757600080fd5b5061028a6103a6366004611693565b6108e9565b3480156103b757600080fd5b506010546102dc906001600160a01b031681565b3480156103d757600080fd5b506102ba6103e63660046116bd565b61091f565b3480156103f757600080fd5b50600f546102dc906001600160a01b031681565b34801561041757600080fd5b506102ba61042636600461175d565b6109ba565b34801561043757600080fd5b50601b5461028a9060ff1681565b34801561045157600080fd5b5061021f6104603660046115df565b6001600160a01b031660009081526001602052604090205490565b34801561048757600080fd5b506102ba6109e9565b34801561049c57600080fd5b5061028a6104ab3660046115df565b60036020526000908152604090205460ff1681565b3480156104cc57600080fd5b5061021f60095481565b3480156104e257600080fd5b50600c546102dc906001600160a01b031681565b34801561050257600080fd5b506000546001600160a01b03166102dc565b34801561052057600080fd5b50600b546102dc906001600160a01b031681565b34801561054057600080fd5b5061025d610a1f565b34801561055557600080fd5b5061028a610564366004611693565b610a2e565b34801561057557600080fd5b506102ba610a7d565b34801561058a57600080fd5b506102ba61059936600461178f565b610afe565b3480156105aa57600080fd5b5061028a6105b93660046115df565b600e6020526000908152604090205460ff1681565b3480156105da57600080fd5b5061028a6105e9366004611693565b610b33565b3480156105fa57600080fd5b5061028a6106093660046115df565b60116020526000908152604090205460ff1681565b34801561062a57600080fd5b5061021f6106393660046115fa565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561067057600080fd5b506102ba61067f366004611741565b610b40565b34801561069057600080fd5b506102ba61069f3660046115df565b610b81565b6060600780546106b39061191c565b80601f01602080910402602001604051908101604052809291908181526020018280546106df9061191c565b801561072c5780601f106107015761010080835404028352916020019161072c565b820191906000526020600020905b81548152906001019060200180831161070f57829003601f168201915b5050505050905090565b6000610743338484610c1c565b50600192915050565b6000546001600160a01b0316331461077f5760405162461bcd60e51b815260040161077690611806565b60405180910390fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107d45760405162461bcd60e51b815260040161077690611806565b60005b828110156108455781601160008686858181106107f6576107f6611988565b905060200201602081019061080b91906115df565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061083d81611957565b9150506107d7565b50505050565b6000546001600160a01b031633146108755760405162461bcd60e51b815260040161077690611806565b601991909155601a55565b600061088d848484610d41565b6108df84336108da8560405180606001604052806028815260200161199f602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061116a565b610c1c565b5060019392505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916107439185906108da9086611196565b6000546001600160a01b031633146109495760405162461bcd60e51b815260040161077690611806565b60005b8281101561084557816003600086868581811061096b5761096b611988565b905060200201602081019061098091906115df565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806109b281611957565b91505061094c565b6000546001600160a01b031633146109e45760405162461bcd60e51b815260040161077690611806565b600955565b6000546001600160a01b03163314610a135760405162461bcd60e51b815260040161077690611806565b610a1d60006111a9565b565b6060600880546106b39061191c565b600061074333846108da856040518060600160405280602581526020016119c7602591393360009081526002602090815260408083206001600160a01b038d168452909152902054919061116a565b6000546001600160a01b03163314610aa75760405162461bcd60e51b815260040161077690611806565b60185460ff1615610aeb5760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481bdc195b995960921b6044820152606401610776565b6018805460ff1916600117905543601755565b6000546001600160a01b03163314610b285760405162461bcd60e51b815260040161077690611806565b601591909155601655565b6000610743338484610d41565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b815260040161077690611806565b601b805460ff191692151592909217909155601c55565b6000546001600160a01b03163314610bab5760405162461bcd60e51b815260040161077690611806565b6001600160a01b038116610c105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610776565b610c19816111a9565b50565b6001600160a01b038316610c7e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610776565b6001600160a01b038216610cdf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610776565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610da55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610776565b60008111610e0e5760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610776565b60408051606081018252600080825281830181905260208083018590526001600160a01b0386168252600e90529182205460ff168015610ebc5750836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8257600080fd5b505afa158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba9190611776565b155b15610f0f57600c546001600160a01b03868116911614610f0f5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185b1b1bddc81a5b9a5d60921b6044820152606401610776565b601d5460ff1680610f3857506001600160a01b03851660009081526003602052604090205460ff165b80610f5b57506001600160a01b03841660009081526003602052604090205460ff165b15610f7357610f6c858585846111f9565b5050505050565b60185460ff168015610f9e57506001600160a01b03851660009081526011602052604090205460ff16155b610fd65760405162461bcd60e51b81526020600482015260096024820152684e6f7420616c6c6f7760b81b6044820152606401610776565b601954601754439190610fe99083611905565b10801561100e57506001600160a01b0386166000908152600e602052604090205460ff165b15611037576001600160a01b0385166000908152601160205260409020805460ff191660011790555b601a546017546110479083611905565b10156110e3576001600160a01b0386166000908152600e602052604090205460ff16156110e35761109461108b601654601754846110859190611905565b906112c3565b60155490611196565b8411156110e35760405162461bcd60e51b815260206004820152601d60248201527f54726164696e6720616d6f756e74206c696d69742065786365656465640000006044820152606401610776565b6001600160a01b0385166000908152600e602052604090205460ff168061112257506001600160a01b0386166000908152600e602052604090205460ff165b1561112c57600192505b611135856112cf565b156111425761114261132b565b8215801583526111565761115684836114a1565b611162868686856111f9565b505050505050565b6000818484111561118e5760405162461bcd60e51b815260040161077691906117b1565b505050900390565b60006111a282846118ac565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03841660009081526001602052604090205461121c9083611513565b6001600160a01b038086166000908152600160209081526040808320949094558401519186168152919091205461125291611196565b6001600160a01b03808516600081815260016020908152604091829020949094558484015190519081529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3805115156001141561084557610845818561151f565b60006111a282846118e6565b6001600160a01b0381166000908152600e602052604081205460ff1680156112fa5750601d5460ff16155b80156113085750601b5460ff165b80156113255750601c543060009081526001602052604090205410155b92915050565b601d805460ff19166001179055601c54306000908152600260208181526040808420600d546001600160a01b03168552825280842094909455835182815260608101855292939083019080368337019050509050308160008151811061139357611393611988565b6001600160a01b0392831660209182029290920101526010548251911690829060019081106113c4576113c4611988565b6001600160a01b039283166020918202929092010152600d54601c5460405163791ac94760e01b81524793929092169163791ac9479161140f9160009087903090429060040161183b565b600060405180830381600087803b15801561142957600080fd5b505af115801561143d573d6000803e3d6000fd5b505050506000611456824761151390919063ffffffff16565b600b546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611491573d6000803e3d6000fd5b5050601d805460ff191690555050565b6000601954601754436114b49190611905565b11156114db576064600954846114ca91906118e6565b6114d491906118c4565b90506114f5565b60646114e884605a6118e6565b6114f291906118c4565b90505b604082018190526115068382611513565b6020909201919091525050565b60006111a28284611905565b604082015115611538576115388260400151823061153c565b5050565b6001600160a01b03811660009081526001602052604090205461155f9084611196565b6001600160a01b0380831660008181526001602052604090819020939093559151908416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d349087815260200190565b80356001600160a01b03811681146115ca57600080fd5b919050565b803580151581146115ca57600080fd5b6000602082840312156115f157600080fd5b6111a2826115b3565b6000806040838503121561160d57600080fd5b611616836115b3565b9150611624602084016115b3565b90509250929050565b60008060006060848603121561164257600080fd5b61164b846115b3565b9250611659602085016115b3565b9150604084013590509250925092565b6000806040838503121561167c57600080fd5b611685836115b3565b9150611624602084016115cf565b600080604083850312156116a657600080fd5b6116af836115b3565b946020939093013593505050565b6000806000604084860312156116d257600080fd5b833567ffffffffffffffff808211156116ea57600080fd5b818601915086601f8301126116fe57600080fd5b81358181111561170d57600080fd5b8760208260051b850101111561172257600080fd5b60209283019550935061173891860190506115cf565b90509250925092565b6000806040838503121561175457600080fd5b6116af836115cf565b60006020828403121561176f57600080fd5b5035919050565b60006020828403121561178857600080fd5b5051919050565b600080604083850312156117a257600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156117de578581018301518582016040015282016117c2565b818111156117f0576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561188b5784516001600160a01b031683529383019391830191600101611866565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156118bf576118bf611972565b500190565b6000826118e157634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561190057611900611972565b500290565b60008282101561191757611917611972565b500390565b600181811c9082168061193057607f821691505b6020821081141561195157634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561196b5761196b611972565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f95d538e8170283ddebb8eee786835a96c075082d514a29f252735ccef14aeb464736f6c63430008060033
Deployed Bytecode
0x6080604052600436106101fd5760003560e01c806370a082311161010d578063a457c2d7116100a0578063a9059cbb1161006f578063a9059cbb146105ce578063b36d6919146105ee578063dd62ed3e1461061e578063df20fd4914610664578063f2fde38b1461068457600080fd5b8063a457c2d714610549578063a4b3cf9814610569578063a500a5831461057e578063a72905a21461059e57600080fd5b8063876ab8d8116100dc578063876ab8d8146104d65780638da5cb5b146104f6578063956236411461051457806395d89b411461053457600080fd5b806370a0823114610445578063715018a61461047b578063768dc7101461049057806384d6ff2f146104c057600080fd5b806322434836116101905780633fc8cef31161015f5780633fc8cef3146103ab5780634509486a146103cb57806349bd5a5e146103eb57806369fe0e2d1461040b5780636ddd17131461042b57600080fd5b8063224348361461032957806323b872dd14610349578063313ce56714610369578063395093511461038b57600080fd5b80630a656923116101cc5780630a6569231461029a5780631694505e146102bc57806318160ddd146102f45780631e30da541461030957600080fd5b80630445b66714610209578063047fc9aa1461023257806306fdde0314610248578063095ea7b31461026a57600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021f601c5481565b6040519081526020015b60405180910390f35b34801561023e57600080fd5b5061021f60065481565b34801561025457600080fd5b5061025d6106a4565b60405161022991906117b1565b34801561027657600080fd5b5061028a610285366004611693565b610736565b6040519015158152602001610229565b3480156102a657600080fd5b506102ba6102b5366004611669565b61074c565b005b3480156102c857600080fd5b50600d546102dc906001600160a01b031681565b6040516001600160a01b039091168152602001610229565b34801561030057600080fd5b5060055461021f565b34801561031557600080fd5b506102ba6103243660046116bd565b6107aa565b34801561033557600080fd5b506102ba61034436600461178f565b61084b565b34801561035557600080fd5b5061028a61036436600461162d565b610880565b34801561037557600080fd5b5060045460405160ff9091168152602001610229565b34801561039757600080fd5b5061028a6103a6366004611693565b6108e9565b3480156103b757600080fd5b506010546102dc906001600160a01b031681565b3480156103d757600080fd5b506102ba6103e63660046116bd565b61091f565b3480156103f757600080fd5b50600f546102dc906001600160a01b031681565b34801561041757600080fd5b506102ba61042636600461175d565b6109ba565b34801561043757600080fd5b50601b5461028a9060ff1681565b34801561045157600080fd5b5061021f6104603660046115df565b6001600160a01b031660009081526001602052604090205490565b34801561048757600080fd5b506102ba6109e9565b34801561049c57600080fd5b5061028a6104ab3660046115df565b60036020526000908152604090205460ff1681565b3480156104cc57600080fd5b5061021f60095481565b3480156104e257600080fd5b50600c546102dc906001600160a01b031681565b34801561050257600080fd5b506000546001600160a01b03166102dc565b34801561052057600080fd5b50600b546102dc906001600160a01b031681565b34801561054057600080fd5b5061025d610a1f565b34801561055557600080fd5b5061028a610564366004611693565b610a2e565b34801561057557600080fd5b506102ba610a7d565b34801561058a57600080fd5b506102ba61059936600461178f565b610afe565b3480156105aa57600080fd5b5061028a6105b93660046115df565b600e6020526000908152604090205460ff1681565b3480156105da57600080fd5b5061028a6105e9366004611693565b610b33565b3480156105fa57600080fd5b5061028a6106093660046115df565b60116020526000908152604090205460ff1681565b34801561062a57600080fd5b5061021f6106393660046115fa565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561067057600080fd5b506102ba61067f366004611741565b610b40565b34801561069057600080fd5b506102ba61069f3660046115df565b610b81565b6060600780546106b39061191c565b80601f01602080910402602001604051908101604052809291908181526020018280546106df9061191c565b801561072c5780601f106107015761010080835404028352916020019161072c565b820191906000526020600020905b81548152906001019060200180831161070f57829003601f168201915b5050505050905090565b6000610743338484610c1c565b50600192915050565b6000546001600160a01b0316331461077f5760405162461bcd60e51b815260040161077690611806565b60405180910390fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107d45760405162461bcd60e51b815260040161077690611806565b60005b828110156108455781601160008686858181106107f6576107f6611988565b905060200201602081019061080b91906115df565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061083d81611957565b9150506107d7565b50505050565b6000546001600160a01b031633146108755760405162461bcd60e51b815260040161077690611806565b601991909155601a55565b600061088d848484610d41565b6108df84336108da8560405180606001604052806028815260200161199f602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061116a565b610c1c565b5060019392505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916107439185906108da9086611196565b6000546001600160a01b031633146109495760405162461bcd60e51b815260040161077690611806565b60005b8281101561084557816003600086868581811061096b5761096b611988565b905060200201602081019061098091906115df565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806109b281611957565b91505061094c565b6000546001600160a01b031633146109e45760405162461bcd60e51b815260040161077690611806565b600955565b6000546001600160a01b03163314610a135760405162461bcd60e51b815260040161077690611806565b610a1d60006111a9565b565b6060600880546106b39061191c565b600061074333846108da856040518060600160405280602581526020016119c7602591393360009081526002602090815260408083206001600160a01b038d168452909152902054919061116a565b6000546001600160a01b03163314610aa75760405162461bcd60e51b815260040161077690611806565b60185460ff1615610aeb5760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481bdc195b995960921b6044820152606401610776565b6018805460ff1916600117905543601755565b6000546001600160a01b03163314610b285760405162461bcd60e51b815260040161077690611806565b601591909155601655565b6000610743338484610d41565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b815260040161077690611806565b601b805460ff191692151592909217909155601c55565b6000546001600160a01b03163314610bab5760405162461bcd60e51b815260040161077690611806565b6001600160a01b038116610c105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610776565b610c19816111a9565b50565b6001600160a01b038316610c7e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610776565b6001600160a01b038216610cdf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610776565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610da55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610776565b60008111610e0e5760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610776565b60408051606081018252600080825281830181905260208083018590526001600160a01b0386168252600e90529182205460ff168015610ebc5750836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8257600080fd5b505afa158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba9190611776565b155b15610f0f57600c546001600160a01b03868116911614610f0f5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185b1b1bddc81a5b9a5d60921b6044820152606401610776565b601d5460ff1680610f3857506001600160a01b03851660009081526003602052604090205460ff165b80610f5b57506001600160a01b03841660009081526003602052604090205460ff165b15610f7357610f6c858585846111f9565b5050505050565b60185460ff168015610f9e57506001600160a01b03851660009081526011602052604090205460ff16155b610fd65760405162461bcd60e51b81526020600482015260096024820152684e6f7420616c6c6f7760b81b6044820152606401610776565b601954601754439190610fe99083611905565b10801561100e57506001600160a01b0386166000908152600e602052604090205460ff165b15611037576001600160a01b0385166000908152601160205260409020805460ff191660011790555b601a546017546110479083611905565b10156110e3576001600160a01b0386166000908152600e602052604090205460ff16156110e35761109461108b601654601754846110859190611905565b906112c3565b60155490611196565b8411156110e35760405162461bcd60e51b815260206004820152601d60248201527f54726164696e6720616d6f756e74206c696d69742065786365656465640000006044820152606401610776565b6001600160a01b0385166000908152600e602052604090205460ff168061112257506001600160a01b0386166000908152600e602052604090205460ff165b1561112c57600192505b611135856112cf565b156111425761114261132b565b8215801583526111565761115684836114a1565b611162868686856111f9565b505050505050565b6000818484111561118e5760405162461bcd60e51b815260040161077691906117b1565b505050900390565b60006111a282846118ac565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03841660009081526001602052604090205461121c9083611513565b6001600160a01b038086166000908152600160209081526040808320949094558401519186168152919091205461125291611196565b6001600160a01b03808516600081815260016020908152604091829020949094558484015190519081529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3805115156001141561084557610845818561151f565b60006111a282846118e6565b6001600160a01b0381166000908152600e602052604081205460ff1680156112fa5750601d5460ff16155b80156113085750601b5460ff165b80156113255750601c543060009081526001602052604090205410155b92915050565b601d805460ff19166001179055601c54306000908152600260208181526040808420600d546001600160a01b03168552825280842094909455835182815260608101855292939083019080368337019050509050308160008151811061139357611393611988565b6001600160a01b0392831660209182029290920101526010548251911690829060019081106113c4576113c4611988565b6001600160a01b039283166020918202929092010152600d54601c5460405163791ac94760e01b81524793929092169163791ac9479161140f9160009087903090429060040161183b565b600060405180830381600087803b15801561142957600080fd5b505af115801561143d573d6000803e3d6000fd5b505050506000611456824761151390919063ffffffff16565b600b546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611491573d6000803e3d6000fd5b5050601d805460ff191690555050565b6000601954601754436114b49190611905565b11156114db576064600954846114ca91906118e6565b6114d491906118c4565b90506114f5565b60646114e884605a6118e6565b6114f291906118c4565b90505b604082018190526115068382611513565b6020909201919091525050565b60006111a28284611905565b604082015115611538576115388260400151823061153c565b5050565b6001600160a01b03811660009081526001602052604090205461155f9084611196565b6001600160a01b0380831660008181526001602052604090819020939093559151908416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d349087815260200190565b80356001600160a01b03811681146115ca57600080fd5b919050565b803580151581146115ca57600080fd5b6000602082840312156115f157600080fd5b6111a2826115b3565b6000806040838503121561160d57600080fd5b611616836115b3565b9150611624602084016115b3565b90509250929050565b60008060006060848603121561164257600080fd5b61164b846115b3565b9250611659602085016115b3565b9150604084013590509250925092565b6000806040838503121561167c57600080fd5b611685836115b3565b9150611624602084016115cf565b600080604083850312156116a657600080fd5b6116af836115b3565b946020939093013593505050565b6000806000604084860312156116d257600080fd5b833567ffffffffffffffff808211156116ea57600080fd5b818601915086601f8301126116fe57600080fd5b81358181111561170d57600080fd5b8760208260051b850101111561172257600080fd5b60209283019550935061173891860190506115cf565b90509250925092565b6000806040838503121561175457600080fd5b6116af836115cf565b60006020828403121561176f57600080fd5b5035919050565b60006020828403121561178857600080fd5b5051919050565b600080604083850312156117a257600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156117de578581018301518582016040015282016117c2565b818111156117f0576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561188b5784516001600160a01b031683529383019391830191600101611866565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156118bf576118bf611972565b500190565b6000826118e157634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561190057611900611972565b500290565b60008282101561191757611917611972565b500390565b600181811c9082168061193057607f821691505b6020821081141561195157634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561196b5761196b611972565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f95d538e8170283ddebb8eee786835a96c075082d514a29f252735ccef14aeb464736f6c63430008060033
Deployed Bytecode Sourcemap
10945:9824:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12429:46;;;;;;;;;;;;;;;;;;;8621:25:1;;;8609:2;8594:18;12429:46:0;;;;;;;;11319:56;;;;;;;;;;;;;;;;13381:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14212:161::-;;;;;;;;;;-1:-1:-1;14212:161:0;;;;;:::i;:::-;;:::i;:::-;;;3611:14:1;;3604:22;3586:41;;3574:2;3559:18;14212:161:0;3541:92:1;20389:109:0;;;;;;;;;;-1:-1:-1;20389:109:0;;;;;:::i;:::-;;:::i;:::-;;11739:41;;;;;;;;;;-1:-1:-1;11739:41:0;;;;-1:-1:-1;;;;;11739:41:0;;;;;;-1:-1:-1;;;;;3402:32:1;;;3384:51;;3372:2;3357:18;11739:41:0;3339:102:1;13658:95:0;;;;;;;;;;-1:-1:-1;13738:7:0;;13658:95;;19797:211;;;;;;;;;;-1:-1:-1;19797:211:0;;;;;:::i;:::-;;:::i;20227:154::-;;;;;;;;;;-1:-1:-1;20227:154:0;;;;;:::i;:::-;;:::i;14381:313::-;;;;;;;;;;-1:-1:-1;14381:313:0;;;;;:::i;:::-;;:::i;13567:83::-;;;;;;;;;;-1:-1:-1;13633:9:0;;13567:83;;13633:9;;;;9784:36:1;;9772:2;9757:18;13567:83:0;9739:87:1;14702:218:0;;;;;;;;;;-1:-1:-1;14702:218:0;;;;;:::i;:::-;;:::i;11872:19::-;;;;;;;;;;-1:-1:-1;11872:19:0;;;;-1:-1:-1;;;;;11872:19:0;;;19570:219;;;;;;;;;;-1:-1:-1;19570:219:0;;;;;:::i;:::-;;:::i;11838:27::-;;;;;;;;;;-1:-1:-1;11838:27:0;;;;-1:-1:-1;;;;;11838:27:0;;;20669:95;;;;;;;;;;-1:-1:-1;20669:95:0;;;;;:::i;:::-;;:::i;12392:30::-;;;;;;;;;;-1:-1:-1;12392:30:0;;;;;;;;13761:117;;;;;;;;;;-1:-1:-1;13761:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;13854:16:0;13827:7;13854:16;;;:7;:16;;;;;;;13761:117;3792:94;;;;;;;;;;;;;:::i;11191:51::-;;;;;;;;;;-1:-1:-1;11191:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11468:29;;;;;;;;;;;;;;;;11655:75;;;;;;;;;;-1:-1:-1;11655:75:0;;;;-1:-1:-1;;;;;11655:75:0;;;3569:87;;;;;;;;;;-1:-1:-1;3615:7:0;3642:6;-1:-1:-1;;;;;3642:6:0;3569:87;;11572:73;;;;;;;;;;-1:-1:-1;11572:73:0;;;;-1:-1:-1;;;;;11572:73:0;;;13472:87;;;;;;;;;;;;;:::i;14928:269::-;;;;;;;;;;-1:-1:-1;14928:269:0;;;;;:::i;:::-;;:::i;19371:191::-;;;;;;;;;;;;;:::i;20016:203::-;;;;;;;;;;-1:-1:-1;20016:203:0;;;;;:::i;:::-;;:::i;11789:40::-;;;;;;;;;;-1:-1:-1;11789:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13886:167;;;;;;;;;;-1:-1:-1;13886:167:0;;;;;:::i;:::-;;:::i;11900:43::-;;;;;;;;;;-1:-1:-1;11900:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14061:143;;;;;;;;;;-1:-1:-1;14061:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;14169:18:0;;;14142:7;14169:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14061:143;20506:155;;;;;;;;;;-1:-1:-1;20506:155:0;;;;;:::i;:::-;;:::i;3894:192::-;;;;;;;;;;-1:-1:-1;3894:192:0;;;;;:::i;:::-;;:::i;13381:83::-;13418:13;13451:5;13444:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13381:83;:::o;14212:161::-;14287:4;14304:39;3206:10;14327:7;14336:6;14304:8;:39::i;:::-;-1:-1:-1;14361:4:0;14212:161;;;;:::o;20389:109::-;3615:7;3642:6;-1:-1:-1;;;;;3642:6:0;3206:10;3704:23;3696:68;;;;-1:-1:-1;;;3696:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;20466:14:0;;;::::1;;::::0;;;:8:::1;:14;::::0;;;;:24;;-1:-1:-1;;20466:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20389:109::o;19797:211::-;3615:7;3642:6;-1:-1:-1;;;;;3642:6:0;3206:10;3704:23;3696:68;;;;-1:-1:-1;;;3696:68:0;;;;;;;:::i;:::-;19903:6:::1;19898:103;19915:16:::0;;::::1;19898:103;;;19977:12;19953:11;:21;19965:5;;19971:1;19965:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19953:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19953:21:0;:36;;-1:-1:-1;;19953:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19933:3;::::1;::::0;::::1;:::i;:::-;;;;19898:103;;;;19797:211:::0;;;:::o;20227:154::-;3615:7;3642:6;-1:-1:-1;;;;;3642:6:0;3206:10;3704:23;3696:68;;;;-1:-1:-1;;;3696:68:0;;;;;;;:::i;:::-;20316:9:::1;:22:::0;;;;20349:10:::1;:24:::0;20227:154::o;14381:313::-;14479:4;14496:36;14506:6;14514:9;14525:6;14496:9;:36::i;:::-;14543:121;14552:6;3206:10;14574:89;14612:6;14574:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14574:19:0;;;;;;:11;:19;;;;;;;;3206:10;14574:33;;;;;;;;;;:37;:89::i;:::-;14543:8;:121::i;:::-;-1:-1:-1;14682:4:0;14381:313;;;;;:::o;14702:218::-;3206:10;14790:4;14839:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14839:34:0;;;;;;;;;;14790:4;;14807:83;;14830:7;;14839:50;;14878:10;14839:38;:50::i;19570:219::-;3615:7;3642:6;-1:-1:-1;;;;;3642:6:0;3206:10;3704:23;3696:68;;;;-1:-1:-1;;;3696:68:0;;;;;;;:::i;:::-;19679:6:::1;19674:108;19691:16:::0;;::::1;19674:108;;;19760:10;19729:18;:28;19748:5;;19754:1;19748:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19729:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19729:28:0;:41;;-1:-1:-1;;19729:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19709:3;::::1;::::0;::::1;:::i;:::-;;;;19674:108;;20669:95:::0;3615:7;3642:6;-1:-1:-1;;;;;3642:6:0;3206:10;3704:23;3696:68;;;;-1:-1:-1;;;3696:68:0;;;;;;;:::i;:::-;20734:10:::1;:22:::0;20669:95::o;3792:94::-;3615:7;3642:6;-1:-1:-1;;;;;3642:6:0;3206:10;3704:23;3696:68;;;;-1:-1:-1;;;3696:68:0;;;;;;;:::i;:::-;3857:21:::1;3875:1;3857:9;:21::i;:::-;3792:94::o:0;13472:87::-;13511:13;13544:7;13537:14;;;;;:::i;14928:269::-;15021:4;15038:129;3206:10;15061:7;15070:96;15109:15;15070:96;;;;;;;;;;;;;;;;;3206:10;15070:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15070:34:0;;;;;;;;;;;;:38;:96::i;19371:191::-;3615:7;3642:6;-1:-1:-1;;;;;3642:6:0;3206:10;3704:23;3696:68;;;;-1:-1:-1;;;3696:68:0;;;;;;;:::i;:::-;19439:15:::1;::::0;::::1;;:24;19431:51;;;::::0;-1:-1:-1;;;19431:51:0;;6485:2:1;19431:51:0::1;::::0;::::1;6467:21:1::0;6524:2;6504:18;;;6497:30;-1:-1:-1;;;6543:18:1;;;6536:44;6597:18;;19431:51:0::1;6457:164:1::0;19431:51:0::1;19493:15;:22:::0;;-1:-1:-1;;19493:22:0::1;19511:4;19493:22;::::0;;19542:12:::1;19526:13;:28:::0;19371:191::o;20016:203::-;3615:7;3642:6;-1:-1:-1;;;;;3642:6:0;3206:10;3704:23;3696:68;;;;-1:-1:-1;;;3696:68:0;;;;;;;:::i;:::-;20126:18:::1;:40:::0;;;;20177:15:::1;:34:::0;20016:203::o;13886:167::-;13964:4;13981:42;3206:10;14005:9;14016:6;13981:9;:42::i;20506:155::-;3615:7;3642:6;-1:-1:-1;;;;;3642:6:0;3206:10;3704:23;3696:68;;;;-1:-1:-1;;;3696:68:0;;;;;;;:::i;:::-;20597:11:::1;:22:::0;;-1:-1:-1;;20597:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;20630:13:::1;:23:::0;20506:155::o;3894:192::-;3615:7;3642:6;-1:-1:-1;;;;;3642:6:0;3206:10;3704:23;3696:68;;;;-1:-1:-1;;;3696:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3983:22:0;::::1;3975:73;;;::::0;-1:-1:-1;;;3975:73:0;;4897:2:1;3975:73:0::1;::::0;::::1;4879:21:1::0;4936:2;4916:18;;;4909:30;4975:34;4955:18;;;4948:62;-1:-1:-1;;;5026:18:1;;;5019:36;5072:19;;3975:73:0::1;4869:228:1::0;3975:73:0::1;4059:19;4069:8;4059:9;:19::i;:::-;3894:192:::0;:::o;15205:337::-;-1:-1:-1;;;;;15298:19:0;;15290:68;;;;-1:-1:-1;;;15290:68:0;;7577:2:1;15290:68:0;;;7559:21:1;7616:2;7596:18;;;7589:30;7655:34;7635:18;;;7628:62;-1:-1:-1;;;7706:18:1;;;7699:34;7750:19;;15290:68:0;7549:226:1;15290:68:0;-1:-1:-1;;;;;15377:21:0;;15369:68;;;;-1:-1:-1;;;15369:68:0;;5304:2:1;15369:68:0;;;5286:21:1;5343:2;5323:18;;;5316:30;5382:34;5362:18;;;5355:62;-1:-1:-1;;;5433:18:1;;;5426:32;5475:19;;15369:68:0;5276:224:1;15369:68:0;-1:-1:-1;;;;;15450:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15502:32;;8621:25:1;;;15502:32:0;;8594:18:1;15502:32:0;;;;;;;;15205:337;;;:::o;17484:1472::-;-1:-1:-1;;;;;17606:18:0;;17598:68;;;;-1:-1:-1;;;17598:68:0;;7171:2:1;17598:68:0;;;7153:21:1;7210:2;7190:18;;;7183:30;7249:34;7229:18;;;7222:62;-1:-1:-1;;;7300:18:1;;;7293:35;7345:19;;17598:68:0;7143:227:1;17598:68:0;17694:1;17685:6;:10;17677:71;;;;-1:-1:-1;;;17677:71:0;;5707:2:1;17677:71:0;;;5689:21:1;5746:2;5726:18;;;5719:30;5785:34;5765:18;;;5758:62;-1:-1:-1;;;5836:18:1;;;5829:46;5892:19;;17677:71:0;5679:238:1;17677:71:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;17813:30:0;;;-1:-1:-1;;;;;17860:12:0;;;;:8;:12;;;;;;;;:45;;;;;17883:2;-1:-1:-1;;;;;17876:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;17860:45;17856:128;;;17939:15;;-1:-1:-1;;;;;17931:23:0;;;17939:15;;17931:23;17923:49;;;;-1:-1:-1;;;17923:49:0;;6828:2:1;17923:49:0;;;6810:21:1;6867:2;6847:18;;;6840:30;-1:-1:-1;;;6886:18:1;;;6879:44;6940:18;;17923:49:0;6800:164:1;17923:49:0;17999:6;;;;;:34;;-1:-1:-1;;;;;;18009:24:0;;;;;;:18;:24;;;;;;;;17999:34;:60;;;-1:-1:-1;;;;;;18037:22:0;;;;;;:18;:22;;;;;;;;17999:60;17996:135;;;18082:36;18097:4;18102:2;18105:6;18112:5;18082:14;:36::i;:::-;18075:43;;17484:1472;;;:::o;17996:135::-;18151:15;;;;:37;;;;-1:-1:-1;;;;;;18171:17:0;;;;;;:11;:17;;;;;;;;18170:18;18151:37;18143:58;;;;-1:-1:-1;;;18143:58:0;;8340:2:1;18143:58:0;;;8322:21:1;8379:1;8359:18;;;8352:29;-1:-1:-1;;;8397:18:1;;;8390:39;8446:18;;18143:58:0;8312:158:1;18143:58:0;18297:9;;18281:13;;18237:12;;18297:9;18266:28;;18237:12;18266:28;:::i;:::-;:40;:58;;;;-1:-1:-1;;;;;;18310:14:0;;;;;;:8;:14;;;;;;;;18266:58;18262:113;;;-1:-1:-1;;;;;18341:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;18341:22:0;18359:4;18341:22;;;18262:113;18422:10;;18406:13;;18391:28;;:12;:28;:::i;:::-;:41;18387:255;;;-1:-1:-1;;;;;18453:14:0;;;;;;:8;:14;;;;;;;;18449:182;;;18506:75;18529:51;18564:15;;18545:13;;18530:12;:28;;;;:::i;:::-;18529:34;;:51::i;:::-;18506:18;;;:22;:75::i;:::-;18496:6;:85;;18488:127;;;;-1:-1:-1;;;18488:127:0;;7982:2:1;18488:127:0;;;7964:21:1;8021:2;8001:18;;;7994:30;8060:31;8040:18;;;8033:59;8109:18;;18488:127:0;7954:179:1;18488:127:0;-1:-1:-1;;;;;18661:12:0;;;;;;:8;:12;;;;;;;;;:30;;-1:-1:-1;;;;;;18677:14:0;;;;;;:8;:14;;;;;;;;18661:30;18658:75;;;18717:4;18707:14;;18658:75;18748:18;18763:2;18748:14;:18::i;:::-;18745:37;;;18769:10;:8;:10::i;:::-;18794:23;;;;;;18828:64;;18856:24;18867:6;18874:5;18856:10;:24::i;:::-;18912:36;18927:4;18932:2;18935:6;18942:5;18912:14;:36::i;:::-;17587:1369;;;17484:1472;;;:::o;2454:206::-;2540:7;2601:12;2593:6;;;;2585:29;;;;-1:-1:-1;;;2585:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2636:5:0;;;2454:206::o;1924:98::-;1982:7;2009:5;2013:1;2009;:5;:::i;:::-;2002:12;1924:98;-1:-1:-1;;;1924:98:0:o;4094:173::-;4150:16;4169:6;;-1:-1:-1;;;;;4186:17:0;;;-1:-1:-1;;;;;;4186:17:0;;;;;;4219:40;;4169:6;;;;;;;4219:40;;4150:16;4219:40;4139:128;4094:173;:::o;18964:399::-;-1:-1:-1;;;;;19096:15:0;;;;;;:7;:15;;;;;;:28;;19116:7;19096:19;:28::i;:::-;-1:-1:-1;;;;;19078:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;19179:21;;;19156:18;;;;;;;;;;:45;;:22;:45::i;:::-;-1:-1:-1;;;;;19135:18:0;;;;;;;:7;:18;;;;;;;;;:66;;;;19247:21;;;;19219:50;;8621:25:1;;;19135:18:0;;19219:50;;;;;;8594:18:1;19219:50:0;;;;;;;19285:13;;:21;;19302:4;19285:21;19282:74;;;19322:22;19331:5;19337:6;19322:8;:22::i;2136:98::-;2194:7;2221:5;2225:1;2221;:5;:::i;16623:204::-;-1:-1:-1;;;;;16707:12:0;;16682:4;16707:12;;;:8;:12;;;;;;;;16706:35;;;;-1:-1:-1;16735:6:0;;;;16734:7;16706:35;:59;;;;-1:-1:-1;16754:11:0;;;;16706:59;:113;;;;-1:-1:-1;16806:13:0;;16796:4;13827:7;13854:16;;;:7;:16;;;;;;16778:41;;16706:113;16699:120;16623:204;-1:-1:-1;;16623:204:0:o;16835:641::-;12522:6;:13;;-1:-1:-1;;12522:13:0;12531:4;12522:13;;;16939::::1;::::0;16904:4:::1;-1:-1:-1::0;16884:26:0;;;:11:::1;:26;::::0;;;;;;;16919:15:::1;::::0;-1:-1:-1;;;;;16919:15:0::1;16884:52:::0;;;;;;;:68;;;;16997:16;;;;;;;::::1;::::0;;-1:-1:-1;;16997:16:0;;::::1;::::0;16884:26;16997:16:::1;::::0;::::1;;::::0;-1:-1:-1;16997:16:0::1;16973:40;;17042:4;17024;17029:1;17024:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17024:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17068:4:::1;::::0;17058:7;;17068:4;::::1;::::0;17058;;17068;;17058:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;17058:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;17141:15:::1;::::0;17222:13:::1;::::0;17141:198:::1;::::0;-1:-1:-1;;;17141:198:0;;17107:21:::1;::::0;17141:15;;;::::1;::::0;:66:::1;::::0;:198:::1;::::0;17083:21:::1;::::0;17266:4;;17293::::1;::::0;17313:15:::1;::::0;17141:198:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17352:17;17372:40;17398:13;17372:21;:25;;:40;;;;:::i;:::-;17433:13;::::0;17425:42:::1;::::0;17352:60;;-1:-1:-1;;;;;;17433:13:0::1;::::0;17425:42;::::1;;;::::0;17352:60;;17433:13:::1;17425:42:::0;17433:13;17425:42;17352:60;17433:13;17425:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12540:6:0;:14;;-1:-1:-1;;12540:14:0;;;-1:-1:-1;;16835:641:0:o;16067:369::-;16148:9;16213;;16197:13;;16182:12;:28;;;;:::i;:::-;:40;16178:166;;;16269:3;16256:10;;16246:7;:20;;;;:::i;:::-;:26;;;;:::i;:::-;16239:33;;16178:166;;;16327:3;16312:12;:7;16322:2;16312:12;:::i;:::-;:18;;;;:::i;:::-;16305:25;;16178:166;16354:15;;;:22;;;16411:17;:7;16372:4;16411:11;:17::i;:::-;16387:21;;;;:41;;;;-1:-1:-1;;16067:369:0:o;2030:98::-;2088:7;2115:5;2119:1;2115;:5;:::i;16444:171::-;16517:15;;;;:19;16513:95;;16553:43;16559:5;:15;;;16576:4;16590;16553:5;:43::i;:::-;16444:171;;:::o;15550:161::-;-1:-1:-1;;;;;15638:11:0;;;;;;:7;:11;;;;;;:23;;15654:6;15638:15;:23::i;:::-;-1:-1:-1;;;;;15624:11:0;;;;;;;:7;:11;;;;;;;:37;;;;15677:26;;;;;;;;;;15696:6;8621:25:1;;8609:2;8594:18;;8576:76;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:160::-;257:20;;313:13;;306:21;296:32;;286:2;;342:1;339;332:12;357:186;416:6;469:2;457:9;448:7;444:23;440:32;437:2;;;485:1;482;475:12;437:2;508:29;527:9;508:29;:::i;548:260::-;616:6;624;677:2;665:9;656:7;652:23;648:32;645:2;;;693:1;690;683:12;645:2;716:29;735:9;716:29;:::i;:::-;706:39;;764:38;798:2;787:9;783:18;764:38;:::i;:::-;754:48;;635:173;;;;;:::o;813:328::-;890:6;898;906;959:2;947:9;938:7;934:23;930:32;927:2;;;975:1;972;965:12;927:2;998:29;1017:9;998:29;:::i;:::-;988:39;;1046:38;1080:2;1069:9;1065:18;1046:38;:::i;:::-;1036:48;;1131:2;1120:9;1116:18;1103:32;1093:42;;917:224;;;;;:::o;1146:254::-;1211:6;1219;1272:2;1260:9;1251:7;1247:23;1243:32;1240:2;;;1288:1;1285;1278:12;1240:2;1311:29;1330:9;1311:29;:::i;:::-;1301:39;;1359:35;1390:2;1379:9;1375:18;1359:35;:::i;1405:254::-;1473:6;1481;1534:2;1522:9;1513:7;1509:23;1505:32;1502:2;;;1550:1;1547;1540:12;1502:2;1573:29;1592:9;1573:29;:::i;:::-;1563:39;1649:2;1634:18;;;;1621:32;;-1:-1:-1;;;1492:167:1:o;1664:689::-;1756:6;1764;1772;1825:2;1813:9;1804:7;1800:23;1796:32;1793:2;;;1841:1;1838;1831:12;1793:2;1881:9;1868:23;1910:18;1951:2;1943:6;1940:14;1937:2;;;1967:1;1964;1957:12;1937:2;2005:6;1994:9;1990:22;1980:32;;2050:7;2043:4;2039:2;2035:13;2031:27;2021:2;;2072:1;2069;2062:12;2021:2;2112;2099:16;2138:2;2130:6;2127:14;2124:2;;;2154:1;2151;2144:12;2124:2;2209:7;2202:4;2192:6;2189:1;2185:14;2181:2;2177:23;2173:34;2170:47;2167:2;;;2230:1;2227;2220:12;2167:2;2261:4;2253:13;;;;-1:-1:-1;2285:6:1;-1:-1:-1;2310:37:1;;2326:20;;;-1:-1:-1;2310:37:1;:::i;:::-;2300:47;;1783:570;;;;;:::o;2358:248::-;2423:6;2431;2484:2;2472:9;2463:7;2459:23;2455:32;2452:2;;;2500:1;2497;2490:12;2452:2;2523:26;2539:9;2523:26;:::i;2611:180::-;2670:6;2723:2;2711:9;2702:7;2698:23;2694:32;2691:2;;;2739:1;2736;2729:12;2691:2;-1:-1:-1;2762:23:1;;2681:110;-1:-1:-1;2681:110:1:o;2796:184::-;2866:6;2919:2;2907:9;2898:7;2894:23;2890:32;2887:2;;;2935:1;2932;2925:12;2887:2;-1:-1:-1;2958:16:1;;2877:103;-1:-1:-1;2877:103:1:o;2985:248::-;3053:6;3061;3114:2;3102:9;3093:7;3089:23;3085:32;3082:2;;;3130:1;3127;3120:12;3082:2;-1:-1:-1;;3153:23:1;;;3223:2;3208:18;;;3195:32;;-1:-1:-1;3072:161:1:o;4093:597::-;4205:4;4234:2;4263;4252:9;4245:21;4295:6;4289:13;4338:6;4333:2;4322:9;4318:18;4311:34;4363:1;4373:140;4387:6;4384:1;4381:13;4373:140;;;4482:14;;;4478:23;;4472:30;4448:17;;;4467:2;4444:26;4437:66;4402:10;;4373:140;;;4531:6;4528:1;4525:13;4522:2;;;4601:1;4596:2;4587:6;4576:9;4572:22;4568:31;4561:42;4522:2;-1:-1:-1;4674:2:1;4653:15;-1:-1:-1;;4649:29:1;4634:45;;;;4681:2;4630:54;;4214:476;-1:-1:-1;;;4214:476:1:o;5922:356::-;6124:2;6106:21;;;6143:18;;;6136:30;6202:34;6197:2;6182:18;;6175:62;6269:2;6254:18;;6096:182::o;8657:980::-;8919:4;8967:3;8956:9;8952:19;8998:6;8987:9;8980:25;9024:2;9062:6;9057:2;9046:9;9042:18;9035:34;9105:3;9100:2;9089:9;9085:18;9078:31;9129:6;9164;9158:13;9195:6;9187;9180:22;9233:3;9222:9;9218:19;9211:26;;9272:2;9264:6;9260:15;9246:29;;9293:1;9303:195;9317:6;9314:1;9311:13;9303:195;;;9382:13;;-1:-1:-1;;;;;9378:39:1;9366:52;;9473:15;;;;9438:12;;;;9414:1;9332:9;9303:195;;;-1:-1:-1;;;;;;;9554:32:1;;;;9549:2;9534:18;;9527:60;-1:-1:-1;;;9618:3:1;9603:19;9596:35;9515:3;8928:709;-1:-1:-1;;;8928:709:1:o;9831:128::-;9871:3;9902:1;9898:6;9895:1;9892:13;9889:2;;;9908:18;;:::i;:::-;-1:-1:-1;9944:9:1;;9879:80::o;9964:217::-;10004:1;10030;10020:2;;10074:10;10069:3;10065:20;10062:1;10055:31;10109:4;10106:1;10099:15;10137:4;10134:1;10127:15;10020:2;-1:-1:-1;10166:9:1;;10010:171::o;10186:168::-;10226:7;10292:1;10288;10284:6;10280:14;10277:1;10274:21;10269:1;10262:9;10255:17;10251:45;10248:2;;;10299:18;;:::i;:::-;-1:-1:-1;10339:9:1;;10238:116::o;10359:125::-;10399:4;10427:1;10424;10421:8;10418:2;;;10432:18;;:::i;:::-;-1:-1:-1;10469:9:1;;10408:76::o;10489:380::-;10568:1;10564:12;;;;10611;;;10632:2;;10686:4;10678:6;10674:17;10664:27;;10632:2;10739;10731:6;10728:14;10708:18;10705:38;10702:2;;;10785:10;10780:3;10776:20;10773:1;10766:31;10820:4;10817:1;10810:15;10848:4;10845:1;10838:15;10702:2;;10544:325;;;:::o;10874:135::-;10913:3;-1:-1:-1;;10934:17:1;;10931:2;;;10954:18;;:::i;:::-;-1:-1:-1;11001:1:1;10990:13;;10921:88::o;11014:127::-;11075:10;11070:3;11066:20;11063:1;11056:31;11106:4;11103:1;11096:15;11130:4;11127:1;11120:15;11146:127;11207:10;11202:3;11198:20;11195:1;11188:31;11238:4;11235:1;11228:15;11262:4;11259:1;11252:15
Swarm Source
ipfs://f95d538e8170283ddebb8eee786835a96c075082d514a29f252735ccef14aeb4
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.