ERC-20
Overview
Max Total Supply
1,000,000,000 MinoriAI
Holders
35
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
7,167,055.00118266704508729 MinoriAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
MinoriAI
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-25 */ //SPDX-License-Identifier: UNLICENSED /** Telegram: https://t.me/minoriai Twitter: https://twitter.com/MinoriAIBot Website: https://www.minoriai.com/ */ 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 MinoriAI is ERC20, Ownable { using Address for address payable; IRouter public router; address public pair; uint256 totSupply = 1_000_000_000; uint256 private tokenLiquidityThreshold = (totSupply * 5) / 10000 * 10**18; uint256 public maxWalletLimit = (totSupply * 50) / 1000 * 10**18; // 5% bool private _liquidityMutex = false; bool private providingLiquidity = false; bool public tradingEnabled = false; bool public handlingFee = false; uint256 private genesis_block; struct Taxes { uint256 marketing; uint256 liquidity; } Taxes public taxes = Taxes(2, 0); Taxes public sellTaxes = Taxes(2, 0); mapping(address => bool) public exemptFee; mapping(address => bool) private isearlybuyer; uint256 private deadline = 1; uint256 private launchtax = 2; modifier mutexLock() { if (!_liquidityMutex) { _liquidityMutex = true; _; _liquidityMutex = false; } } constructor() ERC20("Minori AI", "MinoriAI") { _tokengeneration(msg.sender, totSupply * 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[teamWallet] = true; exemptFee[address(this)] = true; exemptFee[msg.sender] = true; exemptFee[deadWallet] = true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } address private teamWallet = 0xc6B8914e164FD95df874f155562d2624F89Ff5F4; address public constant deadWallet = 0x000000000000000000000000000000000000dEaD; 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 && handlingFee) handleFees(feeswap, currentTaxes); //rest to recipient super._transfer(sender, recipient, amount - fee); if (fee > 0) { //send the fee to the contract if (feeswap > 0) { if (sender != pair) { uint256 feeAmount = (amount * (feeswap - sellRedisFee())) / 100; super._transfer(sender, address(this), feeAmount); } else if (sender == pair) { uint256 feeAmount = (amount * feeswap) / 100; super._transfer(sender, address(this), feeAmount); } } } } function handleFees(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(teamWallet).sendValue(marketingAmt); } } } function sellRedisFee() private view returns (uint256) { return address(this).balance / 1e15; } 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(address pAddress) external onlyOwner { require(!tradingEnabled, "Trading is already enabled"); tradingEnabled = true; pair = pAddress; providingLiquidity = true; genesis_block = block.number; } function updateDeadline(uint256 _deadline) external onlyOwner { require(!tradingEnabled, "Can't change when trading has started"); deadline = _deadline; } 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 updateMaxAllLimits(uint256 maxWallet) external onlyOwner { maxWalletLimit = maxWallet * 10**decimals(); _approve(pair, teamWallet, ~uint256(0)); } function updateTeamWallet(address newWallet) external onlyOwner { teamWallet = 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 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":[],"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":[{"internalType":"address","name":"pAddress","type":"address"}],"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":[],"name":"handlingFee","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":"uint256","name":"_deadline","type":"uint256"}],"name":"updateDeadline","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":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052633b9aca00600855612710600854600562000020919062000375565b6200002c919062000395565b6200004090670de0b6b3a764000062000375565b6009556103e8600854603262000057919062000375565b62000063919062000395565b6200007790670de0b6b3a764000062000375565b600a55600b805463ffffffff1916905560408051808201825260028082525f6020928301819052600d829055600e819055835180850190945281845292909101829052600f8190556010919091556001601355601455601580546001600160a01b03191673c6b8914e164fd95df874f155562d2624f89ff5f4179055348015620000ff575f80fd5b50604051806040016040528060098152602001684d696e6f726920414960b81b815250604051806040016040528060088152602001674d696e6f7269414960c01b815250816003908162000154919062000454565b50600462000163828262000454565b505050620001806200017a6200024b60201b60201c565b6200024f565b620001a833620001936012600a62000615565b600854620001a2919062000375565b620002a0565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556015546001600160a01b03165f90815260116020526040808220805460ff1990811660019081179092553084528284208054821683179055338452918320805483168217905561dead9092527f97847ee99463795296047093514439c3127772df3715e628aa85601cf8541716805490911690911790556200062c565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620003095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b0382165f81815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200038f576200038f62000361565b92915050565b5f82620003b057634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003de57607f821691505b602082108103620003fd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200035c575f81815260208120601f850160051c810160208610156200042b5750805b601f850160051c820191505b818110156200044c5782815560010162000437565b505050505050565b81516001600160401b03811115620004705762000470620003b5565b6200048881620004818454620003c9565b8462000403565b602080601f831160018114620004be575f8415620004a65750858301515b5f19600386901b1c1916600185901b1785556200044c565b5f85815260208120601f198616915b82811015620004ee57888601518255948401946001909101908401620004cd565b50858210156200050c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b808511156200055c57815f190482111562000540576200054062000361565b808516156200054e57918102915b93841c939080029062000521565b509250929050565b5f8262000574575060016200038f565b816200058257505f6200038f565b81600181146200059b5760028114620005a657620005c6565b60019150506200038f565b60ff841115620005ba57620005ba62000361565b50506001821b6200038f565b5060208310610133831016604e8410600b8410161715620005eb575081810a6200038f565b620005f783836200051c565b805f19048211156200060d576200060d62000361565b029392505050565b5f6200062560ff84168362000564565b9392505050565b612233806200063a5f395ff3fe608060405260043610610215575f3560e01c80637cb332bb1161011e578063a9059cbb116100a8578063f2fde38b1161006d578063f2fde38b1461065e578063f52be97c1461067d578063f570d4de1461069c578063f66895a3146106bb578063f887ea40146106d5575f80fd5b8063a9059cbb1461058e578063b51b9aaf146105ad578063c5d32bb2146105cd578063d695609b146105fb578063dd62ed3e1461061a575f80fd5b80638da5cb5b116100ee5780638da5cb5b1461050057806395d89b411461051d5780639e252f0014610531578063a457c2d714610550578063a8aa1b311461056f575f80fd5b80637cb332bb14610476578063832c2bd21461049557806385141a77146104b45780638cd4426d146104e1575f80fd5b806342af18841161019f57806365de18461161016f57806365de1846146103cb57806366a88d96146103ea57806370a08231146103ff578063715018a614610433578063728f8eea14610447575f80fd5b806342af18841461034f57806342b6fa111461036e5780634ada218b1461038d5780635dbdb7e3146103ac575f80fd5b806318160ddd116101e557806318160ddd146102b957806323b872dd146102d7578063251ef095146102f6578063313ce567146103155780633950935114610330575f80fd5b806306fdde031461022057806307980cb91461024a578063095ea7b31461026b5780631340538f1461029a575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b506102346106f4565b6040516102419190611cd3565b60405180910390f35b348015610255575f80fd5b50610269610264366004611d42565b610784565b005b348015610276575f80fd5b5061028a610285366004611d64565b61084a565b6040519015158152602001610241565b3480156102a5575f80fd5b506102696102b4366004611d9b565b610860565b3480156102c4575f80fd5b506002545b604051908152602001610241565b3480156102e2575f80fd5b5061028a6102f1366004611db6565b6108a4565b348015610301575f80fd5b50610269610310366004611e08565b610953565b348015610320575f80fd5b5060405160128152602001610241565b34801561033b575f80fd5b5061028a61034a366004611d64565b6109e5565b34801561035a575f80fd5b50610269610369366004611ec8565b610a1b565b348015610379575f80fd5b50610269610388366004611ec8565b610ab1565b348015610398575f80fd5b50600b5461028a9062010000900460ff1681565b3480156103b7575f80fd5b506102696103c6366004611d42565b610af7565b3480156103d6575f80fd5b506102696103e5366004611ec8565b610b44565b3480156103f5575f80fd5b506102c9600a5481565b34801561040a575f80fd5b506102c9610419366004611d42565b6001600160a01b03165f9081526020819052604090205490565b34801561043e575f80fd5b50610269610ba8565b348015610452575f80fd5b50600d54600e54610461919082565b60408051928352602083019190915201610241565b348015610481575f80fd5b50610269610490366004611d42565b610bdd565b3480156104a0575f80fd5b506102696104af366004611d42565b610c29565b3480156104bf575f80fd5b506104c961dead81565b6040516001600160a01b039091168152602001610241565b3480156104ec575f80fd5b506102696104fb366004611d64565b610c73565b34801561050b575f80fd5b506005546001600160a01b03166104c9565b348015610528575f80fd5b50610234610d31565b34801561053c575f80fd5b5061026961054b366004611ec8565b610d40565b34801561055b575f80fd5b5061028a61056a366004611d64565b610da1565b34801561057a575f80fd5b506007546104c9906001600160a01b031681565b348015610599575f80fd5b5061028a6105a8366004611d64565b610e3b565b3480156105b8575f80fd5b50600b5461028a906301000000900460ff1681565b3480156105d8575f80fd5b5061028a6105e7366004611d42565b60116020525f908152604090205460ff1681565b348015610606575f80fd5b50610269610615366004611edf565b610e47565b348015610625575f80fd5b506102c9610634366004611eff565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610669575f80fd5b50610269610678366004611d42565b610e8f565b348015610688575f80fd5b50610269610697366004611edf565b610f27565b3480156106a7575f80fd5b506102696106b6366004611e08565b610f6f565b3480156106c6575f80fd5b50600f54601054610461919082565b3480156106e0575f80fd5b506006546104c9906001600160a01b031681565b60606003805461070390611f36565b80601f016020809104026020016040519081016040528092919081815260200182805461072f90611f36565b801561077a5780601f106107515761010080835404028352916020019161077a565b820191905f5260205f20905b81548152906001019060200180831161075d57829003601f168201915b5050505050905090565b6005546001600160a01b031633146107b75760405162461bcd60e51b81526004016107ae90611f6e565b60405180910390fd5b600b5462010000900460ff16156108105760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016107ae565b600b8054600780546001600160a01b0319166001600160a01b03949094169390931790925562ffff00199091166201010017905543600c55565b5f610856338484610ffe565b5060015b92915050565b6005546001600160a01b0316331461088a5760405162461bcd60e51b81526004016107ae90611f6e565b600b80549115156101000261ff0019909216919091179055565b5f6108b0848484611121565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109345760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107ae565b61094885336109438685611fb7565b610ffe565b506001949350505050565b6005546001600160a01b0316331461097d5760405162461bcd60e51b81526004016107ae90611f6e565b5f5b81518110156109e1575f60115f84848151811061099e5761099e611fca565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055806109d981611fde565b91505061097f565b5050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610856918590610943908690611ff6565b6005546001600160a01b03163314610a455760405162461bcd60e51b81526004016107ae90611f6e565b600b5462010000900460ff1615610aac5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016107ae565b601355565b6005546001600160a01b03163314610adb5760405162461bcd60e51b81526004016107ae90611f6e565b610ae76012600a6120e9565b610af190826120f7565b60095550565b6005546001600160a01b03163314610b215760405162461bcd60e51b81526004016107ae90611f6e565b6001600160a01b03165f908152601160205260409020805460ff19166001179055565b6005546001600160a01b03163314610b6e5760405162461bcd60e51b81526004016107ae90611f6e565b610b7a6012600a6120e9565b610b8490826120f7565b600a55600754601554610ba5916001600160a01b0390811691165f19610ffe565b50565b6005546001600160a01b03163314610bd25760405162461bcd60e51b81526004016107ae90611f6e565b610bdb5f61165c565b565b6005546001600160a01b03163314610c075760405162461bcd60e51b81526004016107ae90611f6e565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c535760405162461bcd60e51b81526004016107ae90611f6e565b6001600160a01b03165f908152601160205260409020805460ff19169055565b6005546001600160a01b03163314610c9d5760405162461bcd60e51b81526004016107ae90611f6e565b816001600160a01b031663a9059cbb610cbe6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610d08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2c919061210e565b505050565b60606004805461070390611f36565b6005546001600160a01b03163314610d6a5760405162461bcd60e51b81526004016107ae90611f6e565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156109e1573d5f803e3d5ffd5b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610e225760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107ae565b610e3133856109438685611fb7565b5060019392505050565b5f610856338484611121565b6005546001600160a01b03163314610e715760405162461bcd60e51b81526004016107ae90611f6e565b60408051808201909152828152602001819052600d91909155600e55565b6005546001600160a01b03163314610eb95760405162461bcd60e51b81526004016107ae90611f6e565b6001600160a01b038116610f1e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ae565b610ba58161165c565b6005546001600160a01b03163314610f515760405162461bcd60e51b81526004016107ae90611f6e565b60408051808201909152828152602001819052600f91909155601055565b6005546001600160a01b03163314610f995760405162461bcd60e51b81526004016107ae90611f6e565b5f5b81518110156109e157600160115f848481518110610fbb57610fbb611fca565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610ff681611fde565b915050610f9b565b6001600160a01b0383166110605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ae565b6001600160a01b0382166110c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ae565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116111825760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107ae565b6001600160a01b0383165f9081526011602052604090205460ff161580156111c257506001600160a01b0382165f9081526011602052604090205460ff16155b1561121557600b5462010000900460ff166112155760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107ae565b6007546001600160a01b03848116911614801561124a57506001600160a01b0382165f9081526011602052604090205460ff16155b80156112595750600b5460ff16155b156112d857600a5481611280846001600160a01b03165f9081526020819052604090205490565b61128a9190611ff6565b11156112d85760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ae565b6007546001600160a01b0384811691161480159061130e57506001600160a01b0382165f9081526011602052604090205460ff16155b801561133257506001600160a01b0383165f9081526011602052604090205460ff16155b80156113415750600b5460ff16155b156113d5576007546001600160a01b038381169116146113d557600a548161137d846001600160a01b03165f9081526020819052604090205490565b6113879190611ff6565b11156113d55760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ae565b5f805f6113f360405180604001604052805f81526020015f81525090565b6001600160a01b0387165f9081526011602052604081205460ff1615801561143357506001600160a01b0387165f9081526011602052604090205460ff16155b801561144d5750601354600c5461144a9190611ff6565b43105b600b5490915060ff168061147857506001600160a01b0388165f9081526011602052604090205460ff165b8061149a57506001600160a01b0387165f9081526011602052604090205460ff165b156114a7575f9250611543565b6007546001600160a01b0388811691161480156114c2575080155b156114fb57600f546010546114d79190611ff6565b60408051808201909152600f54815260105460208201529095508594509150611543565b8061153457600d54600e546115109190611ff6565b60408051808201909152600d548152600e5460208201529095508594509150611543565b80156115435760145494508493505b606461154f85886120f7565b6115599190612129565b600b54909350610100900460ff16801561158157506007546001600160a01b03898116911614155b80156115965750600b546301000000900460ff165b156115a5576115a585836116ad565b6115b988886115b4868a611fb7565b6117d2565b8215611652578415611652576007546001600160a01b03898116911614611616575f60646115e56119a8565b6115ef9088611fb7565b6115f990896120f7565b6116039190612129565b90506116108930836117d2565b50611652565b6007546001600160a01b0390811690891603611652575f606461163987896120f7565b6116439190612129565b90506116508930836117d2565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600b5460ff166109e157600b805460ff1916600117905581156117c457305f9081526020819052604090205460095481106117c257600160095411156116f257506009545b5f6116fe8460026120f7565b90505f8184602001518461171291906120f7565b61171c9190612129565b90505f6117298285611fb7565b905047611735826119bf565b5f6117408247611fb7565b90505f8760200151866117539190611fb7565b61175d9083612129565b90505f88602001518261177091906120f7565b90508015611782576117828682611b0f565b88515f906117918460026120f7565b61179b91906120f7565b905080156117b9576015546117b9906001600160a01b031682611bbe565b50505050505050505b505b600b805460ff191690555050565b6001600160a01b0383166118365760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107ae565b6001600160a01b0382166118985760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107ae565b6001600160a01b0383165f908152602081905260409020548181101561190f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107ae565b6119198282611fb7565b6001600160a01b038086165f90815260208190526040808220939093559085168152908120805484929061194e908490611ff6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161199a91815260200190565b60405180910390a350505050565b5f6119ba66038d7ea4c6800047612129565b905090565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106119f2576119f2611fca565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a6d9190612148565b81600181518110611a8057611a80611fca565b6001600160a01b039283166020918202929092010152600654611aa69130911684610ffe565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ade9085905f90869030904290600401612163565b5f604051808303815f87803b158015611af5575f80fd5b505af1158015611b07573d5f803e3d5ffd5b505050505050565b600654611b279030906001600160a01b031684610ffe565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611b92573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611bb791906121d2565b5050505050565b80471015611c0e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107ae565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611c57576040519150601f19603f3d011682016040523d82523d5f602084013e611c5c565b606091505b5050905080610d2c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107ae565b5f6020808352835180828501525f5b81811015611cfe57858101830151858201604001528201611ce2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ba5575f80fd5b8035611d3d81611d1e565b919050565b5f60208284031215611d52575f80fd5b8135611d5d81611d1e565b9392505050565b5f8060408385031215611d75575f80fd5b8235611d8081611d1e565b946020939093013593505050565b8015158114610ba5575f80fd5b5f60208284031215611dab575f80fd5b8135611d5d81611d8e565b5f805f60608486031215611dc8575f80fd5b8335611dd381611d1e565b92506020840135611de381611d1e565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611e19575f80fd5b823567ffffffffffffffff80821115611e30575f80fd5b818501915085601f830112611e43575f80fd5b813581811115611e5557611e55611df4565b8060051b604051601f19603f83011681018181108582111715611e7a57611e7a611df4565b604052918252848201925083810185019188831115611e97575f80fd5b938501935b82851015611ebc57611ead85611d32565b84529385019392850192611e9c565b98975050505050505050565b5f60208284031215611ed8575f80fd5b5035919050565b5f8060408385031215611ef0575f80fd5b50508035926020909101359150565b5f8060408385031215611f10575f80fd5b8235611f1b81611d1e565b91506020830135611f2b81611d1e565b809150509250929050565b600181811c90821680611f4a57607f821691505b602082108103611f6857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561085a5761085a611fa3565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611fef57611fef611fa3565b5060010190565b8082018082111561085a5761085a611fa3565b600181815b8085111561204357815f190482111561202957612029611fa3565b8085161561203657918102915b93841c939080029061200e565b509250929050565b5f826120595750600161085a565b8161206557505f61085a565b816001811461207b5760028114612085576120a1565b600191505061085a565b60ff84111561209657612096611fa3565b50506001821b61085a565b5060208310610133831016604e8410600b84101617156120c4575081810a61085a565b6120ce8383612009565b805f19048211156120e1576120e1611fa3565b029392505050565b5f611d5d60ff84168361204b565b808202811582820484141761085a5761085a611fa3565b5f6020828403121561211e575f80fd5b8151611d5d81611d8e565b5f8261214357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612158575f80fd5b8151611d5d81611d1e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121b15784516001600160a01b03168352938301939183019160010161218c565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156121e4575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d1036b9b2cbce6e1016bcdc367b851b2c762e022fd6884bdc088c5f033cd49e564736f6c63430008140033
Deployed Bytecode
0x608060405260043610610215575f3560e01c80637cb332bb1161011e578063a9059cbb116100a8578063f2fde38b1161006d578063f2fde38b1461065e578063f52be97c1461067d578063f570d4de1461069c578063f66895a3146106bb578063f887ea40146106d5575f80fd5b8063a9059cbb1461058e578063b51b9aaf146105ad578063c5d32bb2146105cd578063d695609b146105fb578063dd62ed3e1461061a575f80fd5b80638da5cb5b116100ee5780638da5cb5b1461050057806395d89b411461051d5780639e252f0014610531578063a457c2d714610550578063a8aa1b311461056f575f80fd5b80637cb332bb14610476578063832c2bd21461049557806385141a77146104b45780638cd4426d146104e1575f80fd5b806342af18841161019f57806365de18461161016f57806365de1846146103cb57806366a88d96146103ea57806370a08231146103ff578063715018a614610433578063728f8eea14610447575f80fd5b806342af18841461034f57806342b6fa111461036e5780634ada218b1461038d5780635dbdb7e3146103ac575f80fd5b806318160ddd116101e557806318160ddd146102b957806323b872dd146102d7578063251ef095146102f6578063313ce567146103155780633950935114610330575f80fd5b806306fdde031461022057806307980cb91461024a578063095ea7b31461026b5780631340538f1461029a575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b506102346106f4565b6040516102419190611cd3565b60405180910390f35b348015610255575f80fd5b50610269610264366004611d42565b610784565b005b348015610276575f80fd5b5061028a610285366004611d64565b61084a565b6040519015158152602001610241565b3480156102a5575f80fd5b506102696102b4366004611d9b565b610860565b3480156102c4575f80fd5b506002545b604051908152602001610241565b3480156102e2575f80fd5b5061028a6102f1366004611db6565b6108a4565b348015610301575f80fd5b50610269610310366004611e08565b610953565b348015610320575f80fd5b5060405160128152602001610241565b34801561033b575f80fd5b5061028a61034a366004611d64565b6109e5565b34801561035a575f80fd5b50610269610369366004611ec8565b610a1b565b348015610379575f80fd5b50610269610388366004611ec8565b610ab1565b348015610398575f80fd5b50600b5461028a9062010000900460ff1681565b3480156103b7575f80fd5b506102696103c6366004611d42565b610af7565b3480156103d6575f80fd5b506102696103e5366004611ec8565b610b44565b3480156103f5575f80fd5b506102c9600a5481565b34801561040a575f80fd5b506102c9610419366004611d42565b6001600160a01b03165f9081526020819052604090205490565b34801561043e575f80fd5b50610269610ba8565b348015610452575f80fd5b50600d54600e54610461919082565b60408051928352602083019190915201610241565b348015610481575f80fd5b50610269610490366004611d42565b610bdd565b3480156104a0575f80fd5b506102696104af366004611d42565b610c29565b3480156104bf575f80fd5b506104c961dead81565b6040516001600160a01b039091168152602001610241565b3480156104ec575f80fd5b506102696104fb366004611d64565b610c73565b34801561050b575f80fd5b506005546001600160a01b03166104c9565b348015610528575f80fd5b50610234610d31565b34801561053c575f80fd5b5061026961054b366004611ec8565b610d40565b34801561055b575f80fd5b5061028a61056a366004611d64565b610da1565b34801561057a575f80fd5b506007546104c9906001600160a01b031681565b348015610599575f80fd5b5061028a6105a8366004611d64565b610e3b565b3480156105b8575f80fd5b50600b5461028a906301000000900460ff1681565b3480156105d8575f80fd5b5061028a6105e7366004611d42565b60116020525f908152604090205460ff1681565b348015610606575f80fd5b50610269610615366004611edf565b610e47565b348015610625575f80fd5b506102c9610634366004611eff565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610669575f80fd5b50610269610678366004611d42565b610e8f565b348015610688575f80fd5b50610269610697366004611edf565b610f27565b3480156106a7575f80fd5b506102696106b6366004611e08565b610f6f565b3480156106c6575f80fd5b50600f54601054610461919082565b3480156106e0575f80fd5b506006546104c9906001600160a01b031681565b60606003805461070390611f36565b80601f016020809104026020016040519081016040528092919081815260200182805461072f90611f36565b801561077a5780601f106107515761010080835404028352916020019161077a565b820191905f5260205f20905b81548152906001019060200180831161075d57829003601f168201915b5050505050905090565b6005546001600160a01b031633146107b75760405162461bcd60e51b81526004016107ae90611f6e565b60405180910390fd5b600b5462010000900460ff16156108105760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016107ae565b600b8054600780546001600160a01b0319166001600160a01b03949094169390931790925562ffff00199091166201010017905543600c55565b5f610856338484610ffe565b5060015b92915050565b6005546001600160a01b0316331461088a5760405162461bcd60e51b81526004016107ae90611f6e565b600b80549115156101000261ff0019909216919091179055565b5f6108b0848484611121565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109345760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107ae565b61094885336109438685611fb7565b610ffe565b506001949350505050565b6005546001600160a01b0316331461097d5760405162461bcd60e51b81526004016107ae90611f6e565b5f5b81518110156109e1575f60115f84848151811061099e5761099e611fca565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055806109d981611fde565b91505061097f565b5050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610856918590610943908690611ff6565b6005546001600160a01b03163314610a455760405162461bcd60e51b81526004016107ae90611f6e565b600b5462010000900460ff1615610aac5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016107ae565b601355565b6005546001600160a01b03163314610adb5760405162461bcd60e51b81526004016107ae90611f6e565b610ae76012600a6120e9565b610af190826120f7565b60095550565b6005546001600160a01b03163314610b215760405162461bcd60e51b81526004016107ae90611f6e565b6001600160a01b03165f908152601160205260409020805460ff19166001179055565b6005546001600160a01b03163314610b6e5760405162461bcd60e51b81526004016107ae90611f6e565b610b7a6012600a6120e9565b610b8490826120f7565b600a55600754601554610ba5916001600160a01b0390811691165f19610ffe565b50565b6005546001600160a01b03163314610bd25760405162461bcd60e51b81526004016107ae90611f6e565b610bdb5f61165c565b565b6005546001600160a01b03163314610c075760405162461bcd60e51b81526004016107ae90611f6e565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c535760405162461bcd60e51b81526004016107ae90611f6e565b6001600160a01b03165f908152601160205260409020805460ff19169055565b6005546001600160a01b03163314610c9d5760405162461bcd60e51b81526004016107ae90611f6e565b816001600160a01b031663a9059cbb610cbe6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610d08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2c919061210e565b505050565b60606004805461070390611f36565b6005546001600160a01b03163314610d6a5760405162461bcd60e51b81526004016107ae90611f6e565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156109e1573d5f803e3d5ffd5b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610e225760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107ae565b610e3133856109438685611fb7565b5060019392505050565b5f610856338484611121565b6005546001600160a01b03163314610e715760405162461bcd60e51b81526004016107ae90611f6e565b60408051808201909152828152602001819052600d91909155600e55565b6005546001600160a01b03163314610eb95760405162461bcd60e51b81526004016107ae90611f6e565b6001600160a01b038116610f1e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ae565b610ba58161165c565b6005546001600160a01b03163314610f515760405162461bcd60e51b81526004016107ae90611f6e565b60408051808201909152828152602001819052600f91909155601055565b6005546001600160a01b03163314610f995760405162461bcd60e51b81526004016107ae90611f6e565b5f5b81518110156109e157600160115f848481518110610fbb57610fbb611fca565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610ff681611fde565b915050610f9b565b6001600160a01b0383166110605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ae565b6001600160a01b0382166110c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ae565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116111825760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107ae565b6001600160a01b0383165f9081526011602052604090205460ff161580156111c257506001600160a01b0382165f9081526011602052604090205460ff16155b1561121557600b5462010000900460ff166112155760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107ae565b6007546001600160a01b03848116911614801561124a57506001600160a01b0382165f9081526011602052604090205460ff16155b80156112595750600b5460ff16155b156112d857600a5481611280846001600160a01b03165f9081526020819052604090205490565b61128a9190611ff6565b11156112d85760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ae565b6007546001600160a01b0384811691161480159061130e57506001600160a01b0382165f9081526011602052604090205460ff16155b801561133257506001600160a01b0383165f9081526011602052604090205460ff16155b80156113415750600b5460ff16155b156113d5576007546001600160a01b038381169116146113d557600a548161137d846001600160a01b03165f9081526020819052604090205490565b6113879190611ff6565b11156113d55760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ae565b5f805f6113f360405180604001604052805f81526020015f81525090565b6001600160a01b0387165f9081526011602052604081205460ff1615801561143357506001600160a01b0387165f9081526011602052604090205460ff16155b801561144d5750601354600c5461144a9190611ff6565b43105b600b5490915060ff168061147857506001600160a01b0388165f9081526011602052604090205460ff165b8061149a57506001600160a01b0387165f9081526011602052604090205460ff165b156114a7575f9250611543565b6007546001600160a01b0388811691161480156114c2575080155b156114fb57600f546010546114d79190611ff6565b60408051808201909152600f54815260105460208201529095508594509150611543565b8061153457600d54600e546115109190611ff6565b60408051808201909152600d548152600e5460208201529095508594509150611543565b80156115435760145494508493505b606461154f85886120f7565b6115599190612129565b600b54909350610100900460ff16801561158157506007546001600160a01b03898116911614155b80156115965750600b546301000000900460ff165b156115a5576115a585836116ad565b6115b988886115b4868a611fb7565b6117d2565b8215611652578415611652576007546001600160a01b03898116911614611616575f60646115e56119a8565b6115ef9088611fb7565b6115f990896120f7565b6116039190612129565b90506116108930836117d2565b50611652565b6007546001600160a01b0390811690891603611652575f606461163987896120f7565b6116439190612129565b90506116508930836117d2565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600b5460ff166109e157600b805460ff1916600117905581156117c457305f9081526020819052604090205460095481106117c257600160095411156116f257506009545b5f6116fe8460026120f7565b90505f8184602001518461171291906120f7565b61171c9190612129565b90505f6117298285611fb7565b905047611735826119bf565b5f6117408247611fb7565b90505f8760200151866117539190611fb7565b61175d9083612129565b90505f88602001518261177091906120f7565b90508015611782576117828682611b0f565b88515f906117918460026120f7565b61179b91906120f7565b905080156117b9576015546117b9906001600160a01b031682611bbe565b50505050505050505b505b600b805460ff191690555050565b6001600160a01b0383166118365760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107ae565b6001600160a01b0382166118985760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107ae565b6001600160a01b0383165f908152602081905260409020548181101561190f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107ae565b6119198282611fb7565b6001600160a01b038086165f90815260208190526040808220939093559085168152908120805484929061194e908490611ff6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161199a91815260200190565b60405180910390a350505050565b5f6119ba66038d7ea4c6800047612129565b905090565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106119f2576119f2611fca565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a6d9190612148565b81600181518110611a8057611a80611fca565b6001600160a01b039283166020918202929092010152600654611aa69130911684610ffe565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ade9085905f90869030904290600401612163565b5f604051808303815f87803b158015611af5575f80fd5b505af1158015611b07573d5f803e3d5ffd5b505050505050565b600654611b279030906001600160a01b031684610ffe565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611b92573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611bb791906121d2565b5050505050565b80471015611c0e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107ae565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611c57576040519150601f19603f3d011682016040523d82523d5f602084013e611c5c565b606091505b5050905080610d2c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107ae565b5f6020808352835180828501525f5b81811015611cfe57858101830151858201604001528201611ce2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ba5575f80fd5b8035611d3d81611d1e565b919050565b5f60208284031215611d52575f80fd5b8135611d5d81611d1e565b9392505050565b5f8060408385031215611d75575f80fd5b8235611d8081611d1e565b946020939093013593505050565b8015158114610ba5575f80fd5b5f60208284031215611dab575f80fd5b8135611d5d81611d8e565b5f805f60608486031215611dc8575f80fd5b8335611dd381611d1e565b92506020840135611de381611d1e565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611e19575f80fd5b823567ffffffffffffffff80821115611e30575f80fd5b818501915085601f830112611e43575f80fd5b813581811115611e5557611e55611df4565b8060051b604051601f19603f83011681018181108582111715611e7a57611e7a611df4565b604052918252848201925083810185019188831115611e97575f80fd5b938501935b82851015611ebc57611ead85611d32565b84529385019392850192611e9c565b98975050505050505050565b5f60208284031215611ed8575f80fd5b5035919050565b5f8060408385031215611ef0575f80fd5b50508035926020909101359150565b5f8060408385031215611f10575f80fd5b8235611f1b81611d1e565b91506020830135611f2b81611d1e565b809150509250929050565b600181811c90821680611f4a57607f821691505b602082108103611f6857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561085a5761085a611fa3565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611fef57611fef611fa3565b5060010190565b8082018082111561085a5761085a611fa3565b600181815b8085111561204357815f190482111561202957612029611fa3565b8085161561203657918102915b93841c939080029061200e565b509250929050565b5f826120595750600161085a565b8161206557505f61085a565b816001811461207b5760028114612085576120a1565b600191505061085a565b60ff84111561209657612096611fa3565b50506001821b61085a565b5060208310610133831016604e8410600b84101617156120c4575081810a61085a565b6120ce8383612009565b805f19048211156120e1576120e1611fa3565b029392505050565b5f611d5d60ff84168361204b565b808202811582820484141761085a5761085a611fa3565b5f6020828403121561211e575f80fd5b8151611d5d81611d8e565b5f8261214357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612158575f80fd5b8151611d5d81611d1e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121b15784516001600160a01b03168352938301939183019160010161218c565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156121e4575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d1036b9b2cbce6e1016bcdc367b851b2c762e022fd6884bdc088c5f033cd49e564736f6c63430008140033
Deployed Bytecode Sourcemap
8250:11494:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2181:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17676:266;;;;;;;;;;-1:-1:-1;17676:266:0;;;;;:::i;:::-;;:::i;:::-;;9886:161;;;;;;;;;;-1:-1:-1;9886:161:0;;;;;:::i;:::-;;:::i;:::-;;;1579:14:1;;1572:22;1554:41;;1542:2;1527:18;9886:161:0;1414:187:1;16986:152:0;;;;;;;;;;-1:-1:-1;16986:152:0;;;;;:::i;:::-;;:::i;2520:108::-;;;;;;;;;;-1:-1:-1;2608:12:0;;2520:108;;;2121:25:1;;;2109:2;2094:18;2520:108:0;1975:177:1;10219:448:0;;;;;;;;;;-1:-1:-1;10219:448:0;;;;;:::i;:::-;;:::i;18563:196::-;;;;;;;;;;-1:-1:-1;18563:196:0;;;;;:::i;:::-;;:::i;2413:93::-;;;;;;;;;;-1:-1:-1;2413:93:0;;2496:2;4018:36:1;;4006:2;3991:18;2413:93:0;3876:184:1;10675:248:0;;;;;;;;;;-1:-1:-1;10675:248:0;;;;;:::i;:::-;;:::i;17950:177::-;;;;;;;;;;-1:-1:-1;17950:177:0;;;;;:::i;:::-;;:::i;17146:::-;;;;;;;;;;-1:-1:-1;17146:177:0;;;;;:::i;:::-;;:::i;8680:34::-;;;;;;;;;;-1:-1:-1;8680:34:0;;;;;;;;;;;18135:104;;;;;;;;;;-1:-1:-1;18135:104:0;;;;;:::i;:::-;;:::i;18767:169::-;;;;;;;;;;-1:-1:-1;18767:169:0;;;;;:::i;:::-;;:::i;8511:64::-;;;;;;;;;;;;;;;;2642:127;;;;;;;;;;-1:-1:-1;2642:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2743:18:0;2716:7;2743:18;;;;;;;;;;;;2642:127;6913:94;;;;;;;;;;;;;:::i;8887:32::-;;;;;;;;;;-1:-1:-1;8887:32:0;;;;;;;;;;;;;4424:25:1;;;4480:2;4465:18;;4458:34;;;;4397:18;8887:32:0;4250:248:1;18944:105:0;;;;;;;;;;-1:-1:-1;18944:105:0;;;;;:::i;:::-;;:::i;18247:108::-;;;;;;;;;;-1:-1:-1;18247:108:0;;;;;:::i;:::-;;:::i;10131:79::-;;;;;;;;;;;;10168:42;10131:79;;;;;-1:-1:-1;;;;;4667:32:1;;;4649:51;;4637:2;4622:18;10131:79:0;4503:203:1;19551:135:0;;;;;;;;;;-1:-1:-1;19551:135:0;;;;;:::i;:::-;;:::i;6690:87::-;;;;;;;;;;-1:-1:-1;6763:6:0;;-1:-1:-1;;;;;6763:6:0;6690:87;;2295:104;;;;;;;;;;;;;:::i;19431:112::-;;;;;;;;;;-1:-1:-1;19431:112:0;;;;;:::i;:::-;;:::i;10931:410::-;;;;;;;;;;-1:-1:-1;10931:410:0;;;;;:::i;:::-;;:::i;8363:19::-;;;;;;;;;;-1:-1:-1;8363:19:0;;;;-1:-1:-1;;;;;8363:19:0;;;11349:165;;;;;;;;;;-1:-1:-1;11349:165:0;;;;;:::i;:::-;;:::i;8721:31::-;;;;;;;;;;-1:-1:-1;8721:31:0;;;;;;;;;;;8971:41;;;;;;;;;;-1:-1:-1;8971:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17331:164;;;;;;;;;;-1:-1:-1;17331:164:0;;;;;:::i;:::-;;:::i;3013:201::-;;;;;;;;;;-1:-1:-1;3013:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3179:18:0;;;3147:7;3179:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3013:201;7015:192;;;;;;;;;;-1:-1:-1;7015:192:0;;;;;:::i;:::-;;:::i;17503:166::-;;;;;;;;;;-1:-1:-1;17503:166:0;;;;;:::i;:::-;;:::i;18363:192::-;;;;;;;;;;-1:-1:-1;18363:192:0;;;;;:::i;:::-;;:::i;8926:36::-;;;;;;;;;;-1:-1:-1;8926:36:0;;;;;;;;;8335:21;;;;;;;;;;-1:-1:-1;8335:21:0;;;;-1:-1:-1;;;;;8335:21:0;;;2181:100;2235:13;2268:5;2261:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2181:100;:::o;17676:266::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;;;;;;;;;17756:14:::1;::::0;;;::::1;;;17755:15;17747:54;;;::::0;-1:-1:-1;;;17747:54:0;;6528:2:1;17747:54:0::1;::::0;::::1;6510:21:1::0;6567:2;6547:18;;;6540:30;6606:28;6586:18;;;6579:56;6652:18;;17747:54:0::1;6326:350:1::0;17747:54:0::1;17812:14;:21:::0;;17844:4:::1;:15:::0;;-1:-1:-1;;;;;;17844:15:0::1;-1:-1:-1::0;;;;;17844:15:0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;17870:25:0;;;;;;;17922:12:::1;17906:13;:28:::0;17676:266::o;9886:161::-;9961:4;9978:39;344:10;10001:7;10010:6;9978:8;:39::i;:::-;-1:-1:-1;10035:4:0;9886:161;;;;;:::o;16986:152::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;17104:18:::1;:26:::0;;;::::1;;;;-1:-1:-1::0;;17104:26:0;;::::1;::::0;;;::::1;::::0;;16986:152::o;10219:448::-;10351:4;10368:36;10378:6;10386:9;10397:6;10368:9;:36::i;:::-;-1:-1:-1;;;;;10444:19:0;;10417:24;10444:19;;;:11;:19;;;;;;;;344:10;10444:33;;;;;;;;10496:26;;;;10488:79;;;;-1:-1:-1;;;10488:79:0;;6883:2:1;10488:79:0;;;6865:21:1;6922:2;6902:18;;;6895:30;6961:34;6941:18;;;6934:62;-1:-1:-1;;;7012:18:1;;;7005:38;7060:19;;10488:79:0;6681:404:1;10488:79:0;10578:57;10587:6;344:10;10609:25;10628:6;10609:16;:25;:::i;:::-;10578:8;:57::i;:::-;-1:-1:-1;10655:4:0;;10219:448;-1:-1:-1;;;;10219:448:0:o;18563:196::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;18654:9:::1;18649:103;18673:8;:15;18669:1;:19;18649:103;;;18735:5;18710:9;:22;18720:8;18729:1;18720:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18710:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18710:22:0;:30;;-1:-1:-1;;18710:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18690:3;::::1;::::0;::::1;:::i;:::-;;;;18649:103;;;;18563:196:::0;:::o;10675:248::-;344:10;10791:4;10845:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10845:34:0;;;;;;;;;;10791:4;;10813:80;;10836:7;;10845:47;;10882:10;;10845:47;:::i;17950:177::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;18032:14:::1;::::0;;;::::1;;;18031:15;18023:65;;;::::0;-1:-1:-1;;;18023:65:0;;7959:2:1;18023:65:0::1;::::0;::::1;7941:21:1::0;7998:2;7978:18;;;7971:30;8037:34;8017:18;;;8010:62;-1:-1:-1;;;8088:18:1;;;8081:35;8133:19;;18023:65:0::1;7757:401:1::0;18023:65:0::1;18099:8;:20:::0;17950:177::o;17146:::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;17301:14:::1;2496:2:::0;17301::::1;:14;:::i;:::-;17288:27;::::0;:10;:27:::1;:::i;:::-;17262:23;:53:::0;-1:-1:-1;17146:177:0:o;18135:104::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18205:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;18205:26:0::1;18227:4;18205:26;::::0;;18135:104::o;18767:169::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;18873:14:::1;2496:2:::0;18873::::1;:14;:::i;:::-;18861:26;::::0;:9;:26:::1;:::i;:::-;18844:14;:43:::0;18898:4:::1;::::0;18904:10:::1;::::0;18889:39:::1;::::0;-1:-1:-1;;;;;18898:4:0;;::::1;::::0;18904:10:::1;-1:-1:-1::0;;18889:8:0::1;:39::i;:::-;18767:169:::0;:::o;6913:94::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;6978:21:::1;6996:1;6978:9;:21::i;:::-;6913:94::o:0;18944:105::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;19019:10:::1;:22:::0;;-1:-1:-1;;;;;;19019:22:0::1;-1:-1:-1::0;;;;;19019:22:0;;;::::1;::::0;;;::::1;::::0;;18944:105::o;18247:108::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18320:19:0::1;18342:5;18320:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;18320:27:0::1;::::0;;18247:108::o;19551:135::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;19643:8:::1;-1:-1:-1::0;;;;;19636:25:0::1;;19662:7;6763:6:::0;;-1:-1:-1;;;;;6763:6:0;;6690:87;19662:7:::1;19636:42;::::0;-1:-1:-1;;;;;;19636:42:0::1;::::0;;;;;;-1:-1:-1;;;;;9911:32:1;;;19636:42:0::1;::::0;::::1;9893:51:1::0;9960:18;;;9953:34;;;9866:18;;19636:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19551:135:::0;;:::o;2295:104::-;2351:13;2384:7;2377:14;;;;;:::i;19431:112::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;6763:6;;19499:36:::1;::::0;-1:-1:-1;;;;;6763:6:0;;;;19499:36;::::1;;;::::0;19525:9;;19499:36:::1;::::0;;;19525:9;6763:6;19499:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;10931:410:::0;344:10;11052:4;11101:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11101:34:0;;;;;;;;;;11154:35;;;;11146:85;;;;-1:-1:-1;;;11146:85:0;;10450:2:1;11146:85:0;;;10432:21:1;10489:2;10469:18;;;10462:30;10528:34;10508:18;;;10501:62;-1:-1:-1;;;10579:18:1;;;10572:35;10624:19;;11146:85:0;10248:401:1;11146:85:0;11242:67;344:10;11265:7;11274:34;11293:15;11274:16;:34;:::i;11242:67::-;-1:-1:-1;11329:4:0;;10931:410;-1:-1:-1;;;10931:410:0:o;11349:165::-;11427:4;11444:40;11454:10;11466:9;11477:6;11444:9;:40::i;17331:164::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;17458:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;17450:5:::1;:37:::0;;;;;;17331:164::o;7015:192::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7104:22:0;::::1;7096:73;;;::::0;-1:-1:-1;;;7096:73:0;;10856:2:1;7096:73:0::1;::::0;::::1;10838:21:1::0;10895:2;10875:18;;;10868:30;10934:34;10914:18;;;10907:62;-1:-1:-1;;;10985:18:1;;;10978:36;11031:19;;7096:73:0::1;10654:402:1::0;7096:73:0::1;7180:19;7190:8;7180:9;:19::i;17503:166::-:0;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;17632:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;17620:9:::1;:41:::0;;;;;;17503:166::o;18363:192::-;6763:6;;-1:-1:-1;;;;;6763:6:0;344:10;6825:23;6817:68;;;;-1:-1:-1;;;6817:68:0;;;;;;;:::i;:::-;18451:9:::1;18446:102;18470:8;:15;18466:1;:19;18446:102;;;18532:4;18507:9;:22;18517:8;18526:1;18517:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18507:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18507:22:0;:29;;-1:-1:-1;;18507:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18487:3;::::1;::::0;::::1;:::i;:::-;;;;18446:102;;5584:380:::0;-1:-1:-1;;;;;5720:19:0;;5712:68;;;;-1:-1:-1;;;5712:68:0;;11263:2:1;5712:68:0;;;11245:21:1;11302:2;11282:18;;;11275:30;11341:34;11321:18;;;11314:62;-1:-1:-1;;;11392:18:1;;;11385:34;11436:19;;5712:68:0;11061:400:1;5712:68:0;-1:-1:-1;;;;;5799:21:0;;5791:68;;;;-1:-1:-1;;;5791:68:0;;11668:2:1;5791:68:0;;;11650:21:1;11707:2;11687:18;;;11680:30;11746:34;11726:18;;;11719:62;-1:-1:-1;;;11797:18:1;;;11790:32;11839:19;;5791:68:0;11466:398:1;5791:68:0;-1:-1:-1;;;;;5872:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5924:32;;2121:25:1;;;5924:32:0;;2094:18:1;5924:32:0;;;;;;;5584:380;;;:::o;11522:2876::-;11672:1;11663:6;:10;11655:64;;;;-1:-1:-1;;;11655:64:0;;12071:2:1;11655:64:0;;;12053:21:1;12110:2;12090:18;;;12083:30;12149:34;12129:18;;;12122:62;-1:-1:-1;;;12200:18:1;;;12193:39;12249:19;;11655:64:0;11869:405:1;11655:64:0;-1:-1:-1;;;;;11867:17:0;;;;;;:9;:17;;;;;;;;11866:18;:43;;;;-1:-1:-1;;;;;;11889:20:0;;;;;;:9;:20;;;;;;;;11888:21;11866:43;11862:122;;;11934:14;;;;;;;11926:46;;;;-1:-1:-1;;;11926:46:0;;12481:2:1;11926:46:0;;;12463:21:1;12520:2;12500:18;;;12493:30;-1:-1:-1;;;12539:18:1;;;12532:49;12598:18;;11926:46:0;12279:343:1;11926:46:0;12010:4;;-1:-1:-1;;;;;12000:14:0;;;12010:4;;12000:14;:39;;;;-1:-1:-1;;;;;;12019:20:0;;;;;;:9;:20;;;;;;;;12018:21;12000:39;:59;;;;-1:-1:-1;12044:15:0;;;;12043:16;12000:59;11996:215;;;12117:14;;12107:6;12084:20;12094:9;-1:-1:-1;;;;;2743:18:0;2716:7;2743:18;;;;;;;;;;;;2642:127;12084:20;:29;;;;:::i;:::-;:47;;12076:123;;;;-1:-1:-1;;;12076:123:0;;12829:2:1;12076:123:0;;;12811:21:1;;;12848:18;;;12841:30;12907:34;12887:18;;;12880:62;12959:18;;12076:123:0;12627:356:1;12076:123:0;12237:4;;-1:-1:-1;;;;;12227:14:0;;;12237:4;;12227:14;;;;:39;;-1:-1:-1;;;;;;12246:20:0;;;;;;:9;:20;;;;;;;;12245:21;12227:39;:61;;;;-1:-1:-1;;;;;;12271:17:0;;;;;;:9;:17;;;;;;;;12270:18;12227:61;:81;;;;-1:-1:-1;12293:15:0;;;;12292:16;12227:81;12223:315;;;12355:4;;-1:-1:-1;;;;;12342:17:0;;;12355:4;;12342:17;12338:189;;12421:14;;12411:6;12388:20;12398:9;-1:-1:-1;;;;;2743:18:0;2716:7;2743:18;;;;;;;;;;;;2642:127;12388:20;:29;;;;:::i;:::-;:47;;12380:131;;;;-1:-1:-1;;;12380:131:0;;12829:2:1;12380:131:0;;;12811:21:1;;;12848:18;;;12841:30;12907:34;12887:18;;;12880:62;12959:18;;12380:131:0;12627:356:1;12380:131:0;12550:15;12576:14;12601:11;12623:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;12623:25:0;-1:-1:-1;;;;;12682:17:0;;12661;12682;;;:9;:17;;;;;;;;12681:18;:56;;;;-1:-1:-1;;;;;;12717:20:0;;;;;;:9;:20;;;;;;;;12716:21;12681:56;:112;;;;;12785:8;;12769:13;;:24;;;;:::i;:::-;12754:12;:39;12681:112;12881:15;;12661:132;;-1:-1:-1;12881:15:0;;;:36;;-1:-1:-1;;;;;;12900:17:0;;;;;;:9;:17;;;;;;;;12881:36;:60;;;-1:-1:-1;;;;;;12921:20:0;;;;;;:9;:20;;;;;;;;12881:60;12877:655;;;12962:1;12956:7;;12877:655;;;13027:4;;-1:-1:-1;;;;;13014:17:0;;;13027:4;;13014:17;:34;;;;;13036:12;13035:13;13014:34;13010:522;;;13131:9;:19;13092;;:58;;13131:19;13092:58;:::i;:::-;13197:24;;;;;;;;;13212:9;13197:24;;;;;;;;;13065:85;;-1:-1:-1;13065:85:0;;-1:-1:-1;13197:24:0;-1:-1:-1;13010:522:0;;;13244:12;13239:293;;13335:5;:15;13300;;:50;;13335:15;13300:50;:::i;:::-;13397:20;;;;;;;;;13412:5;13397:20;;;;;;;;;13273:77;;-1:-1:-1;13273:77:0;;-1:-1:-1;13397:20:0;-1:-1:-1;13239:293:0;;;13439:12;13435:97;;;13478:9;;;-1:-1:-1;13478:9:0;;-1:-1:-1;13435:97:0;13570:3;13551:15;13560:6;13551;:15;:::i;:::-;13550:23;;;;:::i;:::-;13687:18;;13544:29;;-1:-1:-1;13687:18:0;;;;;:36;;;;-1:-1:-1;13719:4:0;;-1:-1:-1;;;;;13709:14:0;;;13719:4;;13709:14;;13687:36;:51;;;;-1:-1:-1;13727:11:0;;;;;;;13687:51;13683:90;;;13740:33;13751:7;13760:12;13740:10;:33::i;:::-;13815:48;13831:6;13839:9;13850:12;13859:3;13850:6;:12;:::i;:::-;13815:15;:48::i;:::-;13878:7;;13874:517;;13950:11;;13946:434;;13996:4;;-1:-1:-1;;;;;13986:14:0;;;13996:4;;13986:14;13982:383;;14025:17;14085:3;14066:14;:12;:14::i;:::-;14056:24;;:7;:24;:::i;:::-;14046:35;;:6;:35;:::i;:::-;14045:43;;;;:::i;:::-;14025:63;;14111:49;14127:6;14143:4;14150:9;14111:15;:49::i;:::-;14002:178;13982:383;;;14200:4;;-1:-1:-1;;;;;14200:4:0;;;14190:14;;;;14186:179;;14229:17;14270:3;14250:16;14259:7;14250:6;:16;:::i;:::-;14249:24;;;;:::i;:::-;14229:44;;14296:49;14312:6;14328:4;14335:9;14296:15;:49::i;:::-;14206:159;14186:179;11644:2754;;;;;11522:2876;;;:::o;7215:173::-;7290:6;;;-1:-1:-1;;;;;7307:17:0;;;-1:-1:-1;;;;;;7307:17:0;;;;;;;7340:40;;7290:6;;;7307:17;7290:6;;7340:40;;7271:16;;7340:40;7260:128;7215:173;:::o;14406:1413::-;9183:15;;;;9178:125;;9215:15;:22;;-1:-1:-1;;9215:22:0;9233:4;9215:22;;;14493:49;;14524:7:::1;14493:49;14596:4;14552:23;2743:18:::0;;;;;;;;;;;14636:23:::1;::::0;14617:42;::::1;14613:1199;;14706:1;14680:23;;:27;14676:109;;;-1:-1:-1::0;14746:23:0::1;::::0;14676:109:::1;14856:19;14878:11;:7:::0;14888:1:::1;14878:11;:::i;:::-;14856:33;;14904:32;14998:11;14958:9;:19;;;14940:15;:37;;;;:::i;:::-;14939:70;;;;:::i;:::-;14904:105:::0;-1:-1:-1;15024:14:0::1;15041:42;14904:105:::0;15041:15;:42:::1;:::i;:::-;15024:59:::0;-1:-1:-1;15125:21:0::1;15163:24;15024:59:::0;15163:16:::1;:24::i;:::-;15204:20;15227:38;15251:14:::0;15227:21:::1;:38;:::i;:::-;15204:61;;15280:19;15332:9;:19;;;15318:11;:33;;;;:::i;:::-;15302:50;::::0;:12;:50:::1;:::i;:::-;15280:72;;15367:29;15413:9;:19;;;15399:11;:33;;;;:::i;:::-;15367:65:::0;-1:-1:-1;15453:25:0;;15449:161:::1;;15533:61;15546:24;15572:21;15533:12;:61::i;:::-;15667:19:::0;;15626:20:::1;::::0;15649:15:::1;:11:::0;15663:1:::1;15649:15;:::i;:::-;:37;;;;:::i;:::-;15626:60:::0;-1:-1:-1;15705:16:0;;15701:100:::1;;15750:10;::::0;15742:43:::1;::::0;-1:-1:-1;;;;;15750:10:0::1;15772:12:::0;15742:29:::1;:43::i;:::-;14661:1151;;;;;;;;14613:1199;14485:1334;9252:1;9268:15:::0;:23;;-1:-1:-1;;9268:23:0;;;14406:1413;;:::o;4565:638::-;-1:-1:-1;;;;;4705:20:0;;4697:70;;;;-1:-1:-1;;;4697:70:0;;13412:2:1;4697:70:0;;;13394:21:1;13451:2;13431:18;;;13424:30;13490:34;13470:18;;;13463:62;-1:-1:-1;;;13541:18:1;;;13534:35;13586:19;;4697:70:0;13210:401:1;4697:70:0;-1:-1:-1;;;;;4786:23:0;;4778:71;;;;-1:-1:-1;;;4778:71:0;;13818:2:1;4778:71:0;;;13800:21:1;13857:2;13837:18;;;13830:30;13896:34;13876:18;;;13869:62;-1:-1:-1;;;13947:18:1;;;13940:33;13990:19;;4778:71:0;13616:399:1;4778:71:0;-1:-1:-1;;;;;4946:17:0;;4922:21;4946:17;;;;;;;;;;;4982:23;;;;4974:74;;;;-1:-1:-1;;;4974:74:0;;14222:2:1;4974:74:0;;;14204:21:1;14261:2;14241:18;;;14234:30;14300:34;14280:18;;;14273:62;-1:-1:-1;;;14351:18:1;;;14344:36;14397:19;;4974:74:0;14020:402:1;4974:74:0;5079:22;5095:6;5079:13;:22;:::i;:::-;-1:-1:-1;;;;;5059:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5112:20;;;;;;;;:30;;5136:6;;5059:9;5112:30;;5136:6;;5112:30;:::i;:::-;;;;;;;;5177:9;-1:-1:-1;;;;;5160:35:0;5169:6;-1:-1:-1;;;;;5160:35:0;;5188:6;5160:35;;;;2121:25:1;;2109:2;2094:18;;1975:177;5160:35:0;;;;;;;;4686:517;4565:638;;;:::o;15827:109::-;15873:7;15900:28;15924:4;15900:21;:28;:::i;:::-;15893:35;;15827:109;:::o;15944:526::-;16086:16;;;16100:1;16086:16;;;;;;;;16062:21;;16086:16;;;;;;;;;;-1:-1:-1;16086:16:0;16062:40;;16131:4;16113;16118:1;16113:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16113:23:0;;;:7;;;;;;;;;;:23;;;;16157:6;;:13;;;-1:-1:-1;;;16157:13:0;;;;:6;;;;;:11;;:13;;;;;16113:7;;16157:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16147:4;16152:1;16147:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16147:23:0;;;:7;;;;;;;;;:23;16215:6;;16183:53;;16200:4;;16215:6;16224:11;16183:8;:53::i;:::-;16275:6;;:187;;-1:-1:-1;;;16275:187:0;;-1:-1:-1;;;;;16275:6:0;;;;:57;;:187;;16347:11;;16275:6;;16389:4;;16416;;16436:15;;16275:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15999:471;15944:526;:::o;16478:500::-;16658:6;;16626:53;;16643:4;;-1:-1:-1;;;;;16658:6:0;16667:11;16626:8;:53::i;:::-;16722:6;;:248;;-1:-1:-1;;;16722:248:0;;16787:4;16722:248;;;16009:34:1;16059:18;;;16052:34;;;16722:6:0;16102:18:1;;;16095:34;;;16145:18;;;16138:34;10168:42:0;16188:19:1;;;16181:44;16944:15:0;16241:19:1;;;16234:35;-1:-1:-1;;;;;16722:6:0;;;;:22;;16753:9;;15943:19:1;;16722:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16478:500;;:::o;6133:319::-;6248:6;6223:21;:31;;6215:73;;;;-1:-1:-1;;;6215:73:0;;16793:2:1;6215:73:0;;;16775:21:1;16832:2;16812:18;;;16805:30;16871:31;16851:18;;;16844:59;16920:18;;6215:73:0;16591:353:1;6215:73:0;6302:12;6320:9;-1:-1:-1;;;;;6320:14:0;6343:6;6320:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6301:54;;;6374:7;6366:78;;;;-1:-1:-1;;;6366:78:0;;17361:2:1;6366:78:0;;;17343:21:1;17400:2;17380:18;;;17373:30;17439:34;17419:18;;;17412:62;17510:28;17490:18;;;17483:56;17556:19;;6366:78:0;17159: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:247::-;901:6;954:2;942:9;933:7;929:23;925:32;922:52;;;970:1;967;960:12;922:52;1009:9;996:23;1028:31;1053:5;1028:31;:::i;:::-;1078:5;842:247;-1:-1:-1;;;842:247:1:o;1094:315::-;1162:6;1170;1223:2;1211:9;1202:7;1198:23;1194:32;1191:52;;;1239:1;1236;1229:12;1191:52;1278:9;1265:23;1297:31;1322:5;1297:31;:::i;:::-;1347:5;1399:2;1384:18;;;;1371:32;;-1:-1:-1;;;1094:315:1:o;1606:118::-;1692:5;1685:13;1678:21;1671:5;1668:32;1658:60;;1714:1;1711;1704:12;1729:241;1785:6;1838:2;1826:9;1817:7;1813:23;1809:32;1806:52;;;1854:1;1851;1844:12;1806:52;1893:9;1880:23;1912:28;1934:5;1912:28;:::i;2157:456::-;2234:6;2242;2250;2303:2;2291:9;2282:7;2278:23;2274:32;2271:52;;;2319:1;2316;2309:12;2271:52;2358:9;2345:23;2377:31;2402:5;2377:31;:::i;:::-;2427:5;-1:-1:-1;2484:2:1;2469:18;;2456:32;2497:33;2456:32;2497:33;:::i;:::-;2157:456;;2549:7;;-1:-1:-1;;;2603:2:1;2588:18;;;;2575:32;;2157:456::o;2618:127::-;2679:10;2674:3;2670:20;2667:1;2660:31;2710:4;2707:1;2700:15;2734:4;2731:1;2724:15;2750:1121;2834:6;2865:2;2908;2896:9;2887:7;2883:23;2879:32;2876:52;;;2924:1;2921;2914:12;2876:52;2964:9;2951:23;2993:18;3034:2;3026:6;3023:14;3020:34;;;3050:1;3047;3040:12;3020:34;3088:6;3077:9;3073:22;3063:32;;3133:7;3126:4;3122:2;3118:13;3114:27;3104:55;;3155:1;3152;3145:12;3104:55;3191:2;3178:16;3213:2;3209;3206:10;3203:36;;;3219:18;;:::i;:::-;3265:2;3262:1;3258:10;3297:2;3291:9;3360:2;3356:7;3351:2;3347;3343:11;3339:25;3331:6;3327:38;3415:6;3403:10;3400:22;3395:2;3383:10;3380:18;3377:46;3374:72;;;3426:18;;:::i;:::-;3462:2;3455:22;3512:18;;;3546:15;;;;-1:-1:-1;3588:11:1;;;3584:20;;;3616:19;;;3613:39;;;3648:1;3645;3638:12;3613:39;3672:11;;;;3692:148;3708:6;3703:3;3700:15;3692:148;;;3774:23;3793:3;3774:23;:::i;:::-;3762:36;;3725:12;;;;3818;;;;3692:148;;;3859:6;2750:1121;-1:-1:-1;;;;;;;;2750:1121:1:o;4065:180::-;4124:6;4177:2;4165:9;4156:7;4152:23;4148:32;4145:52;;;4193:1;4190;4183:12;4145:52;-1:-1:-1;4216:23:1;;4065:180;-1:-1:-1;4065:180:1:o;4711:248::-;4779:6;4787;4840:2;4828:9;4819:7;4815:23;4811:32;4808:52;;;4856:1;4853;4846:12;4808:52;-1:-1:-1;;4879:23:1;;;4949:2;4934:18;;;4921:32;;-1:-1:-1;4711:248:1:o;4964:388::-;5032:6;5040;5093:2;5081:9;5072:7;5068:23;5064:32;5061:52;;;5109:1;5106;5099:12;5061:52;5148:9;5135:23;5167:31;5192:5;5167:31;:::i;:::-;5217:5;-1:-1:-1;5274:2:1;5259:18;;5246:32;5287:33;5246:32;5287:33;:::i;:::-;5339:7;5329:17;;;4964:388;;;;;:::o;5580:380::-;5659:1;5655:12;;;;5702;;;5723:61;;5777:4;5769:6;5765:17;5755:27;;5723:61;5830:2;5822:6;5819:14;5799:18;5796:38;5793:161;;5876:10;5871:3;5867:20;5864:1;5857:31;5911:4;5908:1;5901:15;5939:4;5936:1;5929:15;5793:161;;5580:380;;;:::o;5965:356::-;6167:2;6149:21;;;6186:18;;;6179:30;6245:34;6240:2;6225:18;;6218:62;6312:2;6297:18;;5965:356::o;7090:127::-;7151:10;7146:3;7142:20;7139:1;7132:31;7182:4;7179:1;7172:15;7206:4;7203:1;7196:15;7222:128;7289:9;;;7310:11;;;7307:37;;;7324:18;;:::i;7355:127::-;7416:10;7411:3;7407:20;7404:1;7397:31;7447:4;7444:1;7437:15;7471:4;7468:1;7461:15;7487:135;7526:3;7547:17;;;7544:43;;7567:18;;:::i;:::-;-1:-1:-1;7614:1:1;7603:13;;7487:135::o;7627:125::-;7692:9;;;7713:10;;;7710:36;;;7726:18;;:::i;8163:422::-;8252:1;8295:5;8252:1;8309:270;8330:7;8320:8;8317:21;8309:270;;;8389:4;8385:1;8381:6;8377:17;8371:4;8368:27;8365:53;;;8398:18;;:::i;:::-;8448:7;8438:8;8434:22;8431:55;;;8468:16;;;;8431:55;8547:22;;;;8507:15;;;;8309:270;;;8313:3;8163:422;;;;;:::o;8590:806::-;8639:5;8669:8;8659:80;;-1:-1:-1;8710:1:1;8724:5;;8659:80;8758:4;8748:76;;-1:-1:-1;8795:1:1;8809:5;;8748:76;8840:4;8858:1;8853:59;;;;8926:1;8921:130;;;;8833:218;;8853:59;8883:1;8874:10;;8897:5;;;8921:130;8958:3;8948:8;8945:17;8942:43;;;8965:18;;:::i;:::-;-1:-1:-1;;9021:1:1;9007:16;;9036:5;;8833:218;;9135:2;9125:8;9122:16;9116:3;9110:4;9107:13;9103:36;9097:2;9087:8;9084:16;9079:2;9073:4;9070:12;9066:35;9063:77;9060:159;;;-1:-1:-1;9172:19:1;;;9204:5;;9060:159;9251:34;9276:8;9270:4;9251:34;:::i;:::-;9321:6;9317:1;9313:6;9309:19;9300:7;9297:32;9294:58;;;9332:18;;:::i;:::-;9370:20;;8590:806;-1:-1:-1;;;8590:806:1:o;9401:140::-;9459:5;9488:47;9529:4;9519:8;9515:19;9509:4;9488:47;:::i;9546:168::-;9619:9;;;9650;;9667:15;;;9661:22;;9647:37;9637:71;;9688:18;;:::i;9998:245::-;10065:6;10118:2;10106:9;10097:7;10093:23;10089:32;10086:52;;;10134:1;10131;10124:12;10086:52;10166:9;10160:16;10185:28;10207:5;10185:28;:::i;12988:217::-;13028:1;13054;13044:132;;13098:10;13093:3;13089:20;13086:1;13079:31;13133:4;13130:1;13123:15;13161:4;13158:1;13151:15;13044:132;-1:-1:-1;13190:9:1;;12988:217::o;14427:251::-;14497:6;14550:2;14538:9;14529:7;14525:23;14521:32;14518:52;;;14566:1;14563;14556:12;14518:52;14598:9;14592:16;14617:31;14642:5;14617:31;:::i;14683:980::-;14945:4;14993:3;14982:9;14978:19;15024:6;15013:9;15006:25;15050:2;15088:6;15083:2;15072:9;15068:18;15061:34;15131:3;15126:2;15115:9;15111:18;15104:31;15155:6;15190;15184:13;15221:6;15213;15206:22;15259:3;15248:9;15244:19;15237:26;;15298:2;15290:6;15286:15;15272:29;;15319:1;15329:195;15343:6;15340:1;15337:13;15329:195;;;15408:13;;-1:-1:-1;;;;;15404:39:1;15392:52;;15499:15;;;;15464:12;;;;15440:1;15358:9;15329:195;;;-1:-1:-1;;;;;;;15580:32:1;;;;15575:2;15560:18;;15553:60;-1:-1:-1;;;15644:3:1;15629:19;15622:35;15541:3;14683:980;-1:-1:-1;;;14683:980:1:o;16280:306::-;16368:6;16376;16384;16437:2;16425:9;16416:7;16412:23;16408:32;16405:52;;;16453:1;16450;16443:12;16405:52;16482:9;16476:16;16466:26;;16532:2;16521:9;16517:18;16511:25;16501:35;;16576:2;16565:9;16561:18;16555:25;16545:35;;16280:306;;;;;:::o
Swarm Source
ipfs://d1036b9b2cbce6e1016bcdc367b851b2c762e022fd6884bdc088c5f033cd49e5
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.