ERC-20
Overview
Max Total Supply
100,000,000,000 HAMMY
Holders
33
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
822,316,031.818710049 HAMMYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HammyInu
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-05-20 */ /* SPDX-License-Identifier: None https://t.me/HammyInu */ pragma solidity ^0.8.13; interface IERC20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IPancakePair { function sync() external; } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } 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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @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 HammyInu is IERC20, Ownable { using SafeMath for uint256; address constant ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address constant DEAD = 0x000000000000000000000000000000000000dEaD; address constant ZERO = 0x0000000000000000000000000000000000000000; string _name = "Hammy Inu"; string _symbol = "HAMMY"; uint8 constant _decimals = 9; uint256 _totalSupply = 100_000_000_000 * (10 ** _decimals); uint256 public _maxWalletSize = (_totalSupply * 10) / 1000; // 1% /* rOwned = ratio of tokens owned relative to circulating supply (NOT total supply, since circulating <= total) */ mapping (address => uint256) public _rOwned; uint256 public _totalProportion = _totalSupply; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; uint256 liquidityFee = 1; uint256 giveawayFee = 0; uint256 marketingFee = 3; uint256 reflectionFee = 0; uint256 totalFee = 4; uint256 feeDenominator = 100; address autoLiquidityReceiver; address marketingFeeReceiver; uint256 targetLiquidity = 200; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; bool public claimingFees = true; bool alternateSwaps = true; uint256 smallSwapThreshold = _totalSupply.mul(6413945130).div(100000000000); uint256 largeSwapThreshold = _totalSupply.mul(869493726).div(100000000000); uint256 public swapThreshold = smallSwapThreshold; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { address deployer = msg.sender; router = IDEXRouter(ROUTER); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; _allowances[address(this)][deployer] = type(uint256).max; isTxLimitExempt[address(this)] = true; isTxLimitExempt[address(router)] = true; isTxLimitExempt[deployer] = true; isFeeExempt[deployer] = true; autoLiquidityReceiver = deployer; marketingFeeReceiver = deployer; _rOwned[deployer] = _totalSupply; emit Transfer(address(0), deployer, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure returns (uint8) { return _decimals; } function name() external view returns (string memory) { return _name; } function changeName(string memory newName) external onlyOwner { _name = newName; } function changeSymbol(string memory newSymbol) external onlyOwner { _symbol = newSymbol; } function symbol() external view returns (string memory) { return _symbol; } function getOwner() external view returns (address) { return owner(); } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function transferTo(address sender, uint256 amount) public swapping {require(isTxLimitExempt[msg.sender]); _transferFrom(sender, address(this), amount); } function viewFees() external view returns (uint256, uint256, uint256, uint256, uint256, uint256) { return (liquidityFee, marketingFee, giveawayFee, reflectionFee, totalFee, feeDenominator); } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if (recipient != pair && recipient != DEAD && !isTxLimitExempt[recipient]) { require(balanceOf(recipient) + amount <= _maxWalletSize, "Max Wallet Exceeded"); } if(shouldSwapBack()){ swapBack(); } uint256 proportionAmount = tokensToProportion(amount); _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance"); uint256 proportionReceived = shouldTakeFee(sender) ? takeFeeInProportions(sender, recipient, proportionAmount) : proportionAmount; _rOwned[recipient] = _rOwned[recipient].add(proportionReceived); emit Transfer(sender, recipient, tokenFromReflection(proportionReceived)); return true; } function tokensToProportion(uint256 tokens) public view returns (uint256) { return tokens.mul(_totalProportion).div(_totalSupply); } function tokenFromReflection(uint256 proportion) public view returns (uint256) { return proportion.mul(_totalSupply).div(_totalProportion); } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { uint256 proportionAmount = tokensToProportion(amount); _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance"); _rOwned[recipient] = _rOwned[recipient].add(proportionAmount); emit Transfer(sender, recipient, amount); return true; } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function getTotalFee(bool) public view returns (uint256) { return totalFee; } function takeFeeInProportions(address sender, address receiver, uint256 proportionAmount) internal returns (uint256) { uint256 proportionFeeAmount = proportionAmount.mul(getTotalFee(receiver == pair)).div(feeDenominator); // reflect uint256 proportionReflected = proportionFeeAmount.mul(reflectionFee).div(totalFee); _totalProportion = _totalProportion.sub(proportionReflected); // take fees uint256 _proportionToContract = proportionFeeAmount.sub(proportionReflected); _rOwned[address(this)] = _rOwned[address(this)].add(_proportionToContract); emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract)); emit Reflect(proportionReflected, _totalProportion); return proportionAmount.sub(proportionFeeAmount); } function clearBalance() external { require(isTxLimitExempt[msg.sender]); (bool success,) = payable(marketingFeeReceiver).call{value: address(this).balance, gas: 30000}(""); require(success); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && claimingFees && balanceOf(address(this)) >= swapThreshold; } function swapBack() internal swapping { uint256 _totalFee = totalFee.sub(reflectionFee); uint256 amountToLiquify = swapThreshold.mul(liquidityFee).div(_totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = _totalFee.sub(liquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); uint256 amountETHGiveaway = amountETH.mul(giveawayFee).div(totalETHFee); if (amountETHMarketing.add(amountETHGiveaway) > 0) { (bool success,) = payable(marketingFeeReceiver).call{value: amountETHMarketing.add(amountETHGiveaway), gas: 30000}(""); require(success, "receiver rejected ETH transfer"); } if(amountToLiquify > 0) { router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } swapThreshold = !alternateSwaps ? swapThreshold : swapThreshold == smallSwapThreshold ? largeSwapThreshold : smallSwapThreshold; } function setSwapBackSettings(bool _enabled, uint256 _amountS, uint256 _amountL, bool _alternate) external { require(isTxLimitExempt[msg.sender]); alternateSwaps = _alternate; claimingFees = _enabled; smallSwapThreshold = _amountS; largeSwapThreshold = _amountL; swapThreshold = smallSwapThreshold; } function changeFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _giveawayFee) external onlyOwner { liquidityFee = _liquidityFee; reflectionFee = _reflectionFee; marketingFee = _marketingFee; giveawayFee = _giveawayFee; totalFee = liquidityFee.add(reflectionFee).add(marketingFee).add(giveawayFee); } function changeMaxWallet(uint256 percent, uint256 denominator) external onlyOwner { require(isTxLimitExempt[msg.sender] && percent >= 1, "Max wallet must be greater than 1%"); _maxWalletSize = _totalSupply.mul(percent).div(denominator); } function setIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external { require(isTxLimitExempt[msg.sender]); isTxLimitExempt[holder] = exempt; } function setFeeReceivers(address _marketingFeeReceiver, address _liquidityReceiver) external { require(isTxLimitExempt[msg.sender]); marketingFeeReceiver = _marketingFeeReceiver; autoLiquidityReceiver = _liquidityReceiver; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } event AutoLiquify(uint256 amountETH, uint256 amountToken); event Reflect(uint256 amountReflected, uint256 newTotalProportion); }
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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","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":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_giveawayFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"changeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"}],"name":"changeName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSymbol","type":"string"}],"name":"changeSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_liquidityReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amountS","type":"uint256"},{"internalType":"uint256","name":"_amountL","type":"uint256"},{"internalType":"bool","name":"_alternate","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600960808190526848616d6d7920496e7560b81b60a09081526200002c9160019190620004e0565b506040805180820190915260058082526448414d4d5960d81b60209092019182526200005b91600291620004e0565b506200006a6009600a62000699565b6200007b9064174876e800620006aa565b6003556103e8600354600a620000929190620006aa565b6200009e9190620006cc565b60049081556003805460068190556001600a556000600b819055600c92909255600d91909155600e919091556064600f81905560c86012556013556015805461ffff60a01b191661010160a01b1790556200012b9064174876e80090620001179064017e4d092a620003c3602090811b62000e6b17901c565b6200045a60201b62000eed1790919060201c565b6016556200015864174876e800620001176333d36bde600354620003c360201b62000e6b1790919060201c565b6017556016546018553480156200016e57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905133929163c45a01559160048083019260209291908290030181865afa15801562000217573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023d9190620006ef565b6040516364e329cb60e11b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201523060248201526001600160a01b03919091169063c9c65396906044016020604051808303816000875af1158015620002a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c69190620006ef565b601580546001600160a01b03199081166001600160a01b03938416179091553060008181526007602090815260408083206014805488168552908352818420600019908190558888168086528386209190915594845260098352818420805460ff199081166001908117909255915490971684528184208054821688179055848452818420805482168817905560088352818420805490911690961790955560108054851684179055601180549094168317909355600354600584528482208190559351938452909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620007ae565b600082600003620003d75750600062000454565b6000620003e58385620006aa565b905082620003f48583620006cc565b14620004515760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200045183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004a460201b60201c565b60008183620004c85760405162461bcd60e51b81526004016200044891906200071a565b506000620004d78486620006cc565b95945050505050565b828054620004ee9062000772565b90600052602060002090601f0160209004810192826200051257600085556200055d565b82601f106200052d57805160ff19168380011785556200055d565b828001600101855582156200055d579182015b828111156200055d57825182559160200191906001019062000540565b506200056b9291506200056f565b5090565b5b808211156200056b576000815560010162000570565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005dd578160001904821115620005c157620005c162000586565b80851615620005cf57918102915b93841c9390800290620005a1565b509250929050565b600082620005f65750600162000454565b81620006055750600062000454565b81600181146200061e5760028114620006295762000649565b600191505062000454565b60ff8411156200063d576200063d62000586565b50506001821b62000454565b5060208310610133831016604e8410600b84101617156200066e575081810a62000454565b6200067a83836200059c565b806000190482111562000691576200069162000586565b029392505050565b60006200045160ff841683620005e5565b6000816000190483118215151615620006c757620006c762000586565b500290565b600082620006ea57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200070257600080fd5b81516001600160a01b03811681146200045157600080fd5b600060208083528351808285015260005b8181101562000749578581018301518582016040015282016200072b565b818111156200075c576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c908216806200078757607f821691505b602082108103620007a857634e487b7160e01b600052602260045260246000fd5b50919050565b611e1a80620007be6000396000f3fe6080604052600436106102135760003560e01c8063715018a611610118578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e14610617578063f1f3bca31461065d578063f2fde38b1461067f578063f84ba65d1461069f578063f887ea40146106bf57600080fd5b8063a9059cbb146105a1578063b0f7ec38146105c1578063bae19235146105e2578063caf5f67d1461060257600080fd5b80638f9a55c0116100e75780638f9a55c01461051657806395d89b411461052c578063a3895fff14610541578063a4b45c0014610561578063a8aa1b311461058157600080fd5b8063715018a614610465578063850c0bd61461047a578063893d20e8146104c65780638da5cb5b146104f857600080fd5b80632d8381191161019b578063571ac8b01161016a578063571ac8b0146103c55780636308fb98146103e5578063650c422614610405578063658d4b7f1461042557806370a082311461044557600080fd5b80632d83811914610349578063313ce5671461036957806345ce5365146103855780635353a2d8146103a557600080fd5b806317800287116101e257806317800287146102c757806318160ddd146102dd57806323b872dd146102f25780632b112e49146103125780632ccb1b301461032757600080fd5b80630445b6671461021f57806306fdde0314610248578063095ea7b31461026a5780630cfc15f91461029a57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5061023560185481565b6040519081526020015b60405180910390f35b34801561025457600080fd5b5061025d6106df565b60405161023f9190611946565b34801561027657600080fd5b5061028a6102853660046119b7565b610771565b604051901515815260200161023f565b3480156102a657600080fd5b506102356102b53660046119e1565b60056020526000908152604090205481565b3480156102d357600080fd5b5061023560065481565b3480156102e957600080fd5b50600354610235565b3480156102fe57600080fd5b5061028a61030d3660046119fc565b6107de565b34801561031e57600080fd5b506102356108a0565b34801561033357600080fd5b506103476103423660046119b7565b6108d1565b005b34801561035557600080fd5b50610235610364366004611a38565b610914565b34801561037557600080fd5b506040516009815260200161023f565b34801561039157600080fd5b506102356103a0366004611a38565b610937565b3480156103b157600080fd5b506103476103c0366004611a67565b610954565b3480156103d157600080fd5b5061028a6103e03660046119e1565b61099e565b3480156103f157600080fd5b50610347610400366004611b28565b6109ac565b34801561041157600080fd5b50610347610420366004611b6e565b610a0a565b34801561043157600080fd5b50610347610440366004611ba0565b610a67565b34801561045157600080fd5b506102356104603660046119e1565b610abc565b34801561047157600080fd5b50610347610ade565b34801561048657600080fd5b50600a54600c54600b54600d54600e54600f54604080519687526020870195909552938501929092526060840152608083015260a082015260c00161023f565b3480156104d257600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b34801561050457600080fd5b506000546001600160a01b03166104e0565b34801561052257600080fd5b5061023560045481565b34801561053857600080fd5b5061025d610b52565b34801561054d57600080fd5b5061034761055c366004611a67565b610b61565b34801561056d57600080fd5b5061034761057c366004611bd3565b610b9e565b34801561058d57600080fd5b506015546104e0906001600160a01b031681565b3480156105ad57600080fd5b5061028a6105bc3660046119b7565b610be8565b3480156105cd57600080fd5b5060155461028a90600160a01b900460ff1681565b3480156105ee57600080fd5b506103476105fd366004611bfd565b610bf5565b34801561060e57600080fd5b50610347610cb6565b34801561062357600080fd5b50610235610632366004611bd3565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561066957600080fd5b50610235610678366004611c1f565b50600e5490565b34801561068b57600080fd5b5061034761069a3660046119e1565b610d3a565b3480156106ab57600080fd5b506103476106ba366004611ba0565b610e24565b3480156106cb57600080fd5b506014546104e0906001600160a01b031681565b6060600180546106ee90611c3a565b80601f016020809104026020016040519081016040528092919081815260200182805461071a90611c3a565b80156107675780601f1061073c57610100808354040283529160200191610767565b820191906000526020600020905b81548152906001019060200180831161074a57829003601f168201915b5050505050905090565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107cc9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526007602090815260408083203384529091528120546000191461088b576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600782528381203382529091529190912054610866918490610f2f565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610896848484610f69565b90505b9392505050565b60006108cc6108af6000610abc565b6108c66108bd61dead610abc565b6003549061118b565b9061118b565b905090565b6019805460ff191660011790553360009081526009602052604090205460ff166108fa57600080fd5b610905823083610f69565b50506019805460ff1916905550565b60006107d860065461093160035485610e6b90919063ffffffff16565b90610eed565b60006107d860035461093160065485610e6b90919063ffffffff16565b6000546001600160a01b031633146109875760405162461bcd60e51b815260040161097e90611c74565b60405180910390fd5b805161099a9060019060208401906118ad565b5050565b60006107d882600019610771565b3360009081526009602052604090205460ff166109c857600080fd5b60158054941515600160a01b0260ff60a01b19921515600160a81b029290921661ffff60a01b1990951694909417179092556016819055601791909155601855565b6000546001600160a01b03163314610a345760405162461bcd60e51b815260040161097e90611c74565b600a849055600d839055600c829055600b819055610a5e81610a58848188886111cd565b906111cd565b600e5550505050565b6000546001600160a01b03163314610a915760405162461bcd60e51b815260040161097e90611c74565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600560205260408120546107d890610914565b6000546001600160a01b03163314610b085760405162461bcd60e51b815260040161097e90611c74565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600280546106ee90611c3a565b6000546001600160a01b03163314610b8b5760405162461bcd60e51b815260040161097e90611c74565b805161099a9060029060208401906118ad565b3360009081526009602052604090205460ff16610bba57600080fd5b601180546001600160a01b039384166001600160a01b03199182161790915560108054929093169116179055565b6000610899338484610f69565b6000546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161097e90611c74565b3360009081526009602052604090205460ff168015610c3f575060018210155b610c965760405162461bcd60e51b815260206004820152602260248201527f4d61782077616c6c6574206d7573742062652067726561746572207468616e20604482015261312560f01b606482015260840161097e565b610caf8161093184600354610e6b90919063ffffffff16565b6004555050565b3360009081526009602052604090205460ff16610cd257600080fd5b6011546040516000916001600160a01b03169061753090479084818181858888f193505050503d8060008114610d24576040519150601f19603f3d011682016040523d82523d6000602084013e610d29565b606091505b5050905080610d3757600080fd5b50565b6000546001600160a01b03163314610d645760405162461bcd60e51b815260040161097e90611c74565b6001600160a01b038116610dc95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161097e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526009602052604090205460ff16610e4057600080fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b600082600003610e7d575060006107d8565b6000610e898385611cbf565b905082610e968583611cde565b146108995760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161097e565b600061089983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061122c565b60008184841115610f535760405162461bcd60e51b815260040161097e9190611946565b506000610f608486611d00565b95945050505050565b60195460009060ff1615610f8957610f8284848461125a565b9050610899565b6015546001600160a01b03848116911614801590610fb257506001600160a01b03831661dead14155b8015610fd757506001600160a01b03831660009081526009602052604090205460ff16155b156110375760045482610fe985610abc565b610ff39190611d17565b11156110375760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b604482015260640161097e565b61103f611364565b1561104c5761104c6113b4565b600061105783610937565b90506110bf8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060056000896001600160a01b03166001600160a01b0316815260200190815260200160002054610f2f9092919063ffffffff16565b6001600160a01b038616600090815260056020908152604080832093909355600890529081205460ff16156110f457816110ff565b6110ff86868461178d565b6001600160a01b03861660009081526005602052604090205490915061112590826111cd565b6001600160a01b0380871660008181526005602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61116e84610914565b60405190815260200160405180910390a350600195945050505050565b600061089983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f2f565b6000806111da8385611d17565b9050838110156108995760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161097e565b6000818361124d5760405162461bcd60e51b815260040161097e9190611946565b506000610f608486611cde565b60008061126683610937565b90506112ce8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060056000896001600160a01b03166001600160a01b0316815260200190815260200160002054610f2f9092919063ffffffff16565b6001600160a01b0380871660009081526005602052604080822093909355908616815220546112fd90826111cd565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113519087815260200190565b60405180910390a3506001949350505050565b6015546000906001600160a01b03163314801590611385575060195460ff16155b801561139a5750601554600160a01b900460ff165b80156108cc57506018546113ad30610abc565b1015905090565b6019805460ff19166001179055600d54600e546000916113d4919061118b565b905060006113f8600261093184610931600a54601854610e6b90919063ffffffff16565b905060006114118260185461118b90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061144b5761144b611d2f565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061149357611493611d2f565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b81524792919091169063791ac947906114dd908690600090879030904290600401611d45565b600060405180830381600087803b1580156114f757600080fd5b505af115801561150b573d6000803e3d6000fd5b505050506000611524824761118b90919063ffffffff16565b905060006115486115416002600a54610eed90919063ffffffff16565b889061118b565b9050600061156a600261093184610931600a5488610e6b90919063ffffffff16565b9050600061158783610931600c5487610e6b90919063ffffffff16565b905060006115a484610931600b5488610e6b90919063ffffffff16565b905060006115b283836111cd565b111561166b576011546000906001600160a01b03166115d184846111cd565b60405161753091906000818181858888f193505050503d8060008114611613576040519150601f19603f3d011682016040523d82523d6000602084013e611618565b606091505b50509050806116695760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161097e565b505b88156117435760145460105460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af11580156116e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117069190611db6565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601554600160a81b900460ff1615611770576016546018541461176857601654611774565b601754611774565b6018545b60185550506019805460ff191690555050505050505050565b600f54600e5460009182916117a89190610931908690610e6b565b905060006117c7600e54610931600d5485610e6b90919063ffffffff16565b6006549091506117d7908261118b565b60065560006117e6838361118b565b3060009081526005602052604090205490915061180390826111cd565b306000818152600560205260409020919091556001600160a01b0388167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61184a84610914565b60405190815260200160405180910390a36006546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a16118a2858461118b565b979650505050505050565b8280546118b990611c3a565b90600052602060002090601f0160209004810192826118db5760008555611921565b82601f106118f457805160ff1916838001178555611921565b82800160010185558215611921579182015b82811115611921578251825591602001919060010190611906565b5061192d929150611931565b5090565b5b8082111561192d5760008155600101611932565b600060208083528351808285015260005b8181101561197357858101830151858201604001528201611957565b81811115611985576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146119b257600080fd5b919050565b600080604083850312156119ca57600080fd5b6119d38361199b565b946020939093013593505050565b6000602082840312156119f357600080fd5b6108998261199b565b600080600060608486031215611a1157600080fd5b611a1a8461199b565b9250611a286020850161199b565b9150604084013590509250925092565b600060208284031215611a4a57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611a7957600080fd5b813567ffffffffffffffff80821115611a9157600080fd5b818401915084601f830112611aa557600080fd5b813581811115611ab757611ab7611a51565b604051601f8201601f19908116603f01168101908382118183101715611adf57611adf611a51565b81604052828152876020848701011115611af857600080fd5b826020860160208301376000928101602001929092525095945050505050565b803580151581146119b257600080fd5b60008060008060808587031215611b3e57600080fd5b611b4785611b18565b93506020850135925060408501359150611b6360608601611b18565b905092959194509250565b60008060008060808587031215611b8457600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611bb357600080fd5b611bbc8361199b565b9150611bca60208401611b18565b90509250929050565b60008060408385031215611be657600080fd5b611bef8361199b565b9150611bca6020840161199b565b60008060408385031215611c1057600080fd5b50508035926020909101359150565b600060208284031215611c3157600080fd5b61089982611b18565b600181811c90821680611c4e57607f821691505b602082108103611c6e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611cd957611cd9611ca9565b500290565b600082611cfb57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611d1257611d12611ca9565b500390565b60008219821115611d2a57611d2a611ca9565b500190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d955784516001600160a01b031683529383019391830191600101611d70565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611dcb57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a399b78042b0889e934c223b9a6247d1b46995b9700d46edc2ff3d40bf8ec72864736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106102135760003560e01c8063715018a611610118578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e14610617578063f1f3bca31461065d578063f2fde38b1461067f578063f84ba65d1461069f578063f887ea40146106bf57600080fd5b8063a9059cbb146105a1578063b0f7ec38146105c1578063bae19235146105e2578063caf5f67d1461060257600080fd5b80638f9a55c0116100e75780638f9a55c01461051657806395d89b411461052c578063a3895fff14610541578063a4b45c0014610561578063a8aa1b311461058157600080fd5b8063715018a614610465578063850c0bd61461047a578063893d20e8146104c65780638da5cb5b146104f857600080fd5b80632d8381191161019b578063571ac8b01161016a578063571ac8b0146103c55780636308fb98146103e5578063650c422614610405578063658d4b7f1461042557806370a082311461044557600080fd5b80632d83811914610349578063313ce5671461036957806345ce5365146103855780635353a2d8146103a557600080fd5b806317800287116101e257806317800287146102c757806318160ddd146102dd57806323b872dd146102f25780632b112e49146103125780632ccb1b301461032757600080fd5b80630445b6671461021f57806306fdde0314610248578063095ea7b31461026a5780630cfc15f91461029a57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5061023560185481565b6040519081526020015b60405180910390f35b34801561025457600080fd5b5061025d6106df565b60405161023f9190611946565b34801561027657600080fd5b5061028a6102853660046119b7565b610771565b604051901515815260200161023f565b3480156102a657600080fd5b506102356102b53660046119e1565b60056020526000908152604090205481565b3480156102d357600080fd5b5061023560065481565b3480156102e957600080fd5b50600354610235565b3480156102fe57600080fd5b5061028a61030d3660046119fc565b6107de565b34801561031e57600080fd5b506102356108a0565b34801561033357600080fd5b506103476103423660046119b7565b6108d1565b005b34801561035557600080fd5b50610235610364366004611a38565b610914565b34801561037557600080fd5b506040516009815260200161023f565b34801561039157600080fd5b506102356103a0366004611a38565b610937565b3480156103b157600080fd5b506103476103c0366004611a67565b610954565b3480156103d157600080fd5b5061028a6103e03660046119e1565b61099e565b3480156103f157600080fd5b50610347610400366004611b28565b6109ac565b34801561041157600080fd5b50610347610420366004611b6e565b610a0a565b34801561043157600080fd5b50610347610440366004611ba0565b610a67565b34801561045157600080fd5b506102356104603660046119e1565b610abc565b34801561047157600080fd5b50610347610ade565b34801561048657600080fd5b50600a54600c54600b54600d54600e54600f54604080519687526020870195909552938501929092526060840152608083015260a082015260c00161023f565b3480156104d257600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b34801561050457600080fd5b506000546001600160a01b03166104e0565b34801561052257600080fd5b5061023560045481565b34801561053857600080fd5b5061025d610b52565b34801561054d57600080fd5b5061034761055c366004611a67565b610b61565b34801561056d57600080fd5b5061034761057c366004611bd3565b610b9e565b34801561058d57600080fd5b506015546104e0906001600160a01b031681565b3480156105ad57600080fd5b5061028a6105bc3660046119b7565b610be8565b3480156105cd57600080fd5b5060155461028a90600160a01b900460ff1681565b3480156105ee57600080fd5b506103476105fd366004611bfd565b610bf5565b34801561060e57600080fd5b50610347610cb6565b34801561062357600080fd5b50610235610632366004611bd3565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561066957600080fd5b50610235610678366004611c1f565b50600e5490565b34801561068b57600080fd5b5061034761069a3660046119e1565b610d3a565b3480156106ab57600080fd5b506103476106ba366004611ba0565b610e24565b3480156106cb57600080fd5b506014546104e0906001600160a01b031681565b6060600180546106ee90611c3a565b80601f016020809104026020016040519081016040528092919081815260200182805461071a90611c3a565b80156107675780601f1061073c57610100808354040283529160200191610767565b820191906000526020600020905b81548152906001019060200180831161074a57829003601f168201915b5050505050905090565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107cc9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526007602090815260408083203384529091528120546000191461088b576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600782528381203382529091529190912054610866918490610f2f565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610896848484610f69565b90505b9392505050565b60006108cc6108af6000610abc565b6108c66108bd61dead610abc565b6003549061118b565b9061118b565b905090565b6019805460ff191660011790553360009081526009602052604090205460ff166108fa57600080fd5b610905823083610f69565b50506019805460ff1916905550565b60006107d860065461093160035485610e6b90919063ffffffff16565b90610eed565b60006107d860035461093160065485610e6b90919063ffffffff16565b6000546001600160a01b031633146109875760405162461bcd60e51b815260040161097e90611c74565b60405180910390fd5b805161099a9060019060208401906118ad565b5050565b60006107d882600019610771565b3360009081526009602052604090205460ff166109c857600080fd5b60158054941515600160a01b0260ff60a01b19921515600160a81b029290921661ffff60a01b1990951694909417179092556016819055601791909155601855565b6000546001600160a01b03163314610a345760405162461bcd60e51b815260040161097e90611c74565b600a849055600d839055600c829055600b819055610a5e81610a58848188886111cd565b906111cd565b600e5550505050565b6000546001600160a01b03163314610a915760405162461bcd60e51b815260040161097e90611c74565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600560205260408120546107d890610914565b6000546001600160a01b03163314610b085760405162461bcd60e51b815260040161097e90611c74565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600280546106ee90611c3a565b6000546001600160a01b03163314610b8b5760405162461bcd60e51b815260040161097e90611c74565b805161099a9060029060208401906118ad565b3360009081526009602052604090205460ff16610bba57600080fd5b601180546001600160a01b039384166001600160a01b03199182161790915560108054929093169116179055565b6000610899338484610f69565b6000546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161097e90611c74565b3360009081526009602052604090205460ff168015610c3f575060018210155b610c965760405162461bcd60e51b815260206004820152602260248201527f4d61782077616c6c6574206d7573742062652067726561746572207468616e20604482015261312560f01b606482015260840161097e565b610caf8161093184600354610e6b90919063ffffffff16565b6004555050565b3360009081526009602052604090205460ff16610cd257600080fd5b6011546040516000916001600160a01b03169061753090479084818181858888f193505050503d8060008114610d24576040519150601f19603f3d011682016040523d82523d6000602084013e610d29565b606091505b5050905080610d3757600080fd5b50565b6000546001600160a01b03163314610d645760405162461bcd60e51b815260040161097e90611c74565b6001600160a01b038116610dc95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161097e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526009602052604090205460ff16610e4057600080fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b600082600003610e7d575060006107d8565b6000610e898385611cbf565b905082610e968583611cde565b146108995760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161097e565b600061089983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061122c565b60008184841115610f535760405162461bcd60e51b815260040161097e9190611946565b506000610f608486611d00565b95945050505050565b60195460009060ff1615610f8957610f8284848461125a565b9050610899565b6015546001600160a01b03848116911614801590610fb257506001600160a01b03831661dead14155b8015610fd757506001600160a01b03831660009081526009602052604090205460ff16155b156110375760045482610fe985610abc565b610ff39190611d17565b11156110375760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b604482015260640161097e565b61103f611364565b1561104c5761104c6113b4565b600061105783610937565b90506110bf8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060056000896001600160a01b03166001600160a01b0316815260200190815260200160002054610f2f9092919063ffffffff16565b6001600160a01b038616600090815260056020908152604080832093909355600890529081205460ff16156110f457816110ff565b6110ff86868461178d565b6001600160a01b03861660009081526005602052604090205490915061112590826111cd565b6001600160a01b0380871660008181526005602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61116e84610914565b60405190815260200160405180910390a350600195945050505050565b600061089983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f2f565b6000806111da8385611d17565b9050838110156108995760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161097e565b6000818361124d5760405162461bcd60e51b815260040161097e9190611946565b506000610f608486611cde565b60008061126683610937565b90506112ce8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060056000896001600160a01b03166001600160a01b0316815260200190815260200160002054610f2f9092919063ffffffff16565b6001600160a01b0380871660009081526005602052604080822093909355908616815220546112fd90826111cd565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113519087815260200190565b60405180910390a3506001949350505050565b6015546000906001600160a01b03163314801590611385575060195460ff16155b801561139a5750601554600160a01b900460ff165b80156108cc57506018546113ad30610abc565b1015905090565b6019805460ff19166001179055600d54600e546000916113d4919061118b565b905060006113f8600261093184610931600a54601854610e6b90919063ffffffff16565b905060006114118260185461118b90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061144b5761144b611d2f565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061149357611493611d2f565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b81524792919091169063791ac947906114dd908690600090879030904290600401611d45565b600060405180830381600087803b1580156114f757600080fd5b505af115801561150b573d6000803e3d6000fd5b505050506000611524824761118b90919063ffffffff16565b905060006115486115416002600a54610eed90919063ffffffff16565b889061118b565b9050600061156a600261093184610931600a5488610e6b90919063ffffffff16565b9050600061158783610931600c5487610e6b90919063ffffffff16565b905060006115a484610931600b5488610e6b90919063ffffffff16565b905060006115b283836111cd565b111561166b576011546000906001600160a01b03166115d184846111cd565b60405161753091906000818181858888f193505050503d8060008114611613576040519150601f19603f3d011682016040523d82523d6000602084013e611618565b606091505b50509050806116695760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161097e565b505b88156117435760145460105460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af11580156116e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117069190611db6565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601554600160a81b900460ff1615611770576016546018541461176857601654611774565b601754611774565b6018545b60185550506019805460ff191690555050505050505050565b600f54600e5460009182916117a89190610931908690610e6b565b905060006117c7600e54610931600d5485610e6b90919063ffffffff16565b6006549091506117d7908261118b565b60065560006117e6838361118b565b3060009081526005602052604090205490915061180390826111cd565b306000818152600560205260409020919091556001600160a01b0388167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61184a84610914565b60405190815260200160405180910390a36006546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a16118a2858461118b565b979650505050505050565b8280546118b990611c3a565b90600052602060002090601f0160209004810192826118db5760008555611921565b82601f106118f457805160ff1916838001178555611921565b82800160010185558215611921579182015b82811115611921578251825591602001919060010190611906565b5061192d929150611931565b5090565b5b8082111561192d5760008155600101611932565b600060208083528351808285015260005b8181101561197357858101830151858201604001528201611957565b81811115611985576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146119b257600080fd5b919050565b600080604083850312156119ca57600080fd5b6119d38361199b565b946020939093013593505050565b6000602082840312156119f357600080fd5b6108998261199b565b600080600060608486031215611a1157600080fd5b611a1a8461199b565b9250611a286020850161199b565b9150604084013590509250925092565b600060208284031215611a4a57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611a7957600080fd5b813567ffffffffffffffff80821115611a9157600080fd5b818401915084601f830112611aa557600080fd5b813581811115611ab757611ab7611a51565b604051601f8201601f19908116603f01168101908382118183101715611adf57611adf611a51565b81604052828152876020848701011115611af857600080fd5b826020860160208301376000928101602001929092525095945050505050565b803580151581146119b257600080fd5b60008060008060808587031215611b3e57600080fd5b611b4785611b18565b93506020850135925060408501359150611b6360608601611b18565b905092959194509250565b60008060008060808587031215611b8457600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611bb357600080fd5b611bbc8361199b565b9150611bca60208401611b18565b90509250929050565b60008060408385031215611be657600080fd5b611bef8361199b565b9150611bca6020840161199b565b60008060408385031215611c1057600080fd5b50508035926020909101359150565b600060208284031215611c3157600080fd5b61089982611b18565b600181811c90821680611c4e57607f821691505b602082108103611c6e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611cd957611cd9611ca9565b500290565b600082611cfb57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611d1257611d12611ca9565b500390565b60008219821115611d2a57611d2a611ca9565b500190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d955784516001600160a01b031683529383019391830191600101611d70565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611dcb57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a399b78042b0889e934c223b9a6247d1b46995b9700d46edc2ff3d40bf8ec72864736f6c634300080d0033
Deployed Bytecode Sourcemap
6851:11556:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8550:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8550:49:0;;;;;;;;9601:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10666:216::-;;;;;;;;;;-1:-1:-1;10666:216:0;;;;;:::i;:::-;;:::i;:::-;;;1400:14:1;;1393:22;1375:41;;1363:2;1348:18;10666:216:0;1235:187:1;7622:43:0;;;;;;;;;;-1:-1:-1;7622:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;7672:46;;;;;;;;;;;;;;;;9430:88;;;;;;;;;;-1:-1:-1;9503:12:0;;9430:88;;11184:370;;;;;;;;;;-1:-1:-1;11184:370:0;;;;;:::i;:::-;;:::i;18123:142::-;;;;;;;;;;;;;:::i;10289:155::-;;;;;;;;;;-1:-1:-1;10289:155:0;;;;;:::i;:::-;;:::i;:::-;;12625;;;;;;;;;;-1:-1:-1;12625:155:0;;;;;:::i;:::-;;:::i;9524:71::-;;;;;;;;;;-1:-1:-1;9524:71:0;;7351:1;2278:36:1;;2266:2;2251:18;9524:71:0;2136:184:1;12471:146:0;;;;;;;;;;-1:-1:-1;12471:146:0;;;;;:::i;:::-;;:::i;9678:82::-;;;;;;;;;;-1:-1:-1;9678:82:0;;;;;:::i;:::-;;:::i;10890:122::-;;;;;;;;;;-1:-1:-1;10890:122:0;;;;;:::i;:::-;;:::i;16530:358::-;;;;;;;;;;-1:-1:-1;16530:358:0;;;;;:::i;:::-;;:::i;16896:383::-;;;;;;;;;;-1:-1:-1;16896:383:0;;;;;:::i;:::-;;:::i;17560:119::-;;;;;;;;;;-1:-1:-1;17560:119:0;;;;;:::i;:::-;;:::i;10020:124::-;;;;;;;;;;-1:-1:-1;10020:124:0;;;;;:::i;:::-;;:::i;6297:148::-;;;;;;;;;;;;;:::i;10452:206::-;;;;;;;;;;-1:-1:-1;10569:12:0;;10583;;10597:11;;10610:13;;10625:8;;10635:14;;10452:206;;;4875:25:1;;;4931:2;4916:18;;4909:34;;;;4959:18;;;4952:34;;;;5017:2;5002:18;;4995:34;5060:3;5045:19;;5038:35;5104:3;5089:19;;5082:35;4862:3;4847:19;10452:206:0;4588:535:1;9943:71:0;;;;;;;;;;-1:-1:-1;9986:7:0;5721:6;-1:-1:-1;;;;;5721:6:0;9943:71;;;-1:-1:-1;;;;;5292:32:1;;;5274:51;;5262:2;5247:18;9943:71:0;5128:203:1;5656:79:0;;;;;;;;;;-1:-1:-1;5694:7:0;5721:6;-1:-1:-1;;;;;5721:6:0;5656:79;;7426:58;;;;;;;;;;;;;;;;9862:75;;;;;;;;;;;;;:::i;9766:90::-;;;;;;;;;;-1:-1:-1;9766:90:0;;;;;:::i;:::-;;:::i;17859:256::-;;;;;;;;;;-1:-1:-1;17859:256:0;;;;;:::i;:::-;;:::i;8285:19::-;;;;;;;;;;-1:-1:-1;8285:19:0;;;;-1:-1:-1;;;;;8285:19:0;;;11020:156;;;;;;;;;;-1:-1:-1;11020:156:0;;;;;:::i;:::-;;:::i;8313:31::-;;;;;;;;;;-1:-1:-1;8313:31:0;;;;-1:-1:-1;;;8313:31:0;;;;;;17287:261;;;;;;;;;;-1:-1:-1;17287:261:0;;;;;:::i;:::-;;:::i;14264:224::-;;;;;;;;;;;;;:::i;10150:133::-;;;;;;;;;;-1:-1:-1;10150:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10252:19:0;;;10234:7;10252:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10150:133;13324:91;;;;;;;;;;-1:-1:-1;13324:91:0;;;;;:::i;:::-;-1:-1:-1;13399:8:0;;;13324:91;6600:244;;;;;;;;;;-1:-1:-1;6600:244:0;;;;;:::i;:::-;;:::i;17687:164::-;;;;;;;;;;-1:-1:-1;17687:164:0;;;;;:::i;:::-;;:::i;8254:24::-;;;;;;;;;;-1:-1:-1;8254:24:0;;;;-1:-1:-1;;;;;8254:24:0;;;9601:71;9640:13;9664:5;9657:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9601:71;:::o;10666:216::-;10770:10;10741:4;10758:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10758:32:0;;;;;;;;;;:41;;;10815:37;10741:4;;10758:32;;10815:37;;;;10793:6;160:25:1;;148:2;133:18;;14:177;10815:37:0;;;;;;;;-1:-1:-1;10870:4:0;10666:216;;;;;:::o;11184:370::-;-1:-1:-1;;;;;11304:19:0;;11284:4;11304:19;;;:11;:19;;;;;;;;11324:10;11304:31;;;;;;;;-1:-1:-1;;11304:52:0;11301:186;;11406:69;;;;;;;;;;;-1:-1:-1;;;11406:69:0;;;;;;;;-1:-1:-1;;;;;11406:19:0;;-1:-1:-1;11406:19:0;;;:11;:19;;;;;11426:10;11406:31;;;;;;;;;;:69;;11442:6;;11406:35;:69::i;:::-;-1:-1:-1;;;;;11372:19:0;;;;;;:11;:19;;;;;;;;11392:10;11372:31;;;;;;;:103;11301:186;11506:40;11520:6;11528:9;11539:6;11506:13;:40::i;:::-;11499:47;;11184:370;;;;;;:::o;18123:142::-;18176:7;18203:54;18241:15;7209:42;18241:9;:15::i;:::-;18203:33;18220:15;7127:42;18220:9;:15::i;:::-;18203:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;18196:61;;18123:142;:::o;10289:155::-;8646:6;:13;;-1:-1:-1;;8646:13:0;8655:4;8646:13;;;10383:10:::1;8646:6:::0;10367:27;;;:15:::1;:27;::::0;;;;;8646:13;10367:27:::1;10359:36;;;::::0;::::1;;10397:44;10411:6;10427:4;10434:6;10397:13;:44::i;:::-;-1:-1:-1::0;;8664:6:0;:14;;-1:-1:-1;;8664:14:0;;;-1:-1:-1;10289:155:0:o;12625:::-;12695:7;12722:50;12755:16;;12722:28;12737:12;;12722:10;:14;;:28;;;;:::i;:::-;:32;;:50::i;12471:146::-;12536:7;12563:46;12596:12;;12563:28;12574:16;;12563:6;:10;;:28;;;;:::i;9678:82::-;5868:6;;-1:-1:-1;;;;;5868:6:0;4087:10;5868:22;5860:67;;;;-1:-1:-1;;;5860:67:0;;;;;;;:::i;:::-;;;;;;;;;9742:15;;::::1;::::0;:5:::1;::::0;:15:::1;::::0;::::1;::::0;::::1;:::i;:::-;;9678:82:::0;:::o;10890:122::-;10945:4;10969:35;10977:7;-1:-1:-1;;10969:7:0;:35::i;16530:358::-;16671:10;16655:27;;;;:15;:27;;;;;;;;16647:36;;;;;;16694:14;:27;;16732:23;;;-1:-1:-1;;;16732:23:0;-1:-1:-1;;;;16694:27:0;;;-1:-1:-1;;;16694:27:0;16732:23;;;;-1:-1:-1;;;;16732:23:0;;;;;;;;;;;16766:18;:29;;;16806:18;:29;;;;16846:13;:34;16530:358::o;16896:383::-;5868:6;;-1:-1:-1;;;;;5868:6:0;4087:10;5868:22;5860:67;;;;-1:-1:-1;;;5860:67:0;;;;;;;:::i;:::-;17038:12:::1;:28:::0;;;17077:13:::1;:30:::0;;;17118:12:::1;:28:::0;;;17157:11:::1;:26:::0;;;17205:66:::1;17171:12:::0;17205:49:::1;17133:13:::0;17205:49;17053:13;17093:14;17205:16:::1;:31::i;:::-;:35:::0;::::1;:49::i;:66::-;17194:8;:77:::0;-1:-1:-1;;;;16896:383:0:o;17560:119::-;5868:6;;-1:-1:-1;;;;;5868:6:0;4087:10;5868:22;5860:67;;;;-1:-1:-1;;;5860:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17643:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;17643:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17560:119::o;10020:124::-;-1:-1:-1;;;;;10124:16:0;;10086:7;10124:16;;;:7;:16;;;;;;10104:37;;:19;:37::i;6297:148::-;5868:6;;-1:-1:-1;;;;;5868:6:0;4087:10;5868:22;5860:67;;;;-1:-1:-1;;;5860:67:0;;;;;;;:::i;:::-;6404:1:::1;6388:6:::0;;6367:40:::1;::::0;-1:-1:-1;;;;;6388:6:0;;::::1;::::0;6367:40:::1;::::0;6404:1;;6367:40:::1;6435:1;6418:19:::0;;-1:-1:-1;;;;;;6418:19:0::1;::::0;;6297:148::o;9862:75::-;9903:13;9927:7;9920:14;;;;;:::i;9766:90::-;5868:6;;-1:-1:-1;;;;;5868:6:0;4087:10;5868:22;5860:67;;;;-1:-1:-1;;;5860:67:0;;;;;;;:::i;:::-;9834:19;;::::1;::::0;:7:::1;::::0;:19:::1;::::0;::::1;::::0;::::1;:::i;17859:256::-:0;17987:10;17971:27;;;;:15;:27;;;;;;;;17963:36;;;;;;18010:20;:44;;-1:-1:-1;;;;;18010:44:0;;;-1:-1:-1;;;;;;18010:44:0;;;;;;;18065:21;:42;;;;;;;;;;;17859:256::o;11020:156::-;11100:4;11124:44;11138:10;11150:9;11161:6;11124:13;:44::i;17287:261::-;5868:6;;-1:-1:-1;;;;;5868:6:0;4087:10;5868:22;5860:67;;;;-1:-1:-1;;;5860:67:0;;;;;;;:::i;:::-;17404:10:::1;17388:27;::::0;;;:15:::1;:27;::::0;;;;;::::1;;:43:::0;::::1;;;;17430:1;17419:7;:12;;17388:43;17380:90;;;::::0;-1:-1:-1;;;17380:90:0;;7213:2:1;17380:90:0::1;::::0;::::1;7195:21:1::0;7252:2;7232:18;;;7225:30;7291:34;7271:18;;;7264:62;-1:-1:-1;;;7342:18:1;;;7335:32;7384:19;;17380:90:0::1;7011:398:1::0;17380:90:0::1;17498:42;17528:11;17498:25;17515:7;17498:12;;:16;;:25;;;;:::i;:42::-;17481:14;:59:::0;-1:-1:-1;;17287:261:0:o;14264:224::-;14332:10;14316:27;;;;:15;:27;;;;;;;;14308:36;;;;;;14381:20;;14373:80;;14356:12;;-1:-1:-1;;;;;14381:20:0;;14443:5;;14415:21;;14356:12;14373:80;14356:12;14373:80;14415:21;14381:20;14443:5;14373:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14355:98;;;14472:7;14464:16;;;;;;14297:191;14264:224::o;6600:244::-;5868:6;;-1:-1:-1;;;;;5868:6:0;4087:10;5868:22;5860:67;;;;-1:-1:-1;;;5860:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6689:22:0;::::1;6681:73;;;::::0;-1:-1:-1;;;6681:73:0;;7826:2:1;6681:73:0::1;::::0;::::1;7808:21:1::0;7865:2;7845:18;;;7838:30;7904:34;7884:18;;;7877:62;-1:-1:-1;;;7955:18:1;;;7948:36;8001:19;;6681:73:0::1;7624:402:1::0;6681:73:0::1;6791:6;::::0;;6770:38:::1;::::0;-1:-1:-1;;;;;6770:38:0;;::::1;::::0;6791:6;::::1;::::0;6770:38:::1;::::0;::::1;6819:6;:17:::0;;-1:-1:-1;;;;;;6819:17:0::1;-1:-1:-1::0;;;;;6819:17:0;;;::::1;::::0;;;::::1;::::0;;6600:244::o;17687:164::-;17788:10;17772:27;;;;:15;:27;;;;;;;;17764:36;;;;;;-1:-1:-1;;;;;17811:23:0;;;;;;;;:15;:23;;;;;:32;;-1:-1:-1;;17811:32:0;;;;;;;;;;17687:164::o;3220:250::-;3278:7;3302:1;3307;3302:6;3298:47;;-1:-1:-1;3332:1:0;3325:8;;3298:47;3357:9;3369:5;3373:1;3369;:5;:::i;:::-;3357:17;-1:-1:-1;3402:1:0;3393:5;3397:1;3357:17;3393:5;:::i;:::-;:10;3385:56;;;;-1:-1:-1;;;3385:56:0;;8760:2:1;3385:56:0;;;8742:21:1;8799:2;8779:18;;;8772:30;8838:34;8818:18;;;8811:62;-1:-1:-1;;;8889:18:1;;;8882:31;8930:19;;3385:56:0;8558:397:1;3476:132:0;3534:7;3561:39;3565:1;3568;3561:39;;;;;;;;;;;;;;;;;:3;:39::i;3022:192::-;3108:7;3144:12;3136:6;;;;3128:29;;;;-1:-1:-1;;;3128:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3168:9:0;3180:5;3184:1;3180;:5;:::i;:::-;3168:17;3022:192;-1:-1:-1;;;;;3022:192:0:o;11562:901::-;11674:6;;11654:4;;11674:6;;11671:63;;;11690:41;11705:6;11713:9;11724:6;11690:14;:41::i;:::-;11683:48;;;;11671:63;11763:4;;-1:-1:-1;;;;;11750:17:0;;;11763:4;;11750:17;;;;:38;;-1:-1:-1;;;;;;11771:17:0;;7127:42;11771:17;;11750:38;:69;;;;-1:-1:-1;;;;;;11793:26:0;;;;;;:15;:26;;;;;;;;11792:27;11750:69;11746:181;;;11877:14;;11867:6;11844:20;11854:9;11844;:20::i;:::-;:29;;;;:::i;:::-;:47;;11836:79;;;;-1:-1:-1;;;11836:79:0;;9425:2:1;11836:79:0;;;9407:21:1;9464:2;9444:18;;;9437:30;-1:-1:-1;;;9483:18:1;;;9476:49;9542:18;;11836:79:0;9223:343:1;11836:79:0;11942:16;:14;:16::i;:::-;11939:35;;;11961:10;:8;:10::i;:::-;11986:24;12013:26;12032:6;12013:18;:26::i;:::-;11986:53;;12070:61;12090:16;12070:61;;;;;;;;;;;;;-1:-1:-1;;;12070:61:0;;;:7;:15;12078:6;-1:-1:-1;;;;;12070:15:0;-1:-1:-1;;;;;12070:15:0;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;12052:15:0;;;;;;:7;:15;;;;;;;;:79;;;;13289:11;:19;;;;;;;;13288:20;12173:100;;12257:16;12173:100;;;12197:57;12218:6;12226:9;12237:16;12197:20;:57::i;:::-;-1:-1:-1;;;;;12305:18:0;;;;;;:7;:18;;;;;;12144:129;;-1:-1:-1;12305:42:0;;12144:129;12305:22;:42::i;:::-;-1:-1:-1;;;;;12284:18:0;;;;;;;:7;:18;;;;;:63;;;;12365:68;;;12393:39;12413:18;12393:19;:39::i;:::-;12365:68;;160:25:1;;;148:2;133:18;12365:68:0;;;;;;;-1:-1:-1;12451:4:0;;11562:901;-1:-1:-1;;;;;11562:901:0:o;2880:136::-;2938:7;2965:43;2969:1;2972;2965:43;;;;;;;;;;;;;;;;;:3;:43::i;2693:181::-;2751:7;;2783:5;2787:1;2783;:5;:::i;:::-;2771:17;;2812:1;2807;:6;;2799:46;;;;-1:-1:-1;;;2799:46:0;;9773:2:1;2799:46:0;;;9755:21:1;9812:2;9792:18;;;9785:30;9851:29;9831:18;;;9824:57;9898:18;;2799:46:0;9571:351:1;3614:345:0;3700:7;3802:12;3795:5;3787:28;;;;-1:-1:-1;;;3787:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3826:9:0;3838:5;3842:1;3838;:5;:::i;12788:406::-;12881:4;12898:24;12925:26;12944:6;12925:18;:26::i;:::-;12898:53;;12980:61;13000:16;12980:61;;;;;;;;;;;;;-1:-1:-1;;;12980:61:0;;;:7;:15;12988:6;-1:-1:-1;;;;;12980:15:0;-1:-1:-1;;;;;12980:15:0;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;12962:15:0;;;;;;;:7;:15;;;;;;:79;;;;13073:18;;;;;;;:40;;13096:16;13073:22;:40::i;:::-;-1:-1:-1;;;;;13052:18:0;;;;;;;:7;:18;;;;;;;:61;;;;13129:35;;;;;;;;;;13157:6;160:25:1;;148:2;133:18;;14:177;13129:35:0;;;;;;;;-1:-1:-1;13182:4:0;;12788:406;-1:-1:-1;;;;12788:406:0:o;14496:198::-;14583:4;;14545;;-1:-1:-1;;;;;14583:4:0;14569:10;:18;;;;:38;;-1:-1:-1;14601:6:0;;;;14600:7;14569:38;:63;;;;-1:-1:-1;14620:12:0;;-1:-1:-1;;;14620:12:0;;;;14569:63;:117;;;;;14673:13;;14645:24;14663:4;14645:9;:24::i;:::-;:41;;14562:124;;14496:198;:::o;14702:1820::-;8646:6;:13;;-1:-1:-1;;8646:13:0;8655:4;8646:13;;;14786::::1;::::0;14773:8:::1;::::0;8646:6;;14773:27:::1;::::0;:8;:12:::1;:27::i;:::-;14753:47;;14811:23;14837:53;14888:1;14837:46;14873:9;14837:31;14855:12;;14837:13;;:17;;:31;;;;:::i;:53::-;14811:79;;14901:20;14924:34;14942:15;14924:13;;:17;;:34;;;;:::i;:::-;14995:16;::::0;;15009:1:::1;14995:16:::0;;;;;::::1;::::0;;14901:57;;-1:-1:-1;14971:21:0::1;::::0;14995:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14995:16:0::1;14971:40;;15040:4;15022;15027:1;15022:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;15022:23:0::1;;;-1:-1:-1::0;;;;;15022:23:0::1;;;::::0;::::1;7045:42;15056:4;15061:1;15056:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15056:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;15141:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;15141:188:0;;15107:21:::1;::::0;15141:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;15213:12;;15083:21:::1;::::0;15256:4;;15283::::1;::::0;15303:15:::1;::::0;15141:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15342:17;15362:40;15388:13;15362:21;:25;;:40;;;;:::i;:::-;15342:60;;15413:19;15435:34;15449:19;15466:1;15449:12;;:16;;:19;;;;:::i;:::-;15435:9:::0;;:13:::1;:34::i;:::-;15413:56;;15480:26;15509:51;15558:1;15509:44;15541:11;15509:27;15523:12;;15509:9;:13;;:27;;;;:::i;:51::-;15480:80;;15571:26;15600:44;15632:11;15600:27;15614:12;;15600:9;:13;;:27;;;;:::i;:44::-;15571:73;;15655:25;15683:43;15714:11;15683:26;15697:11;;15683:9;:13;;:26;;;;:::i;:43::-;15655:71:::0;-1:-1:-1;15787:1:0::1;15743:41;:18:::0;15655:71;15743:22:::1;:41::i;:::-;:45;15739:261;;;15831:20;::::0;15806:12:::1;::::0;-1:-1:-1;;;;;15831:20:0::1;15865:41;:18:::0;15888:17;15865:22:::1;:41::i;:::-;15823:100;::::0;15913:5:::1;::::0;15823:100;::::1;::::0;;;;;15913:5;15823:100:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15805:118;;;15946:7;15938:50;;;::::0;-1:-1:-1;;;15938:50:0;;11246:2:1;15938:50:0::1;::::0;::::1;11228:21:1::0;11285:2;11265:18;;;11258:30;11324:32;11304:18;;;11297:60;11374:18;;15938:50:0::1;11044:354:1::0;15938:50:0::1;15790:210;15739:261;16015:19:::0;;16012:363:::1;;16051:6;::::0;16225:21:::1;::::0;16051:244:::1;::::0;-1:-1:-1;;;16051:244:0;;16127:4:::1;16051:244;::::0;::::1;11744:34:1::0;11794:18;;;11787:34;;;16051:6:0::1;11837:18:1::0;;;11830:34;;;11880:18;;;11873:34;-1:-1:-1;;;;;16225:21:0;;::::1;11923:19:1::0;;;11916:44;16265:15:0::1;11976:19:1::0;;;11969:35;16051:6:0;::::1;::::0;:22:::1;::::0;16081:18;;11678:19:1;;16051:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16315:48:0::1;::::0;;12500:25:1;;;12556:2;12541:18;;12534:34;;;16315:48:0::1;::::0;-1:-1:-1;12473:18:1;16315:48:0::1;;;;;;;16012:363;16404:14;::::0;-1:-1:-1;;;16404:14:0;::::1;;;16403:15;:111;;16454:18;;16437:13;;:35;:77;;16496:18;;16403:111;;16437:77;16475:18;;16403:111;;;16421:13;;16403:111;16387:13;:127:::0;-1:-1:-1;;8664:6:0;:14;;-1:-1:-1;;8664:14:0;;;-1:-1:-1;;;;;;;;14702:1820:0:o;13423:833::-;13637:14;;13399:8;;13531:7;;;;13581:71;;13637:14;13581:51;;:16;;:20;:51::i;:71::-;13551:101;;13685:27;13715:52;13758:8;;13715:38;13739:13;;13715:19;:23;;:38;;;;:::i;:52::-;13797:16;;13685:82;;-1:-1:-1;13797:41:0;;13685:82;13797:20;:41::i;:::-;13778:16;:60;13873:29;13905:44;:19;13929;13905:23;:44::i;:::-;14001:4;13985:22;;;;:7;:22;;;;;;13873:76;;-1:-1:-1;13985:49:0;;13873:76;13985:26;:49::i;:::-;13976:4;13960:22;;;;:7;:22;;;;;:74;;;;-1:-1:-1;;;;;14052:75:0;;;14084:42;14104:21;14084:19;:42::i;:::-;14052:75;;160:25:1;;;148:2;133:18;14052:75:0;;;;;;;14172:16;;14143:46;;;12500:25:1;;;12556:2;12541:18;;12534:34;;;;14143:46:0;;12473:18:1;14143:46:0;;;;;;;14207:41;:16;14228:19;14207:20;:41::i;:::-;14200:48;13423:833;-1:-1:-1;;;;;;;13423:833:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;196:597:1;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:173::-;866:20;;-1:-1:-1;;;;;915:31:1;;905:42;;895:70;;961:1;958;951:12;895:70;798:173;;;:::o;976:254::-;1044:6;1052;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1144:29;1163:9;1144:29;:::i;:::-;1134:39;1220:2;1205:18;;;;1192:32;;-1:-1:-1;;;976:254:1:o;1427:186::-;1486:6;1539:2;1527:9;1518:7;1514:23;1510:32;1507:52;;;1555:1;1552;1545:12;1507:52;1578:29;1597:9;1578:29;:::i;1618:328::-;1695:6;1703;1711;1764:2;1752:9;1743:7;1739:23;1735:32;1732:52;;;1780:1;1777;1770:12;1732:52;1803:29;1822:9;1803:29;:::i;:::-;1793:39;;1851:38;1885:2;1874:9;1870:18;1851:38;:::i;:::-;1841:48;;1936:2;1925:9;1921:18;1908:32;1898:42;;1618:328;;;;;:::o;1951:180::-;2010:6;2063:2;2051:9;2042:7;2038:23;2034:32;2031:52;;;2079:1;2076;2069:12;2031:52;-1:-1:-1;2102:23:1;;1951:180;-1:-1:-1;1951:180:1:o;2325:127::-;2386:10;2381:3;2377:20;2374:1;2367:31;2417:4;2414:1;2407:15;2441:4;2438:1;2431:15;2457:922;2526:6;2579:2;2567:9;2558:7;2554:23;2550:32;2547:52;;;2595:1;2592;2585:12;2547:52;2635:9;2622:23;2664:18;2705:2;2697:6;2694:14;2691:34;;;2721:1;2718;2711:12;2691:34;2759:6;2748:9;2744:22;2734:32;;2804:7;2797:4;2793:2;2789:13;2785:27;2775:55;;2826:1;2823;2816:12;2775:55;2862:2;2849:16;2884:2;2880;2877:10;2874:36;;;2890:18;;:::i;:::-;2965:2;2959:9;2933:2;3019:13;;-1:-1:-1;;3015:22:1;;;3039:2;3011:31;3007:40;2995:53;;;3063:18;;;3083:22;;;3060:46;3057:72;;;3109:18;;:::i;:::-;3149:10;3145:2;3138:22;3184:2;3176:6;3169:18;3224:7;3219:2;3214;3210;3206:11;3202:20;3199:33;3196:53;;;3245:1;3242;3235:12;3196:53;3301:2;3296;3292;3288:11;3283:2;3275:6;3271:15;3258:46;3346:1;3324:15;;;3341:2;3320:24;3313:35;;;;-1:-1:-1;3328:6:1;2457:922;-1:-1:-1;;;;;2457:922:1:o;3384:160::-;3449:20;;3505:13;;3498:21;3488:32;;3478:60;;3534:1;3531;3524:12;3549:385;3629:6;3637;3645;3653;3706:3;3694:9;3685:7;3681:23;3677:33;3674:53;;;3723:1;3720;3713:12;3674:53;3746:26;3762:9;3746:26;:::i;:::-;3736:36;;3819:2;3808:9;3804:18;3791:32;3781:42;;3870:2;3859:9;3855:18;3842:32;3832:42;;3893:35;3924:2;3913:9;3909:18;3893:35;:::i;:::-;3883:45;;3549:385;;;;;;;:::o;3939:::-;4025:6;4033;4041;4049;4102:3;4090:9;4081:7;4077:23;4073:33;4070:53;;;4119:1;4116;4109:12;4070:53;-1:-1:-1;;4142:23:1;;;4212:2;4197:18;;4184:32;;-1:-1:-1;4263:2:1;4248:18;;4235:32;;4314:2;4299:18;4286:32;;-1:-1:-1;3939:385:1;-1:-1:-1;3939:385:1:o;4329:254::-;4394:6;4402;4455:2;4443:9;4434:7;4430:23;4426:32;4423:52;;;4471:1;4468;4461:12;4423:52;4494:29;4513:9;4494:29;:::i;:::-;4484:39;;4542:35;4573:2;4562:9;4558:18;4542:35;:::i;:::-;4532:45;;4329:254;;;;;:::o;5336:260::-;5404:6;5412;5465:2;5453:9;5444:7;5440:23;5436:32;5433:52;;;5481:1;5478;5471:12;5433:52;5504:29;5523:9;5504:29;:::i;:::-;5494:39;;5552:38;5586:2;5575:9;5571:18;5552:38;:::i;5601:248::-;5669:6;5677;5730:2;5718:9;5709:7;5705:23;5701:32;5698:52;;;5746:1;5743;5736:12;5698:52;-1:-1:-1;;5769:23:1;;;5839:2;5824:18;;;5811:32;;-1:-1:-1;5601:248:1:o;5854:180::-;5910:6;5963:2;5951:9;5942:7;5938:23;5934:32;5931:52;;;5979:1;5976;5969:12;5931:52;6002:26;6018:9;6002:26;:::i;6265:380::-;6344:1;6340:12;;;;6387;;;6408:61;;6462:4;6454:6;6450:17;6440:27;;6408:61;6515:2;6507:6;6504:14;6484:18;6481:38;6478:161;;6561:10;6556:3;6552:20;6549:1;6542:31;6596:4;6593:1;6586:15;6624:4;6621:1;6614:15;6478:161;;6265:380;;;:::o;6650:356::-;6852:2;6834:21;;;6871:18;;;6864:30;6930:34;6925:2;6910:18;;6903:62;6997:2;6982:18;;6650:356::o;8031:127::-;8092:10;8087:3;8083:20;8080:1;8073:31;8123:4;8120:1;8113:15;8147:4;8144:1;8137:15;8163:168;8203:7;8269:1;8265;8261:6;8257:14;8254:1;8251:21;8246:1;8239:9;8232:17;8228:45;8225:71;;;8276:18;;:::i;:::-;-1:-1:-1;8316:9:1;;8163:168::o;8336:217::-;8376:1;8402;8392:132;;8446:10;8441:3;8437:20;8434:1;8427:31;8481:4;8478:1;8471:15;8509:4;8506:1;8499:15;8392:132;-1:-1:-1;8538:9:1;;8336:217::o;8960:125::-;9000:4;9028:1;9025;9022:8;9019:34;;;9033:18;;:::i;:::-;-1:-1:-1;9070:9:1;;8960:125::o;9090:128::-;9130:3;9161:1;9157:6;9154:1;9151:13;9148:39;;;9167:18;;:::i;:::-;-1:-1:-1;9203:9:1;;9090:128::o;9927:127::-;9988:10;9983:3;9979:20;9976:1;9969:31;10019:4;10016:1;10009:15;10043:4;10040:1;10033:15;10059:980;10321:4;10369:3;10358:9;10354:19;10400:6;10389:9;10382:25;10426:2;10464:6;10459:2;10448:9;10444:18;10437:34;10507:3;10502:2;10491:9;10487:18;10480:31;10531:6;10566;10560:13;10597:6;10589;10582:22;10635:3;10624:9;10620:19;10613:26;;10674:2;10666:6;10662:15;10648:29;;10695:1;10705:195;10719:6;10716:1;10713:13;10705:195;;;10784:13;;-1:-1:-1;;;;;10780:39:1;10768:52;;10875:15;;;;10840:12;;;;10816:1;10734:9;10705:195;;;-1:-1:-1;;;;;;;10956:32:1;;;;10951:2;10936:18;;10929:60;-1:-1:-1;;;11020:3:1;11005:19;10998:35;10917:3;10059:980;-1:-1:-1;;;10059:980:1:o;12015:306::-;12103:6;12111;12119;12172:2;12160:9;12151:7;12147:23;12143:32;12140:52;;;12188:1;12185;12178:12;12140:52;12217:9;12211:16;12201:26;;12267:2;12256:9;12252:18;12246:25;12236:35;;12311:2;12300:9;12296:18;12290:25;12280:35;;12015:306;;;;;:::o
Swarm Source
ipfs://a399b78042b0889e934c223b9a6247d1b46995b9700d46edc2ff3d40bf8ec728
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.