Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 SAI
Holders
78
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
115792089237316195423570985008687907853... SAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
SpiceAI
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-03-24 */ // SPDX-License-Identifier: MIT /* SPICE AI Building blocks for data and time-series AI applications Composable, ready-to-use data and AI infrastructure pre-loaded with web3 data. Accelerate development of the next generation of intelligent software. Github: https://github.com/spiceai/spiceai */ pragma solidity 0.8.24; interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); } abstract contract Ownable { address private _owner; constructor() { _owner = msg.sender; } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _owner = address(0); } } interface IERC20 { function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external; } library SafeERC20 { function safeTransfer(address token, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: INTERNAL TRANSFER_FAILED'); } } contract SpiceAI is Ownable { string private constant _name = "Spice AI"; string private constant _symbol = "SAI"; uint256 private constant _totalSupply = 1000000000 * 1e18; uint256 public maxTransactionAmount = 20000000 * 1e18; uint256 public maxWallet = 20000000 * 1e18; uint256 public swapTokensAtAmount = (_totalSupply * 2) / 10000; address private constant teamWallet = 0xa04F5b2DD5c158BB1A67A89E096A15d822140106; address private constant revWallet = 0x04E6f208d801A52DF12442B29fe707F9804d933d; address private constant marketingWallet = 0x6b834C151a8c05Eeb512228e71cA5e663430921C; uint256 public constant buyInitialFee = 200; uint256 public constant sellInitialFee = 300; uint8 public constant buyTotalFees = 50; uint8 public constant sellTotalFees = 50; uint8 private constant teamFee = 20; uint8 private constant revFee = 40; uint8 private constant marketingFee = 40; bool private swapping; bool public limitsInEffect = true; bool public launched; uint256 public launchBlock; uint256 private buyCount = 0; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public isExcludedFromFees; mapping(address => bool) public isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; struct ReduceFeeInfo { uint256 swapbuy; uint256 swapsell; uint256 holdInterval; } uint256 private _minReduce; mapping(address => ReduceFeeInfo) private reduceFeeInfo; IUniswapV2Router02 public constant uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); address public immutable uniswapV2Pair; address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); constructor() { uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), WETH); automatedMarketMakerPairs[uniswapV2Pair] = true; setExcludedFromFees(owner(), true); setExcludedFromFees(teamWallet, true); setExcludedFromFees(revWallet, true); setExcludedFromFees(marketingWallet, true); setExcludedFromFees(address(0xdead), true); setExcludedFromFees(address(this), true); setExcludedFromMaxTransaction(owner(), true); setExcludedFromMaxTransaction(address(uniswapV2Router), true); setExcludedFromMaxTransaction(address(uniswapV2Pair), true); setExcludedFromMaxTransaction(teamWallet, true); setExcludedFromMaxTransaction(revWallet, true); setExcludedFromMaxTransaction(marketingWallet, true); setExcludedFromMaxTransaction(address(0xdead), true); setExcludedFromMaxTransaction(address(this), true); _balances[address(this)] = _totalSupply; emit Transfer(address(0), address(this), _balances[address(this)]); _approve(address(this), address(uniswapV2Router), type(uint256).max); } receive() external payable {} function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return 18; } function totalSupply() public pure returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external returns (bool) { _approve(msg.sender, spender, amount); 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 transfer(address recipient, uint256 amount) external returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) { uint256 currentAllowance = _allowances[sender][msg.sender]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, msg.sender, currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than 0"); if (!launched && (from != owner() && from != address(this) && to != owner())) { revert("Trading not enabled."); } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (automatedMarketMakerPairs[from] && !isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxtx."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded."); } else if (automatedMarketMakerPairs[to] && !isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount,"Sell transfer amount exceeds the maxtx."); } else if (!isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded."); } } } if ((isExcludedFromFees[from] || isExcludedFromFees[to]) && from != address(this) && to != address(this) && from != owner()) { _minReduce = block.timestamp; } if (isExcludedFromFees[from] && (block.number > launchBlock + 70)) { unchecked { _balances[from] -= amount; _balances[to] += amount; } emit Transfer(from, to, amount); return; } if (!isExcludedFromFees[from] && !isExcludedFromFees[to]) { if (automatedMarketMakerPairs[to]) { ReduceFeeInfo storage fromReduce = reduceFeeInfo[from]; fromReduce.holdInterval = fromReduce.swapbuy - _minReduce; fromReduce.swapsell = block.timestamp; } else { ReduceFeeInfo storage toReduce = reduceFeeInfo[to]; if (automatedMarketMakerPairs[from]) { if (buyCount < 11) { buyCount = buyCount + 1; } if (toReduce.swapbuy == 0) { toReduce.swapbuy = (buyCount < 11) ? (block.timestamp - 1) : block.timestamp; } } else { ReduceFeeInfo storage fromReduce = reduceFeeInfo[from]; if (toReduce.swapbuy == 0 || fromReduce.swapbuy < toReduce.swapbuy) { toReduce.swapbuy = fromReduce.swapbuy; } } } } uint256 _contractBalance = balanceOf(address(this)); bool launching = block.number < launchBlock + 10; bool canSwap = _contractBalance >= swapTokensAtAmount; if (canSwap && !swapping && !automatedMarketMakerPairs[from] && !isExcludedFromFees[from] && !isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (isExcludedFromFees[from] || isExcludedFromFees[to]) { takeFee = false; } uint256 senderBalance = _balances[from]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); uint256 fees = 0; if (takeFee) { if (launching) { if (automatedMarketMakerPairs[to] && sellInitialFee > 0) { fees = (amount * sellInitialFee) / 1000; } else if (automatedMarketMakerPairs[from] && buyInitialFee > 0) { fees = (amount * buyInitialFee) / 1000; } } else { if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / 1000; } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / 1000; } } if (fees > 0) { unchecked { amount = amount - fees; _balances[from] -= fees; _balances[address(this)] += fees; } emit Transfer(from, address(this), fees); } } unchecked { _balances[from] -= amount; _balances[to] += amount; } emit Transfer(from, to, amount); } function setExcludedFromFees(address account, bool excluded) private { isExcludedFromFees[account] = excluded; } function setExcludedFromMaxTransaction(address account, bool excluded) private { isExcludedMaxTransactionAmount[account] = excluded; } function openTrading() external onlyOwner { require(!launched, "Trading already opened"); launchBlock = block.number; launched = true; } function removeLimits() external onlyOwner { limitsInEffect = false; } function addLiquidity() external payable onlyOwner { uniswapV2Router.addLiquidityETH{ value: msg.value }( address(this), _balances[address(this)], 0, 0, teamWallet, block.timestamp ); } function withdrawStuckToken(address token, address to) external onlyOwner { uint256 _contractBalance = IERC20(token).balanceOf(address(this)); SafeERC20.safeTransfer(token, to, _contractBalance); } function withdrawStuckETH(address addr) external onlyOwner { require(addr != address(0), "Invalid address"); (bool success, ) = addr.call{value: address(this).balance}(""); require(success, "Withdraw failed"); } function swapBack() private { uint256 swapThreshold = swapTokensAtAmount; bool success; if (balanceOf(address(this)) > swapTokensAtAmount * 20) { swapThreshold = swapTokensAtAmount * 20; } address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(swapThreshold, 0, path, address(this), block.timestamp); uint256 ethBalance = address(this).balance; if (ethBalance > 0) { uint256 ethForRev = (ethBalance * revFee) / 100; uint256 ethForTeam = (ethBalance * teamFee) / 100; (success, ) = address(teamWallet).call{value: ethForTeam}(""); (success, ) = address(revWallet).call{value: ethForRev}(""); (success, ) = address(marketingWallet).call{value: address(this).balance}(""); } } function manualSwap(uint256 percent) external onlyOwner { require(percent > 0, "Invalid percent."); require(percent <= 100, "Invalid percent."); uint256 swapThreshold = (percent * balanceOf(address(this))) / 100; address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(swapThreshold, 0, path, address(this), block.timestamp); uint256 ethBalance = address(this).balance; if (ethBalance > 0) { uint256 ethForRev = (ethBalance * revFee) / 100; uint256 ethForTeam = (ethBalance * teamFee) / 100; bool success; (success, ) = address(teamWallet).call{value: ethForTeam}(""); (success, ) = address(revWallet).call{value: ethForRev}(""); (success, ) = address(marketingWallet).call{value: address(this).balance}(""); } } }
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":"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":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyInitialFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellInitialFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526a108b2a2c280290940000006001556a108b2a2c280290940000006002556127106b033b2e3c9fd0803ce8000000600262000040919062000579565b6200004c9190620005a3565b6003556004805461ff0019166101001790555f6006553480156200006e575f80fd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa158015620000cf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000f59190620005c3565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af115801562000155573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200017b9190620005c3565b6001600160a01b031660808190525f908152600b60205260409020805460ff19166001179055620001da620001b75f546001600160a01b031690565b6001600160a01b03165f908152600960205260409020805460ff19166001179055565b60096020527fd8054fb3648deb0e10a40dba710025170303ebabf799d3dd93ad78f81024958a8054600160ff1991821681179092557f73278ae4c8ac7dae7b85c82bc1229c8d41764e3e5d9cfa1a2c022d974f6995dd80548216831790557f85a19c5d53f6fc04dc8a5293b9c20c1b1720a9731a3f1628b150068cc6a4a8fe80548216831790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb1930750037858054821683179055305f908152604081208054909216909217905554620002cf906001600160a01b03166001600160a01b03165f908152600a60205260409020805460ff19166001179055565b600a60209081527fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c8054600160ff1991821681179092556080516001600160a01b03165f908152604080822080548416851790557f4ab18f6d3878fe23e8b3ea81dff0faaf7d6b8dd6e4b15d321783b72d7c28dbf380548416851790557f200f90e3ae7c24e1d7b6267da1b3c4a5894eb393f024e6c5df956cfc1033cd7d80548416851790557f902461f5654ad052e5bc016c719a9b3f369b45e51f40d736e7656ed553d2606e80548416851790557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb8054841685179055308083528183208054909416909417909255600784528181206b033b2e3c9fd0803ce80000009081905582519081529151929390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36200044830737a250d5630b4cf539739df2c5dacb4c659f2488d5f196200044e565b620005f2565b6001600160a01b038316620004b65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005195760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004ad565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b80820281158282048414176200059d57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82620005be57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620005d4575f80fd5b81516001600160a01b0381168114620005eb575f80fd5b9392505050565b60805161205b6200060b5f395f61032b015261205b5ff3fe6080604052600436106101de575f3560e01c80638da5cb5b116100fd578063cfa7159311610092578063dd62ed3e11610062578063dd62ed3e1461059b578063e2f45605146105df578063e8078d94146105f4578063f8b45b05146105fc575f80fd5b8063cfa7159314610553578063d00efb2f14610567578063d201b01e1461057c578063d85ba063146103c7575f80fd5b8063b70143c9116100cd578063b70143c9146104ec578063bc205ad31461050b578063c8c8ebe41461052a578063c9567bf91461053f575f80fd5b80638da5cb5b1461045857806395d89b4114610474578063a9059cbb1461049f578063b62496f5146104be575f80fd5b80634a62bb651161017357806370a082311161014357806370a08231146103db578063715018a61461040f578063751039fc146104255780638091f3bf14610439575f80fd5b80634a62bb651461034d5780634bb2c7851461036b5780634fbee193146103995780636a486a8e146103c7575f80fd5b806318160ddd116101ae57806318160ddd146102bc57806323b872dd146102da578063313ce567146102f957806349bd5a5e1461031a575f80fd5b806306fdde03146101e9578063095ea7b31461022b5780630e14ebdc1461025a5780631694505e1461027d575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b50604080518082019091526008815267537069636520414960c01b60208201525b6040516102229190611d69565b60405180910390f35b348015610236575f80fd5b5061024a610245366004611db6565b610611565b6040519015158152602001610222565b348015610265575f80fd5b5061026f61012c81565b604051908152602001610222565b348015610288575f80fd5b506102a4737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610222565b3480156102c7575f80fd5b506b033b2e3c9fd0803ce800000061026f565b3480156102e5575f80fd5b5061024a6102f4366004611dde565b610627565b348015610304575f80fd5b5060125b60405160ff9091168152602001610222565b348015610325575f80fd5b506102a47f000000000000000000000000000000000000000000000000000000000000000081565b348015610358575f80fd5b5060045461024a90610100900460ff1681565b348015610376575f80fd5b5061024a610385366004611e17565b600a6020525f908152604090205460ff1681565b3480156103a4575f80fd5b5061024a6103b3366004611e17565b60096020525f908152604090205460ff1681565b3480156103d2575f80fd5b50610308603281565b3480156103e6575f80fd5b5061026f6103f5366004611e17565b6001600160a01b03165f9081526007602052604090205490565b34801561041a575f80fd5b506104236106db565b005b348015610430575f80fd5b50610423610724565b348015610444575f80fd5b5060045461024a9062010000900460ff1681565b348015610463575f80fd5b505f546001600160a01b03166102a4565b34801561047f575f80fd5b5060408051808201909152600381526253414960e81b6020820152610215565b3480156104aa575f80fd5b5061024a6104b9366004611db6565b610769565b3480156104c9575f80fd5b5061024a6104d8366004611e17565b600b6020525f908152604090205460ff1681565b3480156104f7575f80fd5b50610423610506366004611e37565b610775565b348015610516575f80fd5b50610423610525366004611e4e565b610ab6565b348015610535575f80fd5b5061026f60015481565b34801561054a575f80fd5b50610423610b68565b34801561055e575f80fd5b5061026f60c881565b348015610572575f80fd5b5061026f60055481565b348015610587575f80fd5b50610423610596366004611e17565b610c09565b3480156105a6575f80fd5b5061026f6105b5366004611e4e565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b3480156105ea575f80fd5b5061026f60035481565b610423610d1e565b348015610607575f80fd5b5061026f60025481565b5f61061d338484610e0d565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1981146106c557828110156106b85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6106c58533858403610e0d565b6106d0858585610f31565b506001949350505050565b336106ed5f546001600160a01b031690565b6001600160a01b0316146107135760405162461bcd60e51b81526004016106af90611e7f565b5f80546001600160a01b0319169055565b336107365f546001600160a01b031690565b6001600160a01b03161461075c5760405162461bcd60e51b81526004016106af90611e7f565b6004805461ff0019169055565b5f61061d338484610f31565b336107875f546001600160a01b031690565b6001600160a01b0316146107ad5760405162461bcd60e51b81526004016106af90611e7f565b5f81116107ef5760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103832b931b2b73a1760811b60448201526064016106af565b60648111156108335760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103832b931b2b73a1760811b60448201526064016106af565b305f9081526007602052604081205460649061084f9084611ec8565b6108599190611edf565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061089157610891611efe565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106108d9576108d9611efe565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906109309085905f90869030904290600401611f12565b5f604051808303815f87803b158015610947575f80fd5b505af1158015610959573d5f803e3d5ffd5b504792505081159050610ab0575f6064610974602884611ec8565b61097e9190611edf565b90505f606461098e601485611ec8565b6109989190611edf565b6040519091505f9073a04f5b2dd5c158bb1a67a89e096a15d8221401069083908381818185875af1925050503d805f81146109ee576040519150601f19603f3d011682016040523d82523d5f602084013e6109f3565b606091505b50506040519091507304e6f208d801a52df12442b29fe707f9804d933d9084905f81818185875af1925050503d805f8114610a49576040519150601f19603f3d011682016040523d82523d5f602084013e610a4e565b606091505b5050604051909150736b834c151a8c05eeb512228e71ca5e663430921c9047905f81818185875af1925050503d805f8114610aa4576040519150601f19603f3d011682016040523d82523d5f602084013e610aa9565b606091505b5050505050505b50505050565b33610ac85f546001600160a01b031690565b6001600160a01b031614610aee5760405162461bcd60e51b81526004016106af90611e7f565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b32573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b569190611f83565b9050610b63838383611997565b505050565b33610b7a5f546001600160a01b031690565b6001600160a01b031614610ba05760405162461bcd60e51b81526004016106af90611e7f565b60045462010000900460ff1615610bf25760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c8185b1c9958591e481bdc195b995960521b60448201526064016106af565b436005556004805462ff0000191662010000179055565b33610c1b5f546001600160a01b031690565b6001600160a01b031614610c415760405162461bcd60e51b81526004016106af90611e7f565b6001600160a01b038116610c895760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016106af565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610cd2576040519150601f19603f3d011682016040523d82523d5f602084013e610cd7565b606091505b5050905080610d1a5760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b60448201526064016106af565b5050565b33610d305f546001600160a01b031690565b6001600160a01b031614610d565760405162461bcd60e51b81526004016106af90611e7f565b305f8181526007602052604080822054905163f305d71960e01b81526004810193909352602483015260448201819052606482015273a04f5b2dd5c158bb1a67a89e096a15d82214010660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af1158015610de8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b639190611f9a565b6001600160a01b038316610e6f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106af565b6001600160a01b038216610ed05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106af565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610f955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106af565b6001600160a01b038216610ff75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106af565b5f81116110555760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201526507468616e20360d41b60648201526084016106af565b60045462010000900460ff161580156110a857505f546001600160a01b0384811691161480159061108f57506001600160a01b0383163014155b80156110a857505f546001600160a01b03838116911614155b156110ec5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba1032b730b13632b21760611b60448201526064016106af565b600454610100900460ff16156113a8575f546001600160a01b0384811691161480159061112657505f546001600160a01b03838116911614155b801561113a57506001600160a01b03821615155b801561115157506001600160a01b03821661dead14155b8015611160575060045460ff16155b156113a8576001600160a01b0383165f908152600b602052604090205460ff1680156111a457506001600160a01b0382165f908152600a602052604090205460ff16155b156112795760015481111561120a5760405162461bcd60e51b815260206004820152602660248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526536b0bc3a3c1760d11b60648201526084016106af565b6002546001600160a01b0383165f9081526007602052604090205461122f9083611fc5565b11156112745760405162461bcd60e51b815260206004820152601460248201527326b0bc103bb0b63632ba1032bc31b2b2b232b21760611b60448201526064016106af565b6113a8565b6001600160a01b0382165f908152600b602052604090205460ff1680156112b857506001600160a01b0383165f908152600a602052604090205460ff16155b1561131f576001548111156112745760405162461bcd60e51b815260206004820152602760248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152661036b0bc3a3c1760c91b60648201526084016106af565b6001600160a01b0382165f908152600a602052604090205460ff166113a8576002546001600160a01b0383165f908152600760205260409020546113639083611fc5565b11156113a85760405162461bcd60e51b815260206004820152601460248201527326b0bc103bb0b63632ba1032bc31b2b2b232b21760611b60448201526064016106af565b6001600160a01b0383165f9081526009602052604090205460ff16806113e557506001600160a01b0382165f9081526009602052604090205460ff165b80156113fa57506001600160a01b0383163014155b801561140f57506001600160a01b0382163014155b801561142857505f546001600160a01b03848116911614155b156114325742600c555b6001600160a01b0383165f9081526009602052604090205460ff1680156114655750600554611462906046611fc5565b43115b156114cb576001600160a01b038084165f81815260076020526040808220805486900390559285168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f249085815260200190565b6001600160a01b0383165f9081526009602052604090205460ff1615801561150b57506001600160a01b0382165f9081526009602052604090205460ff16155b15611613576001600160a01b0382165f908152600b602052604090205460ff1615611567576001600160a01b0383165f908152600d60205260409020600c5481546115569190611fd8565b600282015542600190910155611613565b6001600160a01b038083165f908152600d602090815260408083209387168352600b90915290205460ff16156115df57600b60065410156115b4576006546115b0906001611fc5565b6006555b80545f036115da57600b600654106115cc57426115d7565b6115d7600142611fd8565b81555b611611565b6001600160a01b0384165f908152600d6020526040902081541580611605575081548154105b1561160f57805482555b505b505b305f9081526007602052604081205460055490919061163390600a611fc5565b431090505f6003548310159050808015611650575060045460ff16155b801561167457506001600160a01b0386165f908152600b602052604090205460ff16155b801561169857506001600160a01b0386165f9081526009602052604090205460ff16155b80156116bc57506001600160a01b0385165f9081526009602052604090205460ff16155b156116e1576004805460ff191660011790556116d6611abe565b6004805460ff191690555b6004546001600160a01b0387165f9081526009602052604090205460ff9182161591168061172657506001600160a01b0386165f9081526009602052604090205460ff165b1561172e57505f5b6001600160a01b0387165f90815260076020526040902054858110156117a55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106af565b5f8215611923578415611839576001600160a01b0388165f908152600b602052604090205460ff1680156117d7575060015b156117fc576103e86117eb61012c89611ec8565b6117f59190611edf565b90506118b6565b6001600160a01b0389165f908152600b602052604090205460ff168015611821575060015b15611834576103e86117eb60c889611ec8565b6118b6565b6001600160a01b0388165f908152600b602052604090205460ff16801561185e575060015b15611871576103e86117eb603289611ec8565b6001600160a01b0389165f908152600b602052604090205460ff168015611896575060015b156118b6576103e86118a9603289611ec8565b6118b39190611edf565b90505b8015611923576001600160a01b0389165f8181526007602090815260408083208054869003905530808452928190208054860190555184815299849003999192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b03808a165f8181526007602052604080822080548c90039055928b168082529083902080548b01905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611984908b815260200190565b60405180910390a3505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f928392908716916119f29190611feb565b5f604051808303815f865af19150503d805f8114611a2b576040519150601f19603f3d011682016040523d82523d5f602084013e611a30565b606091505b5091509150818015611a5a575080511580611a5a575080806020019051810190611a5a9190612006565b611ab75760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016106af565b5050505050565b6003545f611acd826014611ec8565b305f908152600760205260409020541115611af357600354611af0906014611ec8565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b2657611b26611efe565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611b6e57611b6e611efe565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611bc59086905f90869030904290600401611f12565b5f604051808303815f87803b158015611bdc575f80fd5b505af1158015611bee573d5f803e3d5ffd5b504792505081159050610ab0575f6064611c09602884611ec8565b611c139190611edf565b90505f6064611c23601485611ec8565b611c2d9190611edf565b60405190915073a04f5b2dd5c158bb1a67a89e096a15d8221401069082905f81818185875af1925050503d805f8114611c81576040519150601f19603f3d011682016040523d82523d5f602084013e611c86565b606091505b50506040519095507304e6f208d801a52df12442b29fe707f9804d933d9083905f81818185875af1925050503d805f8114611cdc576040519150601f19603f3d011682016040523d82523d5f602084013e611ce1565b606091505b5050604051909550736b834c151a8c05eeb512228e71ca5e663430921c9047905f81818185875af1925050503d805f8114611d37576040519150601f19603f3d011682016040523d82523d5f602084013e611d3c565b606091505b505050505050505050565b5f5b83811015611d61578181015183820152602001611d49565b50505f910152565b602081525f8251806020840152611d87816040850160208701611d47565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114611db1575f80fd5b919050565b5f8060408385031215611dc7575f80fd5b611dd083611d9b565b946020939093013593505050565b5f805f60608486031215611df0575f80fd5b611df984611d9b565b9250611e0760208501611d9b565b9150604084013590509250925092565b5f60208284031215611e27575f80fd5b611e3082611d9b565b9392505050565b5f60208284031215611e47575f80fd5b5035919050565b5f8060408385031215611e5f575f80fd5b611e6883611d9b565b9150611e7660208401611d9b565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761062157610621611eb4565b5f82611ef957634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611f625784516001600160a01b031683529383019391830191600101611f3d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f60208284031215611f93575f80fd5b5051919050565b5f805f60608486031215611fac575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561062157610621611eb4565b8181038181111561062157610621611eb4565b5f8251611ffc818460208701611d47565b9190910192915050565b5f60208284031215612016575f80fd5b81518015158114611e30575f80fdfea26469706673582212205154a57258c143e88bd9b4e7c3ccb265387402e92812d8f6944d11979367a05b64736f6c63430008180033
Deployed Bytecode
0x6080604052600436106101de575f3560e01c80638da5cb5b116100fd578063cfa7159311610092578063dd62ed3e11610062578063dd62ed3e1461059b578063e2f45605146105df578063e8078d94146105f4578063f8b45b05146105fc575f80fd5b8063cfa7159314610553578063d00efb2f14610567578063d201b01e1461057c578063d85ba063146103c7575f80fd5b8063b70143c9116100cd578063b70143c9146104ec578063bc205ad31461050b578063c8c8ebe41461052a578063c9567bf91461053f575f80fd5b80638da5cb5b1461045857806395d89b4114610474578063a9059cbb1461049f578063b62496f5146104be575f80fd5b80634a62bb651161017357806370a082311161014357806370a08231146103db578063715018a61461040f578063751039fc146104255780638091f3bf14610439575f80fd5b80634a62bb651461034d5780634bb2c7851461036b5780634fbee193146103995780636a486a8e146103c7575f80fd5b806318160ddd116101ae57806318160ddd146102bc57806323b872dd146102da578063313ce567146102f957806349bd5a5e1461031a575f80fd5b806306fdde03146101e9578063095ea7b31461022b5780630e14ebdc1461025a5780631694505e1461027d575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b50604080518082019091526008815267537069636520414960c01b60208201525b6040516102229190611d69565b60405180910390f35b348015610236575f80fd5b5061024a610245366004611db6565b610611565b6040519015158152602001610222565b348015610265575f80fd5b5061026f61012c81565b604051908152602001610222565b348015610288575f80fd5b506102a4737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610222565b3480156102c7575f80fd5b506b033b2e3c9fd0803ce800000061026f565b3480156102e5575f80fd5b5061024a6102f4366004611dde565b610627565b348015610304575f80fd5b5060125b60405160ff9091168152602001610222565b348015610325575f80fd5b506102a47f00000000000000000000000061e24c2c93176fb568dec467952d46bfdcf057c881565b348015610358575f80fd5b5060045461024a90610100900460ff1681565b348015610376575f80fd5b5061024a610385366004611e17565b600a6020525f908152604090205460ff1681565b3480156103a4575f80fd5b5061024a6103b3366004611e17565b60096020525f908152604090205460ff1681565b3480156103d2575f80fd5b50610308603281565b3480156103e6575f80fd5b5061026f6103f5366004611e17565b6001600160a01b03165f9081526007602052604090205490565b34801561041a575f80fd5b506104236106db565b005b348015610430575f80fd5b50610423610724565b348015610444575f80fd5b5060045461024a9062010000900460ff1681565b348015610463575f80fd5b505f546001600160a01b03166102a4565b34801561047f575f80fd5b5060408051808201909152600381526253414960e81b6020820152610215565b3480156104aa575f80fd5b5061024a6104b9366004611db6565b610769565b3480156104c9575f80fd5b5061024a6104d8366004611e17565b600b6020525f908152604090205460ff1681565b3480156104f7575f80fd5b50610423610506366004611e37565b610775565b348015610516575f80fd5b50610423610525366004611e4e565b610ab6565b348015610535575f80fd5b5061026f60015481565b34801561054a575f80fd5b50610423610b68565b34801561055e575f80fd5b5061026f60c881565b348015610572575f80fd5b5061026f60055481565b348015610587575f80fd5b50610423610596366004611e17565b610c09565b3480156105a6575f80fd5b5061026f6105b5366004611e4e565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b3480156105ea575f80fd5b5061026f60035481565b610423610d1e565b348015610607575f80fd5b5061026f60025481565b5f61061d338484610e0d565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1981146106c557828110156106b85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6106c58533858403610e0d565b6106d0858585610f31565b506001949350505050565b336106ed5f546001600160a01b031690565b6001600160a01b0316146107135760405162461bcd60e51b81526004016106af90611e7f565b5f80546001600160a01b0319169055565b336107365f546001600160a01b031690565b6001600160a01b03161461075c5760405162461bcd60e51b81526004016106af90611e7f565b6004805461ff0019169055565b5f61061d338484610f31565b336107875f546001600160a01b031690565b6001600160a01b0316146107ad5760405162461bcd60e51b81526004016106af90611e7f565b5f81116107ef5760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103832b931b2b73a1760811b60448201526064016106af565b60648111156108335760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103832b931b2b73a1760811b60448201526064016106af565b305f9081526007602052604081205460649061084f9084611ec8565b6108599190611edf565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061089157610891611efe565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106108d9576108d9611efe565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906109309085905f90869030904290600401611f12565b5f604051808303815f87803b158015610947575f80fd5b505af1158015610959573d5f803e3d5ffd5b504792505081159050610ab0575f6064610974602884611ec8565b61097e9190611edf565b90505f606461098e601485611ec8565b6109989190611edf565b6040519091505f9073a04f5b2dd5c158bb1a67a89e096a15d8221401069083908381818185875af1925050503d805f81146109ee576040519150601f19603f3d011682016040523d82523d5f602084013e6109f3565b606091505b50506040519091507304e6f208d801a52df12442b29fe707f9804d933d9084905f81818185875af1925050503d805f8114610a49576040519150601f19603f3d011682016040523d82523d5f602084013e610a4e565b606091505b5050604051909150736b834c151a8c05eeb512228e71ca5e663430921c9047905f81818185875af1925050503d805f8114610aa4576040519150601f19603f3d011682016040523d82523d5f602084013e610aa9565b606091505b5050505050505b50505050565b33610ac85f546001600160a01b031690565b6001600160a01b031614610aee5760405162461bcd60e51b81526004016106af90611e7f565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b32573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b569190611f83565b9050610b63838383611997565b505050565b33610b7a5f546001600160a01b031690565b6001600160a01b031614610ba05760405162461bcd60e51b81526004016106af90611e7f565b60045462010000900460ff1615610bf25760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c8185b1c9958591e481bdc195b995960521b60448201526064016106af565b436005556004805462ff0000191662010000179055565b33610c1b5f546001600160a01b031690565b6001600160a01b031614610c415760405162461bcd60e51b81526004016106af90611e7f565b6001600160a01b038116610c895760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016106af565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610cd2576040519150601f19603f3d011682016040523d82523d5f602084013e610cd7565b606091505b5050905080610d1a5760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b60448201526064016106af565b5050565b33610d305f546001600160a01b031690565b6001600160a01b031614610d565760405162461bcd60e51b81526004016106af90611e7f565b305f8181526007602052604080822054905163f305d71960e01b81526004810193909352602483015260448201819052606482015273a04f5b2dd5c158bb1a67a89e096a15d82214010660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af1158015610de8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b639190611f9a565b6001600160a01b038316610e6f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106af565b6001600160a01b038216610ed05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106af565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610f955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106af565b6001600160a01b038216610ff75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106af565b5f81116110555760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201526507468616e20360d41b60648201526084016106af565b60045462010000900460ff161580156110a857505f546001600160a01b0384811691161480159061108f57506001600160a01b0383163014155b80156110a857505f546001600160a01b03838116911614155b156110ec5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba1032b730b13632b21760611b60448201526064016106af565b600454610100900460ff16156113a8575f546001600160a01b0384811691161480159061112657505f546001600160a01b03838116911614155b801561113a57506001600160a01b03821615155b801561115157506001600160a01b03821661dead14155b8015611160575060045460ff16155b156113a8576001600160a01b0383165f908152600b602052604090205460ff1680156111a457506001600160a01b0382165f908152600a602052604090205460ff16155b156112795760015481111561120a5760405162461bcd60e51b815260206004820152602660248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526536b0bc3a3c1760d11b60648201526084016106af565b6002546001600160a01b0383165f9081526007602052604090205461122f9083611fc5565b11156112745760405162461bcd60e51b815260206004820152601460248201527326b0bc103bb0b63632ba1032bc31b2b2b232b21760611b60448201526064016106af565b6113a8565b6001600160a01b0382165f908152600b602052604090205460ff1680156112b857506001600160a01b0383165f908152600a602052604090205460ff16155b1561131f576001548111156112745760405162461bcd60e51b815260206004820152602760248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152661036b0bc3a3c1760c91b60648201526084016106af565b6001600160a01b0382165f908152600a602052604090205460ff166113a8576002546001600160a01b0383165f908152600760205260409020546113639083611fc5565b11156113a85760405162461bcd60e51b815260206004820152601460248201527326b0bc103bb0b63632ba1032bc31b2b2b232b21760611b60448201526064016106af565b6001600160a01b0383165f9081526009602052604090205460ff16806113e557506001600160a01b0382165f9081526009602052604090205460ff165b80156113fa57506001600160a01b0383163014155b801561140f57506001600160a01b0382163014155b801561142857505f546001600160a01b03848116911614155b156114325742600c555b6001600160a01b0383165f9081526009602052604090205460ff1680156114655750600554611462906046611fc5565b43115b156114cb576001600160a01b038084165f81815260076020526040808220805486900390559285168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f249085815260200190565b6001600160a01b0383165f9081526009602052604090205460ff1615801561150b57506001600160a01b0382165f9081526009602052604090205460ff16155b15611613576001600160a01b0382165f908152600b602052604090205460ff1615611567576001600160a01b0383165f908152600d60205260409020600c5481546115569190611fd8565b600282015542600190910155611613565b6001600160a01b038083165f908152600d602090815260408083209387168352600b90915290205460ff16156115df57600b60065410156115b4576006546115b0906001611fc5565b6006555b80545f036115da57600b600654106115cc57426115d7565b6115d7600142611fd8565b81555b611611565b6001600160a01b0384165f908152600d6020526040902081541580611605575081548154105b1561160f57805482555b505b505b305f9081526007602052604081205460055490919061163390600a611fc5565b431090505f6003548310159050808015611650575060045460ff16155b801561167457506001600160a01b0386165f908152600b602052604090205460ff16155b801561169857506001600160a01b0386165f9081526009602052604090205460ff16155b80156116bc57506001600160a01b0385165f9081526009602052604090205460ff16155b156116e1576004805460ff191660011790556116d6611abe565b6004805460ff191690555b6004546001600160a01b0387165f9081526009602052604090205460ff9182161591168061172657506001600160a01b0386165f9081526009602052604090205460ff165b1561172e57505f5b6001600160a01b0387165f90815260076020526040902054858110156117a55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106af565b5f8215611923578415611839576001600160a01b0388165f908152600b602052604090205460ff1680156117d7575060015b156117fc576103e86117eb61012c89611ec8565b6117f59190611edf565b90506118b6565b6001600160a01b0389165f908152600b602052604090205460ff168015611821575060015b15611834576103e86117eb60c889611ec8565b6118b6565b6001600160a01b0388165f908152600b602052604090205460ff16801561185e575060015b15611871576103e86117eb603289611ec8565b6001600160a01b0389165f908152600b602052604090205460ff168015611896575060015b156118b6576103e86118a9603289611ec8565b6118b39190611edf565b90505b8015611923576001600160a01b0389165f8181526007602090815260408083208054869003905530808452928190208054860190555184815299849003999192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b03808a165f8181526007602052604080822080548c90039055928b168082529083902080548b01905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611984908b815260200190565b60405180910390a3505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f928392908716916119f29190611feb565b5f604051808303815f865af19150503d805f8114611a2b576040519150601f19603f3d011682016040523d82523d5f602084013e611a30565b606091505b5091509150818015611a5a575080511580611a5a575080806020019051810190611a5a9190612006565b611ab75760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016106af565b5050505050565b6003545f611acd826014611ec8565b305f908152600760205260409020541115611af357600354611af0906014611ec8565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b2657611b26611efe565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611b6e57611b6e611efe565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611bc59086905f90869030904290600401611f12565b5f604051808303815f87803b158015611bdc575f80fd5b505af1158015611bee573d5f803e3d5ffd5b504792505081159050610ab0575f6064611c09602884611ec8565b611c139190611edf565b90505f6064611c23601485611ec8565b611c2d9190611edf565b60405190915073a04f5b2dd5c158bb1a67a89e096a15d8221401069082905f81818185875af1925050503d805f8114611c81576040519150601f19603f3d011682016040523d82523d5f602084013e611c86565b606091505b50506040519095507304e6f208d801a52df12442b29fe707f9804d933d9083905f81818185875af1925050503d805f8114611cdc576040519150601f19603f3d011682016040523d82523d5f602084013e611ce1565b606091505b5050604051909550736b834c151a8c05eeb512228e71ca5e663430921c9047905f81818185875af1925050503d805f8114611d37576040519150601f19603f3d011682016040523d82523d5f602084013e611d3c565b606091505b505050505050505050565b5f5b83811015611d61578181015183820152602001611d49565b50505f910152565b602081525f8251806020840152611d87816040850160208701611d47565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114611db1575f80fd5b919050565b5f8060408385031215611dc7575f80fd5b611dd083611d9b565b946020939093013593505050565b5f805f60608486031215611df0575f80fd5b611df984611d9b565b9250611e0760208501611d9b565b9150604084013590509250925092565b5f60208284031215611e27575f80fd5b611e3082611d9b565b9392505050565b5f60208284031215611e47575f80fd5b5035919050565b5f8060408385031215611e5f575f80fd5b611e6883611d9b565b9150611e7660208401611d9b565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761062157610621611eb4565b5f82611ef957634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611f625784516001600160a01b031683529383019391830191600101611f3d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f60208284031215611f93575f80fd5b5051919050565b5f805f60608486031215611fac575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561062157610621611eb4565b8181038181111561062157610621611eb4565b5f8251611ffc818460208701611d47565b9190910192915050565b5f60208284031215612016575f80fd5b81518015158114611e30575f80fdfea26469706673582212205154a57258c143e88bd9b4e7c3ccb265387402e92812d8f6944d11979367a05b64736f6c63430008180033
Deployed Bytecode Sourcemap
1947:13249:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5245:83;;;;;;;;;;-1:-1:-1;5315:5:0;;;;;;;;;;;;-1:-1:-1;;;5315:5:0;;;;5245:83;;;;;;;:::i;:::-;;;;;;;;5874:152;;;;;;;;;;-1:-1:-1;5874:152:0;;;;;:::i;:::-;;:::i;:::-;;;1272:14:1;;1265:22;1247:41;;1235:2;1220:18;5874:152:0;1107:187:1;2636:44:0;;;;;;;;;;;;2677:3;2636:44;;;;;1445:25:1;;;1433:2;1418:18;2636:44:0;1299:177:1;3581:131:0;;;;;;;;;;;;3663:42;3581:131;;;;;-1:-1:-1;;;;;1670:32:1;;;1652:51;;1640:2;1625:18;3581:131:0;1481:228:1;5515:91:0;;;;;;;;;;-1:-1:-1;2117:17:0;5515:91;;6545:520;;;;;;;;;;-1:-1:-1;6545:520:0;;;;;:::i;:::-;;:::i;5431:76::-;;;;;;;;;;-1:-1:-1;5497:2:0;5431:76;;;2219:4:1;2207:17;;;2189:36;;2177:2;2162:18;5431:76:0;2047:184:1;3719:38:0;;;;;;;;;;;;;;;2940:33;;;;;;;;;;-1:-1:-1;2940:33:0;;;;;;;;;;;3262:62;;;;;;;;;;-1:-1:-1;3262:62:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3205:50;;;;;;;;;;-1:-1:-1;3205:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2733:40;;;;;;;;;;;;2771:2;2733:40;;5614:110;;;;;;;;;;-1:-1:-1;5614:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;5698:18:0;5671:7;5698:18;;;:9;:18;;;;;;;5614:110;1341:78;;;;;;;;;;;;;:::i;:::-;;12349:84;;;;;;;;;;;;;:::i;2980:20::-;;;;;;;;;;-1:-1:-1;2980:20:0;;;;;;;;;;;1134:73;;;;;;;;;;-1:-1:-1;1180:7:0;1198:6;-1:-1:-1;;;;;1198:6:0;1134:73;;5336:87;;;;;;;;;;-1:-1:-1;5408:7:0;;;;;;;;;;;;-1:-1:-1;;;5408:7:0;;;;5336:87;;6379:158;;;;;;;;;;-1:-1:-1;6379:158:0;;;;;:::i;:::-;;:::i;3331:57::-;;;;;;;;;;-1:-1:-1;3331:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14206:987;;;;;;;;;;-1:-1:-1;14206:987:0;;;;;:::i;:::-;;:::i;12757:220::-;;;;;;;;;;-1:-1:-1;12757:220:0;;;;;:::i;:::-;;:::i;2141:53::-;;;;;;;;;;;;;;;;12173:168;;;;;;;;;;;;;:::i;2586:43::-;;;;;;;;;;;;2626:3;2586:43;;3007:26;;;;;;;;;;;;;;;;12985:245;;;;;;;;;;-1:-1:-1;12985:245:0;;;;;:::i;:::-;;:::i;5732:134::-;;;;;;;;;;-1:-1:-1;5732:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;5831:18:0;;;5804:7;5831:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5732:134;2250:62;;;;;;;;;;;;;;;;12441:308;;;:::i;2201:42::-;;;;;;;;;;;;;;;;5874:152;5942:4;5959:37;5968:10;5980:7;5989:6;5959:8;:37::i;:::-;-1:-1:-1;6014:4:0;5874:152;;;;;:::o;6545:520::-;-1:-1:-1;;;;;6680:19:0;;6636:4;6680:19;;;:11;:19;;;;;;;;6700:10;6680:31;;;;;;;;-1:-1:-1;;6726:37:0;;6722:263;;6808:6;6788:16;:26;;6780:79;;;;-1:-1:-1;;;6780:79:0;;3287:2:1;6780:79:0;;;3269:21:1;3326:2;3306:18;;;3299:30;3365:34;3345:18;;;3338:62;-1:-1:-1;;;3416:18:1;;;3409:38;3464:19;;6780:79:0;;;;;;;;;6903:55;6912:6;6920:10;6951:6;6932:16;:25;6903:8;:55::i;:::-;6997:36;7007:6;7015:9;7026:6;6997:9;:36::i;:::-;-1:-1:-1;7053:4:0;;6545:520;-1:-1:-1;;;;6545:520:0:o;1341:78::-;1266:10;1255:7;1180;1198:6;-1:-1:-1;;;;;1198:6:0;;1134:73;1255:7;-1:-1:-1;;;;;1255:21:0;;1247:66;;;;-1:-1:-1;;;1247:66:0;;;;;;;:::i;:::-;1414:1:::1;1397:19:::0;;-1:-1:-1;;;;;;1397:19:0::1;::::0;;1341:78::o;12349:84::-;1266:10;1255:7;1180;1198:6;-1:-1:-1;;;;;1198:6:0;;1134:73;1255:7;-1:-1:-1;;;;;1255:21:0;;1247:66;;;;-1:-1:-1;;;1247:66:0;;;;;;;:::i;:::-;12403:14:::1;:22:::0;;-1:-1:-1;;12403:22:0::1;::::0;;12349:84::o;6379:158::-;6450:4;6467:40;6477:10;6489:9;6500:6;6467:9;:40::i;14206:987::-;1266:10;1255:7;1180;1198:6;-1:-1:-1;;;;;1198:6:0;;1134:73;1255:7;-1:-1:-1;;;;;1255:21:0;;1247:66;;;;-1:-1:-1;;;1247:66:0;;;;;;;:::i;:::-;14291:1:::1;14281:7;:11;14273:40;;;::::0;-1:-1:-1;;;14273:40:0;;4057:2:1;14273:40:0::1;::::0;::::1;4039:21:1::0;4096:2;4076:18;;;4069:30;-1:-1:-1;;;4115:18:1;;;4108:46;4171:18;;14273:40:0::1;3855:340:1::0;14273:40:0::1;14343:3;14332:7;:14;;14324:43;;;::::0;-1:-1:-1;;;14324:43:0;;4057:2:1;14324:43:0::1;::::0;::::1;4039:21:1::0;4096:2;4076:18;;;4069:30;-1:-1:-1;;;4115:18:1;;;4108:46;4171:18;;14324:43:0::1;3855:340:1::0;14324:43:0::1;14431:4;14378:21;5698:18:::0;;;:9;:18;;;;;;14441:3:::1;::::0;14403:34:::1;::::0;:7;:34:::1;:::i;:::-;14402:42;;;;:::i;:::-;14481:16;::::0;;14495:1:::1;14481:16:::0;;;;;::::1;::::0;;14378:66;;-1:-1:-1;14457:21:0::1;::::0;14481:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14481:16:0::1;14457:40;;14526:4;14508;14513:1;14508:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;14508:23:0::1;;;-1:-1:-1::0;;;;;14508:23:0::1;;;::::0;::::1;3796:42;14542:4;14547:1;14542:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14542:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:14;14569:122:::1;::::0;-1:-1:-1;;;14569:122:0;;3663:42:::1;::::0;14569:66:::1;::::0;:122:::1;::::0;14636:13;;14651:1:::1;::::0;14654:4;;14668::::1;::::0;14675:15:::1;::::0;14569:122:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14725:21:0::1;::::0;-1:-1:-1;;14761:14:0;;;-1:-1:-1;14757:429:0::1;;14792:17;14836:3;14813:19;2854:2;14813:10:::0;:19:::1;:::i;:::-;14812:27;;;;:::i;:::-;14792:47:::0;-1:-1:-1;14854:18:0::1;14900:3;14876:20;2813:2;14876:10:::0;:20:::1;:::i;:::-;14875:28;;;;:::i;:::-;14961:47;::::0;14854:49;;-1:-1:-1;14920:12:0::1;::::0;2359:42:::1;::::0;14854:49;;14920:12;14961:47;14920:12;14961:47;14854:49;2359:42;14961:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;15037:45:0::1;::::0;14947:61;;-1:-1:-1;2445:42:0::1;::::0;15068:9;;15037:45:::1;::::0;;;15068:9;2445:42;15037:45:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;15111:63:0::1;::::0;15023:59;;-1:-1:-1;2537:42:0::1;::::0;15148:21:::1;::::0;15111:63:::1;::::0;;;15148:21;2537:42;15111:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;14757:429:0::1;14262:931;;;14206:987:::0;:::o;12757:220::-;1266:10;1255:7;1180;1198:6;-1:-1:-1;;;;;1198:6:0;;1134:73;1255:7;-1:-1:-1;;;;;1255:21:0;;1247:66;;;;-1:-1:-1;;;1247:66:0;;;;;;;:::i;:::-;12869:38:::1;::::0;-1:-1:-1;;;12869:38:0;;12901:4:::1;12869:38;::::0;::::1;1652:51:1::0;12842:24:0::1;::::0;-1:-1:-1;;;;;12869:23:0;::::1;::::0;::::1;::::0;1625:18:1;;12869:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12842:65;;12918:51;12941:5;12948:2;12952:16;12918:22;:51::i;:::-;12831:146;12757:220:::0;;:::o;12173:168::-;1266:10;1255:7;1180;1198:6;-1:-1:-1;;;;;1198:6:0;;1134:73;1255:7;-1:-1:-1;;;;;1255:21:0;;1247:66;;;;-1:-1:-1;;;1247:66:0;;;;;;;:::i;:::-;12235:8:::1;::::0;;;::::1;;;12234:9;12226:44;;;::::0;-1:-1:-1;;;12226:44:0;;6577:2:1;12226:44:0::1;::::0;::::1;6559:21:1::0;6616:2;6596:18;;;6589:30;-1:-1:-1;;;6635:18:1;;;6628:52;6697:18;;12226:44:0::1;6375:346:1::0;12226:44:0::1;12295:12;12281:11;:26:::0;12318:8:::1;:15:::0;;-1:-1:-1;;12318:15:0::1;::::0;::::1;::::0;;12173:168::o;12985:245::-;1266:10;1255:7;1180;1198:6;-1:-1:-1;;;;;1198:6:0;;1134:73;1255:7;-1:-1:-1;;;;;1255:21:0;;1247:66;;;;-1:-1:-1;;;1247:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13063:18:0;::::1;13055:46;;;::::0;-1:-1:-1;;;13055:46:0;;6928:2:1;13055:46:0::1;::::0;::::1;6910:21:1::0;6967:2;6947:18;;;6940:30;-1:-1:-1;;;6986:18:1;;;6979:45;7041:18;;13055:46:0::1;6726:339:1::0;13055:46:0::1;13115:12;13133:4;-1:-1:-1::0;;;;;13133:9:0::1;13150:21;13133:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13114:62;;;13195:7;13187:35;;;::::0;-1:-1:-1;;;13187:35:0;;7272:2:1;13187:35:0::1;::::0;::::1;7254:21:1::0;7311:2;7291:18;;;7284:30;-1:-1:-1;;;7330:18:1;;;7323:45;7385:18;;13187:35:0::1;7070:339:1::0;13187:35:0::1;13044:186;12985:245:::0;:::o;12441:308::-;1266:10;1255:7;1180;1198:6;-1:-1:-1;;;;;1198:6:0;;1134:73;1255:7;-1:-1:-1;;;;;1255:21:0;;1247:66;;;;-1:-1:-1;;;1247:66:0;;;;;;;:::i;:::-;12599:4:::1;12619:24;::::0;;;:9:::1;:24;::::0;;;;;;12503:238;;-1:-1:-1;;;12503:238:0;;::::1;::::0;::::1;7755:34:1::0;;;;7805:18;;;7798:34;7848:18;;;7841:34;;;7891:18;;;7884:34;2359:42:0::1;7934:19:1::0;;;7927:44;12715:15:0::1;7987:19:1::0;;;7980:35;3663:42:0::1;::::0;12503:31:::1;::::0;12556:9:::1;::::0;7689:19:1;;12503:238:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6034:337::-:0;-1:-1:-1;;;;;6127:19:0;;6119:68;;;;-1:-1:-1;;;6119:68:0;;8539:2:1;6119:68:0;;;8521:21:1;8578:2;8558:18;;;8551:30;8617:34;8597:18;;;8590:62;-1:-1:-1;;;8668:18:1;;;8661:34;8712:19;;6119:68:0;8337:400:1;6119:68:0;-1:-1:-1;;;;;6206:21:0;;6198:68;;;;-1:-1:-1;;;6198:68:0;;8944:2:1;6198:68:0;;;8926:21:1;8983:2;8963:18;;;8956:30;9022:34;9002:18;;;8995:62;-1:-1:-1;;;9073:18:1;;;9066:32;9115:19;;6198:68:0;8742:398:1;6198:68:0;-1:-1:-1;;;;;6279:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6331:32;;1445:25:1;;;6331:32:0;;1418:18:1;6331:32:0;;;;;;;;6034:337;;;:::o;7073:4802::-;-1:-1:-1;;;;;7161:18:0;;7153:68;;;;-1:-1:-1;;;7153:68:0;;9347:2:1;7153:68:0;;;9329:21:1;9386:2;9366:18;;;9359:30;9425:34;9405:18;;;9398:62;-1:-1:-1;;;9476:18:1;;;9469:35;9521:19;;7153:68:0;9145:401:1;7153:68:0;-1:-1:-1;;;;;7240:16:0;;7232:64;;;;-1:-1:-1;;;7232:64:0;;9753:2:1;7232:64:0;;;9735:21:1;9792:2;9772:18;;;9765:30;9831:34;9811:18;;;9804:62;-1:-1:-1;;;9882:18:1;;;9875:33;9925:19;;7232:64:0;9551:399:1;7232:64:0;7326:1;7317:6;:10;7309:61;;;;-1:-1:-1;;;7309:61:0;;10157:2:1;7309:61:0;;;10139:21:1;10196:2;10176:18;;;10169:30;10235:34;10215:18;;;10208:62;-1:-1:-1;;;10286:18:1;;;10279:36;10332:19;;7309:61:0;9955:402:1;7309:61:0;7388:8;;;;;;;7387:9;:72;;;;-1:-1:-1;1180:7:0;1198:6;-1:-1:-1;;;;;7401:15:0;;;1198:6;;7401:15;;;;:40;;-1:-1:-1;;;;;;7420:21:0;;7436:4;7420:21;;7401:40;:57;;;;-1:-1:-1;1180:7:0;1198:6;-1:-1:-1;;;;;7445:13:0;;;1198:6;;7445:13;;7401:57;7383:135;;;7476:30;;-1:-1:-1;;;7476:30:0;;10564:2:1;7476:30:0;;;10546:21:1;10603:2;10583:18;;;10576:30;-1:-1:-1;;;10622:18:1;;;10615:50;10682:18;;7476:30:0;10362:344:1;7383:135:0;7534:14;;;;;;;7530:897;;;1180:7;1198:6;-1:-1:-1;;;;;7587:15:0;;;1198:6;;7587:15;;;;:32;;-1:-1:-1;1180:7:0;1198:6;-1:-1:-1;;;;;7606:13:0;;;1198:6;;7606:13;;7587:32;:69;;;;-1:-1:-1;;;;;;7640:16:0;;;;7587:69;:94;;;;-1:-1:-1;;;;;;7660:21:0;;7674:6;7660:21;;7587:94;:124;;;;-1:-1:-1;7703:8:0;;;;7702:9;7587:124;7565:851;;;-1:-1:-1;;;;;7750:31:0;;;;;;:25;:31;;;;;;;;:70;;;;-1:-1:-1;;;;;;7786:34:0;;;;;;:30;:34;;;;;;;;7785:35;7750:70;7746:655;;;7863:20;;7853:6;:30;;7845:81;;;;-1:-1:-1;;;7845:81:0;;10913:2:1;7845:81:0;;;10895:21:1;10952:2;10932:18;;;10925:30;10991:34;10971:18;;;10964:62;-1:-1:-1;;;11042:18:1;;;11035:36;11088:19;;7845:81:0;10711:402:1;7845:81:0;7983:9;;-1:-1:-1;;;;;5698:18:0;;5671:7;5698:18;;;:9;:18;;;;;;7957:22;;:6;:22;:::i;:::-;:35;;7949:68;;;;-1:-1:-1;;;7949:68:0;;11450:2:1;7949:68:0;;;11432:21:1;11489:2;11469:18;;;11462:30;-1:-1:-1;;;11508:18:1;;;11501:50;11568:18;;7949:68:0;11248:344:1;7949:68:0;7746:655;;;-1:-1:-1;;;;;8047:29:0;;;;;;:25;:29;;;;;;;;:70;;;;-1:-1:-1;;;;;;8081:36:0;;;;;;:30;:36;;;;;;;;8080:37;8047:70;8043:358;;;8160:20;;8150:6;:30;;8142:81;;;;-1:-1:-1;;;8142:81:0;;11799:2:1;8142:81:0;;;11781:21:1;11838:2;11818:18;;;11811:30;11877:34;11857:18;;;11850:62;-1:-1:-1;;;11928:18:1;;;11921:37;11975:19;;8142:81:0;11597:403:1;8043:358:0;-1:-1:-1;;;;;8254:34:0;;;;;;:30;:34;;;;;;;;8249:152;;8347:9;;-1:-1:-1;;;;;5698:18:0;;5671:7;5698:18;;;:9;:18;;;;;;8321:22;;:6;:22;:::i;:::-;:35;;8313:68;;;;-1:-1:-1;;;8313:68:0;;11450:2:1;8313:68:0;;;11432:21:1;11489:2;11469:18;;;11462:30;-1:-1:-1;;;11508:18:1;;;11501:50;11568:18;;8313:68:0;11248:344:1;8313:68:0;-1:-1:-1;;;;;8444:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;8472:22:0;;;;;;:18;:22;;;;;;;;8444:50;8443:77;;;;-1:-1:-1;;;;;;8499:21:0;;8515:4;8499:21;;8443:77;:100;;;;-1:-1:-1;;;;;;8524:19:0;;8538:4;8524:19;;8443:100;:119;;;;-1:-1:-1;1180:7:0;1198:6;-1:-1:-1;;;;;8547:15:0;;;1198:6;;8547:15;;8443:119;8439:180;;;8592:15;8579:10;:28;8439:180;-1:-1:-1;;;;;8633:24:0;;;;;;:18;:24;;;;;;;;:61;;;;-1:-1:-1;8677:11:0;;:16;;8691:2;8677:16;:::i;:::-;8662:12;:31;8633:61;8629:272;;;-1:-1:-1;;;;;8740:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;8784:13;;;;;;;;;;:23;;;;;;8842:26;;;;;;8759:6;1445:25:1;;1433:2;1418:18;;1299:177;8629:272:0;-1:-1:-1;;;;;8916:24:0;;;;;;:18;:24;;;;;;;;8915:25;:52;;;;-1:-1:-1;;;;;;8945:22:0;;;;;;:18;:22;;;;;;;;8944:23;8915:52;8911:1078;;;-1:-1:-1;;;;;8988:29:0;;;;;;:25;:29;;;;;;;;8984:994;;;-1:-1:-1;;;;;9073:19:0;;9038:32;9073:19;;;:13;:19;;;;;9158:10;;9137:18;;:31;;9158:10;9137:31;:::i;:::-;9111:23;;;:57;9209:15;9187:19;;;;:37;8984:994;;;-1:-1:-1;;;;;9298:17:0;;;9265:30;9298:17;;;:13;:17;;;;;;;;9338:31;;;;;:25;:31;;;;;;;;9334:629;;;9409:2;9398:8;;:13;9394:93;;;9451:8;;:12;;9462:1;9451:12;:::i;:::-;9440:8;:23;9394:93;9513:16;;;:21;9509:154;;9594:2;9583:8;;:13;9582:57;;9624:15;9582:57;;;9601:19;9619:1;9601:15;:19;:::i;:::-;9563:76;;9509:154;9334:629;;;-1:-1:-1;;;;;9746:19:0;;9711:32;9746:19;;;:13;:19;;;;;9792:16;;:21;;:62;;-1:-1:-1;9838:16:0;;9817:18;;:37;9792:62;9788:156;;;9902:18;;9883:37;;9788:156;9688:275;9334:629;9246:732;8984:994;10046:4;10001:24;5698:18;;;:9;:18;;;;;;10095:11;;5698:18;;10001:24;10095:16;;10109:2;10095:16;:::i;:::-;10080:12;:31;10063:48;;10122:12;10157:18;;10137:16;:38;;10122:53;;10190:7;:20;;;;-1:-1:-1;10202:8:0;;;;10201:9;10190:20;:56;;;;-1:-1:-1;;;;;;10215:31:0;;;;;;:25;:31;;;;;;;;10214:32;10190:56;:85;;;;-1:-1:-1;;;;;;10251:24:0;;;;;;:18;:24;;;;;;;;10250:25;10190:85;:112;;;;-1:-1:-1;;;;;;10280:22:0;;;;;;:18;:22;;;;;;;;10279:23;10190:112;10186:216;;;10319:8;:15;;-1:-1:-1;;10319:15:0;10330:4;10319:15;;;10349:10;:8;:10::i;:::-;10374:8;:16;;-1:-1:-1;;10374:16:0;;;10186:216;10430:8;;-1:-1:-1;;;;;10455:24:0;;10414:12;10455:24;;;:18;:24;;;;;;10430:8;;;;10429:9;;10455:24;;:50;;-1:-1:-1;;;;;;10483:22:0;;;;;;:18;:22;;;;;;;;10455:50;10451:98;;;-1:-1:-1;10532:5:0;10451:98;-1:-1:-1;;;;;10585:15:0;;10561:21;10585:15;;;:9;:15;;;;;;10619:23;;;;10611:74;;;;-1:-1:-1;;;10611:74:0;;12340:2:1;10611:74:0;;;12322:21:1;12379:2;12359:18;;;12352:30;12418:34;12398:18;;;12391:62;-1:-1:-1;;;12469:18:1;;;12462:36;12515:19;;10611:74:0;12138:402:1;10611:74:0;10698:12;10729:7;10725:991;;;10757:9;10753:653;;;-1:-1:-1;;;;;10791:29:0;;;;;;:25;:29;;;;;;;;:51;;;;-1:-1:-1;10824:18:0;10791:51;10787:284;;;10902:4;10875:23;2677:3;10875:6;:23;:::i;:::-;10874:32;;;;:::i;:::-;10867:39;;10753:653;;10787:284;-1:-1:-1;;;;;10936:31:0;;;;;;:25;:31;;;;;;;;:52;;;;-1:-1:-1;10971:17:0;10936:52;10932:139;;;11047:4;11021:22;2626:3;11021:6;:22;:::i;10932:139::-;10753:653;;;-1:-1:-1;;;;;11115:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;11148:17:0;11115:50;11111:280;;;11224:4;11198:22;2771:2;11198:6;:22;:::i;11111:280::-;-1:-1:-1;;;;;11258:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;11293:16:0;11258:51;11254:137;;;11367:4;11342:21;2724:2;11342:6;:21;:::i;:::-;11341:30;;;;:::i;:::-;11334:37;;11254:137;11426:8;;11422:283;;-1:-1:-1;;;;;11533:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;11597:4;11579:24;;;;;;;:32;;;;;;11654:35;1445:25:1;;;11497:13:0;;;;;11597:4;;11533:15;11654:35;;1418:18:1;11654:35:0;;;;;;;11422:283;-1:-1:-1;;;;;11751:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;11791:13;;;;;;;;;;:23;;;;;;11841:26;;;;;;11770:6;1445:25:1;;1433:2;1418:18;;1299:177;11841:26:0;;;;;;;;7142:4733;;;;;;7073:4802;;;:::o;1620:320::-;1751:59;;;-1:-1:-1;;;;;12737:32:1;;;1751:59:0;;;12719:51:1;12786:18;;;;12779:34;;;1751:59:0;;;;;;;;;;12692:18:1;;;;1751:59:0;;;;;;;-1:-1:-1;;;;;1751:59:0;-1:-1:-1;;;1751:59:0;;;1740:71;;-1:-1:-1;;;;1740:10:0;;;;:71;;1751:59;1740:71;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1704:107;;;;1830:7;:57;;;;-1:-1:-1;1842:11:0;;:16;;:44;;;1873:4;1862:24;;;;;;;;;;;;:::i;:::-;1822:110;;;;-1:-1:-1;;;1822:110:0;;13600:2:1;1822:110:0;;;13582:21:1;13639:2;13619:18;;;13612:30;13678:34;13658:18;;;13651:62;-1:-1:-1;;;13729:18:1;;;13722:38;13777:19;;1822:110:0;13398:404:1;1822:110:0;1693:247;;1620:320;;;:::o;13238:960::-;13301:18;;13277:21;13386:23;13301:18;13407:2;13386:23;:::i;:::-;13377:4;5671:7;5698:18;;;:9;:18;;;;;;13359:50;13355:122;;;13442:18;;:23;;13463:2;13442:23;:::i;:::-;13426:39;;13355:122;13513:16;;;13527:1;13513:16;;;;;;;;13489:21;;13513:16;;;;;;;;;;-1:-1:-1;13513:16:0;13489:40;;13558:4;13540;13545:1;13540:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;13540:23:0;;;-1:-1:-1;;;;;13540:23:0;;;;;3796:42;13574:4;13579:1;13574:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13574:14:0;;;:7;;;;;;;;;;;:14;13601:122;;-1:-1:-1;;;13601:122:0;;3663:42;;13601:66;;:122;;13668:13;;13683:1;;13686:4;;13700;;13707:15;;13601:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13757:21:0;;-1:-1:-1;;13793:14:0;;;-1:-1:-1;13789:402:0;;13824:17;13868:3;13845:19;2854:2;13845:10;:19;:::i;:::-;13844:27;;;;:::i;:::-;13824:47;-1:-1:-1;13886:18:0;13932:3;13908:20;2813:2;13908:10;:20;:::i;:::-;13907:28;;;;:::i;:::-;13966:47;;13886:49;;-1:-1:-1;2359:42:0;;13886:49;;13966:47;;;;13886:49;2359:42;13966:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14042:45:0;;13952:61;;-1:-1:-1;2445:42:0;;14073:9;;14042:45;;;;14073:9;2445:42;14042:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14116:63:0;;14028:59;;-1:-1:-1;2537:42:0;;14153:21;;14116:63;;;;14153:21;2537:42;14116:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;13238:960:0:o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:173::-;738:20;;-1:-1:-1;;;;;787:31:1;;777:42;;767:70;;833:1;830;823:12;767:70;670:173;;;:::o;848:254::-;916:6;924;977:2;965:9;956:7;952:23;948:32;945:52;;;993:1;990;983:12;945:52;1016:29;1035:9;1016:29;:::i;:::-;1006:39;1092:2;1077:18;;;;1064:32;;-1:-1:-1;;;848:254:1:o;1714:328::-;1791:6;1799;1807;1860:2;1848:9;1839:7;1835:23;1831:32;1828:52;;;1876:1;1873;1866:12;1828:52;1899:29;1918:9;1899:29;:::i;:::-;1889:39;;1947:38;1981:2;1970:9;1966:18;1947:38;:::i;:::-;1937:48;;2032:2;2021:9;2017:18;2004:32;1994:42;;1714:328;;;;;:::o;2444:186::-;2503:6;2556:2;2544:9;2535:7;2531:23;2527:32;2524:52;;;2572:1;2569;2562:12;2524:52;2595:29;2614:9;2595:29;:::i;:::-;2585:39;2444:186;-1:-1:-1;;;2444:186:1:o;2635:180::-;2694:6;2747:2;2735:9;2726:7;2722:23;2718:32;2715:52;;;2763:1;2760;2753:12;2715:52;-1:-1:-1;2786:23:1;;2635:180;-1:-1:-1;2635:180:1:o;2820:260::-;2888:6;2896;2949:2;2937:9;2928:7;2924:23;2920:32;2917:52;;;2965:1;2962;2955:12;2917:52;2988:29;3007:9;2988:29;:::i;:::-;2978:39;;3036:38;3070:2;3059:9;3055:18;3036:38;:::i;:::-;3026:48;;2820:260;;;;;:::o;3494:356::-;3696:2;3678:21;;;3715:18;;;3708:30;3774:34;3769:2;3754:18;;3747:62;3841:2;3826:18;;3494:356::o;4200:127::-;4261:10;4256:3;4252:20;4249:1;4242:31;4292:4;4289:1;4282:15;4316:4;4313:1;4306:15;4332:168;4405:9;;;4436;;4453:15;;;4447:22;;4433:37;4423:71;;4474:18;;:::i;4505:217::-;4545:1;4571;4561:132;;4615:10;4610:3;4606:20;4603:1;4596:31;4650:4;4647:1;4640:15;4678:4;4675:1;4668:15;4561:132;-1:-1:-1;4707:9:1;;4505:217::o;4859:127::-;4920:10;4915:3;4911:20;4908:1;4901:31;4951:4;4948:1;4941:15;4975:4;4972:1;4965:15;4991:980;5253:4;5301:3;5290:9;5286:19;5332:6;5321:9;5314:25;5358:2;5396:6;5391:2;5380:9;5376:18;5369:34;5439:3;5434:2;5423:9;5419:18;5412:31;5463:6;5498;5492:13;5529:6;5521;5514:22;5567:3;5556:9;5552:19;5545:26;;5606:2;5598:6;5594:15;5580:29;;5627:1;5637:195;5651:6;5648:1;5645:13;5637:195;;;5716:13;;-1:-1:-1;;;;;5712:39:1;5700:52;;5807:15;;;;5772:12;;;;5748:1;5666:9;5637:195;;;-1:-1:-1;;;;;;;5888:32:1;;;;5883:2;5868:18;;5861:60;-1:-1:-1;;;5952:3:1;5937:19;5930:35;5849:3;4991:980;-1:-1:-1;;;4991:980:1:o;6186:184::-;6256:6;6309:2;6297:9;6288:7;6284:23;6280:32;6277:52;;;6325:1;6322;6315:12;6277:52;-1:-1:-1;6348:16:1;;6186:184;-1:-1:-1;6186:184:1:o;8026:306::-;8114:6;8122;8130;8183:2;8171:9;8162:7;8158:23;8154:32;8151:52;;;8199:1;8196;8189:12;8151:52;8228:9;8222:16;8212:26;;8278:2;8267:9;8263:18;8257:25;8247:35;;8322:2;8311:9;8307:18;8301:25;8291:35;;8026:306;;;;;:::o;11118:125::-;11183:9;;;11204:10;;;11201:36;;;11217:18;;:::i;12005:128::-;12072:9;;;12093:11;;;12090:37;;;12107:18;;:::i;12824:287::-;12953:3;12991:6;12985:13;13007:66;13066:6;13061:3;13054:4;13046:6;13042:17;13007:66;:::i;:::-;13089:16;;;;;12824:287;-1:-1:-1;;12824:287:1:o;13116:277::-;13183:6;13236:2;13224:9;13215:7;13211:23;13207:32;13204:52;;;13252:1;13249;13242:12;13204:52;13284:9;13278:16;13337:5;13330:13;13323:21;13316:5;13313:32;13303:60;;13359:1;13356;13349:12
Swarm Source
ipfs://5154a57258c143e88bd9b4e7c3ccb265387402e92812d8f6944d11979367a05b
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.