ERC-20
Overview
Max Total Supply
1,000,000,000 AMO
Holders
72
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
13,451.85671959275407089 AMOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Amaterasu
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-30 */ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.7; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface ERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(address(msg.sender)); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock the token contract"); require(block.timestamp > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface InterfaceLP { function sync() external; } contract Amaterasu is ERC20, Ownable { using SafeMath for uint256; uint256 private protection = 4; uint256 public launchBlock; uint256 private protectionBlock; mapping (address => bool) public isBlacklisted; address private WETH; address private DEAD = 0x000000000000000000000000000000000000dEaD; address private ZERO = 0x0000000000000000000000000000000000000000; string constant private _name = "Amaterasu Omikami"; string constant private _symbol = "AMO"; uint8 constant private _decimals = 18; uint256 private _totalSupply = 1000000000* 10**_decimals; uint256 public _maxTxAmount = _totalSupply / 50; uint256 public _maxWalletAmount = _totalSupply / 50; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; address[] public _markerPairs; mapping (address => bool) public automatedMarketMakerPairs; mapping (address => bool) public isFeeExempt; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public isMaxWalletExempt; //Fees uint256 private constant liquidityFee = 0; uint256 private constant marketingFee = 2; uint256 private constant devFee = 1; uint256 private constant sellFeeLiquidity = 0; uint256 private constant sellFeeMarketing = 2; uint256 private constant sellFeeDev = 1; uint256 private constant transferFee = 0; uint256 private totalBuyFee = 3; uint256 private totalSellFee = 3; uint256 private feeDenominator = 100; address private autoLiquidityReceiver = 0x12CBF1FdD94eE7084C52c34dc7c1BFf4F0f493Fa; address private marketingFeeReceiver = 0xFCB971d02246fE451C9671041AE40ABf06c36516; address private devFeeReceiver = 0xa15ba3a189c4f8B9438c8667c2BDEb06D7bda09D ; string public _aMessage = "The deity of sun left us a message years ago.."; IDEXRouter public router; address public pair; bool public tradingEnabled = false; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 1 / 5000; bool private inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); setAutomatedMarketMakerPair(pair, true); _allowances[address(this)][address(router)] = type(uint256).max; isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isMaxWalletExempt[msg.sender] = true; isFeeExempt[address(this)] = true; isTxLimitExempt[address(this)] = true; isMaxWalletExempt[address(this)] = true; isMaxWalletExempt[pair] = true; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner(); } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted"); if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(!isFeeExempt[sender] && !isFeeExempt[recipient]){ require(tradingEnabled,"Trading not open yet"); } if(shouldSwapBack()){ swapBack(); } uint256 amountReceived = amount; if(automatedMarketMakerPairs[sender]) { //buy if(!isFeeExempt[recipient]) { require(_balances[recipient].add(amount) <= _maxWalletAmount || isMaxWalletExempt[recipient], "Max Wallet Limit Limit Exceeded"); require(amount <= _maxTxAmount || isTxLimitExempt[recipient], "TX Limit Exceeded"); amountReceived = takeBuyFee(sender, amount); } } else if(automatedMarketMakerPairs[recipient]) { //sell if(!isFeeExempt[sender]) { require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); amountReceived = takeSellFee(sender, amount); } } else { if (!isFeeExempt[sender]) { require(_balances[recipient].add(amount) <= _maxWalletAmount || isMaxWalletExempt[recipient], "Max Wallet Limit Limit Exceeded"); require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); amountReceived = takeTransferFee(sender, amount); } } _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } // Fees function takeBuyFee(address sender, uint256 amount) internal returns (uint256){ uint256 _realFee = totalBuyFee; if (block.number < protectionBlock) { _realFee = 99; } uint256 feeAmount = amount.mul(_realFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function takeSellFee(address sender, uint256 amount) internal returns (uint256){ uint256 feeAmount = amount.mul(totalSellFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function takeTransferFee(address sender, uint256 amount) internal returns (uint256){ uint256 feeAmount = amount.mul(transferFee).div(feeDenominator); if (feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return !automatedMarketMakerPairs[msg.sender] && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function rescueETH() external { require (msg.sender == devFeeReceiver, "Only Dev Receiver"); payable(msg.sender).transfer(address(this).balance); } // switch Trading function enableTrading() external onlyOwner { tradingEnabled = true; launchBlock = block.number; protectionBlock = block.number.add(protection); } function swapBack() internal swapping { uint256 swapLiquidityFee = liquidityFee.add(sellFeeLiquidity); uint256 realTotalFee =totalBuyFee.add(totalSellFee); uint256 contractTokenBalance = _balances[address(this)]; uint256 amountToLiquify = contractTokenBalance.mul(swapLiquidityFee).div(realTotalFee).div(2); uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify); uint256 balanceBefore = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = realTotalFee.sub(swapLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(liquidityFee.add(sellFeeLiquidity)).div(totalETHFee).div(2); uint256 amountETHMarketing = amountETH.mul(marketingFee.add(sellFeeMarketing)).div(totalETHFee); uint256 amountETHDev = amountETH.sub(amountETHLiquidity).sub(amountETHMarketing); (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}(""); (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHDev}(""); tmpSuccess = false; if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); } } // Admin Functions function setTxSizeLimit(uint256 amount) external onlyOwner { require(amount > _totalSupply.div(10000), "Can't restrict trading"); _maxTxAmount = amount; } function setWalletSizeLimit(uint256 amount) external onlyOwner { require(amount > _totalSupply.div(10000), "Can't restrict trading"); _maxWalletAmount = amount; } function manageFeeExemptStatus(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function setAutomatedMarketMakerPair(address _pair, bool _value) public onlyOwner { require(automatedMarketMakerPairs[_pair] != _value, "Value already set"); automatedMarketMakerPairs[_pair] = _value; if(_value){ _markerPairs.push(_pair); }else{ require(_markerPairs.length > 1, "Required 1 pair"); for (uint256 i = 0; i < _markerPairs.length; i++) { if (_markerPairs[i] == _pair) { _markerPairs[i] = _markerPairs[_markerPairs.length - 1]; _markerPairs.pop(); break; } } } } function manualSwapback() external onlyOwner{ swapBack(); } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function sendMessageToCommunity(string calldata _message) external { require (msg.sender == marketingFeeReceiver || msg.sender == devFeeReceiver, "Can't send messages"); _aMessage = _message; } function setBL(address _address, bool _bool) external onlyOwner { isBlacklisted[_address] = _bool; } function justAnUpdate (uint256 _number) external onlyOwner { require(_number < 15, "Can't go that high"); protection = _number; } }
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":[],"name":"_aMessage","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_markerPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxWalletExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_number","type":"uint256"}],"name":"justAnUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"manageFeeExemptStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_message","type":"string"}],"name":"sendMessageToCommunity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setBL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxSizeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setWalletSizeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526004600355600880546001600160a01b031990811661dead17909155600980549091169055620000376012600a62000860565b6200004790633b9aca0062000921565b600a556032600a546200005b9190620007f4565b600b556032600a546200006f9190620007f4565b600c55600360148190556015556064601655601780546001600160a01b03199081167312cbf1fdd94ee7084c52c34dc7c1bff4f0f493fa1790915560188054821673fcb971d02246fe451c9671041ae40abf06c365161790556019805490911673a15ba3a189c4f8b9438c8667c2bdeb06d7bda09d1790556040805160608101909152602e80825262002ece602083013980516200011691601a916020909101906200071c565b50601c805461ffff60a01b1916600160a81b179055600a54611388906200013f90600162000921565b6200014b9190620007f4565b601d553480156200015b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b158015620001fd57600080fd5b505afa15801562000212573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002389190620007c2565b600780546001600160a01b0319166001600160a01b03928316179055601b546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cd9190620007c2565b6007546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200031a57600080fd5b505af11580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003559190620007c2565b601c80546001600160a01b0319166001600160a01b039290921691821790556200038190600162000471565b306000818152600e60209081526040808320601b546001600160a01b03908116855290835281842060001990553380855260118085528386208054600160ff199182168117909255601280885286892080548316841790556013808952878a208054841685179055998952928752858820805482168317905591865284872080548316821790559685528386208054821688179055601c54909216855282852080549092169095179055600a54848452600d835281842081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620009fa565b6000546001600160a01b03163314620004d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03821660009081526010602052604090205460ff1615158115151415620005365760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401620004c8565b6001600160a01b0382166000908152601060205260409020805460ff19168215801591909117909155620005b557600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0384166001600160a01b03199091161790555050565b600f54600110620005fb5760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b6044820152606401620004c8565b60005b600f548110156200071757826001600160a01b0316600f8281548110620006295762000629620009e4565b6000918252602090912001546001600160a01b031614156200070257600f8054620006579060019062000943565b815481106200066a576200066a620009e4565b600091825260209091200154600f80546001600160a01b039092169183908110620006995762000699620009e4565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600f805480620006db57620006db620009ce565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b806200070e816200099a565b915050620005fe565b505050565b8280546200072a906200095d565b90600052602060002090601f0160209004810192826200074e576000855562000799565b82601f106200076957805160ff191683800117855562000799565b8280016001018555821562000799579182015b82811115620007995782518255916020019190600101906200077c565b50620007a7929150620007ab565b5090565b5b80821115620007a75760008155600101620007ac565b600060208284031215620007d557600080fd5b81516001600160a01b0381168114620007ed57600080fd5b9392505050565b6000826200081257634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620008585781600019048211156200083c576200083c620009b8565b808516156200084a57918102915b93841c93908002906200081c565b509250929050565b6000620007ed60ff8416836000826200087c575060016200091b565b816200088b575060006200091b565b8160018114620008a45760028114620008af57620008cf565b60019150506200091b565b60ff841115620008c357620008c3620009b8565b50506001821b6200091b565b5060208310610133831016604e8410600b8410161715620008f4575081810a6200091b565b62000900838362000817565b8060001904821115620009175762000917620009b8565b0290505b92915050565b60008160001904831182151516156200093e576200093e620009b8565b500290565b600082821015620009585762000958620009b8565b500390565b600181811c908216806200097257607f821691505b602082108114156200099457634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415620009b157620009b1620009b8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6124c48062000a0a6000396000f3fe6080604052600436106102605760003560e01c806383df6b0411610144578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610739578063e1d5584c1461077f578063f218dcdb1461079f578063f2fde38b146107bf578063f887ea40146107df578063fe575a87146107ff57600080fd5b8063a9059cbb1461069e578063b62496f5146106be578063b6c52324146106ee578063d00efb2f14610703578063dd4670641461071957600080fd5b80638df6f1eb116101085780638df6f1eb146105dd57806395d89b41146105fd5780639a7a23d614610629578063a69df4b514610649578063a86f4e931461065e578063a8aa1b311461067e57600080fd5b806383df6b0414610533578063893d20e8146105485780638a8c523c1461057a5780638b42507f1461058f5780638da5cb5b146105bf57600080fd5b80633f4218e0116101dd5780635c2a1a2d116101a15780635c2a1a2d1461047b5780636c0a24eb1461049b5780636ddd1713146104b157806370a08231146104d2578063715018a6146105085780637d1db4a51461051d57600080fd5b80633f4218e0146103d557806345434032146104055780634ada218b14610425578063571ac8b0146104465780635b895c291461046657600080fd5b806320800a001161022457806320800a001461034d57806323b872dd146103645780632b112e4914610384578063313ce567146103995780633ef5343c146103b557600080fd5b80630445b6671461026c57806306fdde0314610295578063095ea7b3146102d85780630bd11f8a1461030857806318160ddd1461033857600080fd5b3661026757005b600080fd5b34801561027857600080fd5b50610282601d5481565b6040519081526020015b60405180910390f35b3480156102a157600080fd5b50604080518082019091526011815270416d61746572617375204f6d696b616d6960781b60208201525b60405161028c9190612220565b3480156102e457600080fd5b506102f86102f336600461213d565b61082f565b604051901515815260200161028c565b34801561031457600080fd5b506102f8610323366004612077565b60136020526000908152604090205460ff1681565b34801561034457600080fd5b50600a54610282565b34801561035957600080fd5b5061036261089c565b005b34801561037057600080fd5b506102f861037f3660046120c5565b61091e565b34801561039057600080fd5b506102826109e0565b3480156103a557600080fd5b506040516012815260200161028c565b3480156103c157600080fd5b506103626103d03660046121d9565b610a32565b3480156103e157600080fd5b506102f86103f0366004612077565b60116020526000908152604090205460ff1681565b34801561041157600080fd5b50610362610420366004612101565b610aa6565b34801561043157600080fd5b50601c546102f890600160a01b900460ff1681565b34801561045257600080fd5b506102f8610461366004612077565b610afb565b34801561047257600080fd5b50610362610b09565b34801561048757600080fd5b50610362610496366004612167565b610b3d565b3480156104a757600080fd5b50610282600c5481565b3480156104bd57600080fd5b50601c546102f890600160a81b900460ff1681565b3480156104de57600080fd5b506102826104ed366004612077565b6001600160a01b03166000908152600d602052604090205490565b34801561051457600080fd5b50610362610bb3565b34801561052957600080fd5b50610282600b5481565b34801561053f57600080fd5b506102cb610c15565b34801561055457600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b34801561058657600080fd5b50610362610ca3565b34801561059b57600080fd5b506102f86105aa366004612077565b60126020526000908152604090205460ff1681565b3480156105cb57600080fd5b506000546001600160a01b0316610562565b3480156105e957600080fd5b506103626105f83660046121d9565b610cf8565b34801561060957600080fd5b50604080518082019091526003815262414d4f60e81b60208201526102cb565b34801561063557600080fd5b50610362610644366004612101565b610d7d565b34801561065557600080fd5b50610362610fd5565b34801561066a57600080fd5b506103626106793660046121d9565b6110ee565b34801561068a57600080fd5b50601c54610562906001600160a01b031681565b3480156106aa57600080fd5b506102f86106b936600461213d565b611173565b3480156106ca57600080fd5b506102f86106d9366004612077565b60106020526000908152604090205460ff1681565b3480156106fa57600080fd5b50600254610282565b34801561070f57600080fd5b5061028260045481565b34801561072557600080fd5b506103626107343660046121d9565b611180565b34801561074557600080fd5b50610282610754366004612092565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b34801561078b57600080fd5b5061056261079a3660046121d9565b611205565b3480156107ab57600080fd5b506103626107ba366004612101565b61122f565b3480156107cb57600080fd5b506103626107da366004612077565b611284565b3480156107eb57600080fd5b50601b54610562906001600160a01b031681565b34801561080b57600080fd5b506102f861081a366004612077565b60066020526000908152604090205460ff1681565b336000818152600e602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061088a9086815260200190565b60405180910390a35060015b92915050565b6019546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152601160248201527027b7363c902232bb102932b1b2b4bb32b960791b60448201526064015b60405180910390fd5b60405133904780156108fc02916000818181858888f1935050505015801561091b573d6000803e3d6000fd5b50565b6001600160a01b0383166000908152600e60209081526040808320338452909152812054600019146109cb576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600e825283812033825290915291909120546109a691849061135c565b6001600160a01b0385166000908152600e602090815260408083203384529091529020555b6109d6848484611396565b90505b9392505050565b6009546001600160a01b03166000908152600d6020526040812054610a2d906008546001600160a01b03166000908152600d6020526040902054610a2790600a549061184c565b9061184c565b905090565b6000546001600160a01b03163314610a5c5760405162461bcd60e51b81526004016108e6906122a0565b600f8110610aa15760405162461bcd60e51b8152602060048201526012602482015271086c2dc4ee840cede40e8d0c2e840d0d2ced60731b60448201526064016108e6565b600355565b6000546001600160a01b03163314610ad05760405162461bcd60e51b81526004016108e6906122a0565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60006108968260001961082f565b6000546001600160a01b03163314610b335760405162461bcd60e51b81526004016108e6906122a0565b610b3b61188e565b565b6018546001600160a01b0316331480610b6057506019546001600160a01b031633145b610ba25760405162461bcd60e51b815260206004820152601360248201527243616e27742073656e64206d6573736167657360681b60448201526064016108e6565b610bae601a8383611fc2565b505050565b6000546001600160a01b03163314610bdd5760405162461bcd60e51b81526004016108e6906122a0565b600080546040516001600160a01b039091169060008051602061244f833981519152908390a3600080546001600160a01b0319169055565b601a8054610c22906123b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4e906123b6565b8015610c9b5780601f10610c7057610100808354040283529160200191610c9b565b820191906000526020600020905b815481529060010190602001808311610c7e57829003601f168201915b505050505081565b6000546001600160a01b03163314610ccd5760405162461bcd60e51b81526004016108e6906122a0565b601c805460ff60a01b1916600160a01b179055436004819055600354610cf39190611bd4565b600555565b6000546001600160a01b03163314610d225760405162461bcd60e51b81526004016108e6906122a0565b600a54610d3190612710611c33565b8111610d785760405162461bcd60e51b815260206004820152601660248201527543616e27742072657374726963742074726164696e6760501b60448201526064016108e6565b600c55565b6000546001600160a01b03163314610da75760405162461bcd60e51b81526004016108e6906122a0565b6001600160a01b03821660009081526010602052604090205460ff1615158115151415610e0a5760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b60448201526064016108e6565b6001600160a01b0382166000908152601060205260409020805460ff19168215801591909117909155610e8857600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0384166001600160a01b03199091161790555050565b600f54600110610ecc5760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b60448201526064016108e6565b60005b600f54811015610bae57826001600160a01b0316600f8281548110610ef657610ef6612438565b6000918252602090912001546001600160a01b03161415610fc357600f8054610f219060019061239f565b81548110610f3157610f31612438565b600091825260209091200154600f80546001600160a01b039092169183908110610f5d57610f5d612438565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600f805480610f9c57610f9c612422565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b80610fcd816123f1565b915050610ecf565b6001546001600160a01b0316331461104e5760405162461bcd60e51b815260206004820152603660248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152751bd8dac81d1a19481d1bdad95b8818dbdb9d1c9858dd60521b60648201526084016108e6565b600254421161109f5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016108e6565b600154600080546040516001600160a01b03938416939091169160008051602061244f83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b031633146111185760405162461bcd60e51b81526004016108e6906122a0565b600a5461112790612710611c33565b811161116e5760405162461bcd60e51b815260206004820152601660248201527543616e27742072657374726963742074726164696e6760501b60448201526064016108e6565b600b55565b60006109d9338484611396565b6000546001600160a01b031633146111aa5760405162461bcd60e51b81526004016108e6906122a0565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556111d98142612346565b600255600080546040516001600160a01b039091169060008051602061244f833981519152908390a350565b600f818154811061121557600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146112595760405162461bcd60e51b81526004016108e6906122a0565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112ae5760405162461bcd60e51b81526004016108e6906122a0565b6001600160a01b0381166113135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e6565b600080546040516001600160a01b038085169392169160008051602061244f83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081848411156113805760405162461bcd60e51b81526004016108e69190612220565b50600061138d848661239f565b95945050505050565b6001600160a01b03831660009081526006602052604081205460ff161580156113d857506001600160a01b03831660009081526006602052604090205460ff16155b6114125760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b60448201526064016108e6565b601e5460ff161561142f57611428848484611c75565b90506109d9565b6001600160a01b03841660009081526011602052604090205460ff1615801561147157506001600160a01b03831660009081526011602052604090205460ff16155b156114c657601c54600160a01b900460ff166114c65760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108e6565b6114ce611d49565b156114db576114db61188e565b6001600160a01b038416600090815260106020526040902054829060ff161561160c576001600160a01b03841660009081526011602052604090205460ff1661160757600c546001600160a01b0385166000908152600d60205260409020546115449085611bd4565b11158061156957506001600160a01b03841660009081526013602052604090205460ff165b6115b55760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016108e6565b600b54831115806115de57506001600160a01b03841660009081526012602052604090205460ff165b6115fa5760405162461bcd60e51b81526004016108e690612275565b6116048584611da1565b90505b6117a5565b6001600160a01b03841660009081526010602052604090205460ff161561169c576001600160a01b03851660009081526011602052604090205460ff1661160757600b548311158061167657506001600160a01b03851660009081526012602052604090205460ff165b6116925760405162461bcd60e51b81526004016108e690612275565b6116048584611e38565b6001600160a01b03851660009081526011602052604090205460ff166117a557600c546001600160a01b0385166000908152600d60205260409020546116e29085611bd4565b11158061170757506001600160a01b03841660009081526013602052604090205460ff165b6117535760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016108e6565b600b548311158061177c57506001600160a01b03851660009081526012602052604090205460ff165b6117985760405162461bcd60e51b81526004016108e690612275565b6117a28584611ecc565b90505b6001600160a01b0385166000908152600d60205260409020546117c8908461184c565b6001600160a01b038087166000908152600d602052604080822093909355908616815220546117f79082611bd4565b6001600160a01b038086166000818152600d6020526040908190209390935591519087169060008051602061246f833981519152906118399085815260200190565b60405180910390a3506001949350505050565b60006109d983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061135c565b601e805460ff1916600117905560006118a78180611bd4565b905060006118c2601554601454611bd490919063ffffffff16565b306000908152600d60205260408120549192506118ec60026118e685818689611f15565b90611c33565b905060006118fa838361184c565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061193457611934612438565b6001600160a01b03928316602091820292909201015260075482519116908290600190811061196557611965612438565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b815291169063791ac947906119ab9086906000908690309042906004016122d5565b600060405180830381600087803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b5050505060006119f2834761184c90919063ffffffff16565b90506000611a0b611a048a6002611c33565b899061184c565b90506000611a2a60026118e68481611a238680611bd4565b8890611f15565b90506000611a47836118e6611a40600280611bd4565b8790611f15565b90506000611a5982610a27878661184c565b6018546040519192506000916001600160a01b039091169084908381818185875af1925050503d8060008114611aab576040519150601f19603f3d011682016040523d82523d6000602084013e611ab0565b606091505b50506019546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611b00576040519150601f19603f3d011682016040523d82523d6000602084013e611b05565b606091505b5060009250508a159050611bbb57601b5460175460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c4016060604051808303818588803b158015611b7e57600080fd5b505af1158015611b92573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611bb791906121f2565b5050505b5050601e805460ff191690555050505050505050505050565b600080611be18385612346565b9050838110156109d95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108e6565b60006109d983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f94565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600d90915291822054611cc691849061135c565b6001600160a01b038086166000908152600d60205260408082209390935590851681522054611cf59083611bd4565b6001600160a01b038085166000818152600d6020526040908190209390935591519086169060008051602061246f83398151915290611d379086815260200190565b60405180910390a35060019392505050565b3360009081526010602052604081205460ff16158015611d6c5750601e5460ff16155b8015611d815750601c54600160a81b900460ff165b8015610a2d575050601d54306000908152600d6020526040902054101590565b60145460055460009190431015611db6575060635b601654600090611dca906118e68685611f15565b306000908152600d6020526040902054909150611de79082611bd4565b306000818152600d6020526040908190209290925590516001600160a01b0387169060008051602061246f83398151915290611e269085815260200190565b60405180910390a361138d848261184c565b600080611e566016546118e660155486611f1590919063ffffffff16565b306000908152600d6020526040902054909150611e739082611bd4565b306000818152600d6020526040908190209290925590516001600160a01b0386169060008051602061246f83398151915290611eb29085815260200190565b60405180910390a3611ec4838261184c565b949350505050565b600080611ee96016546118e6600086611f1590919063ffffffff16565b90508015611f0b57306000908152600d6020526040902054611e739082611bd4565b611ec4838261184c565b600082611f2457506000610896565b6000611f308385612380565b905082611f3d858361235e565b146109d95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108e6565b60008183611fb55760405162461bcd60e51b81526004016108e69190612220565b50600061138d848661235e565b828054611fce906123b6565b90600052602060002090601f016020900481019282611ff05760008555612036565b82601f106120095782800160ff19823516178555612036565b82800160010185558215612036579182015b8281111561203657823582559160200191906001019061201b565b50612042929150612046565b5090565b5b808211156120425760008155600101612047565b80356001600160a01b038116811461207257600080fd5b919050565b60006020828403121561208957600080fd5b6109d98261205b565b600080604083850312156120a557600080fd5b6120ae8361205b565b91506120bc6020840161205b565b90509250929050565b6000806000606084860312156120da57600080fd5b6120e38461205b565b92506120f16020850161205b565b9150604084013590509250925092565b6000806040838503121561211457600080fd5b61211d8361205b565b91506020830135801515811461213257600080fd5b809150509250929050565b6000806040838503121561215057600080fd5b6121598361205b565b946020939093013593505050565b6000806020838503121561217a57600080fd5b823567ffffffffffffffff8082111561219257600080fd5b818501915085601f8301126121a657600080fd5b8135818111156121b557600080fd5b8660208285010111156121c757600080fd5b60209290920196919550909350505050565b6000602082840312156121eb57600080fd5b5035919050565b60008060006060848603121561220757600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b8181101561224d57858101830151858201604001528201612231565b8181111561225f576000604083870101525b50601f01601f1916929092016040019392505050565b602080825260119082015270151608131a5b5a5d08115e18d959591959607a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123255784516001600160a01b031683529383019391830191600101612300565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156123595761235961240c565b500190565b60008261237b57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561239a5761239a61240c565b500290565b6000828210156123b1576123b161240c565b500390565b600181811c908216806123ca57607f821691505b602082108114156123eb57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156124055761240561240c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200870b58d6b992f99772f938f76ce618c3f80f065481959645515dd0143e5c30d64736f6c63430008070033546865206465697479206f662073756e206c6566742075732061206d6573736167652079656172732061676f2e2e
Deployed Bytecode
0x6080604052600436106102605760003560e01c806383df6b0411610144578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610739578063e1d5584c1461077f578063f218dcdb1461079f578063f2fde38b146107bf578063f887ea40146107df578063fe575a87146107ff57600080fd5b8063a9059cbb1461069e578063b62496f5146106be578063b6c52324146106ee578063d00efb2f14610703578063dd4670641461071957600080fd5b80638df6f1eb116101085780638df6f1eb146105dd57806395d89b41146105fd5780639a7a23d614610629578063a69df4b514610649578063a86f4e931461065e578063a8aa1b311461067e57600080fd5b806383df6b0414610533578063893d20e8146105485780638a8c523c1461057a5780638b42507f1461058f5780638da5cb5b146105bf57600080fd5b80633f4218e0116101dd5780635c2a1a2d116101a15780635c2a1a2d1461047b5780636c0a24eb1461049b5780636ddd1713146104b157806370a08231146104d2578063715018a6146105085780637d1db4a51461051d57600080fd5b80633f4218e0146103d557806345434032146104055780634ada218b14610425578063571ac8b0146104465780635b895c291461046657600080fd5b806320800a001161022457806320800a001461034d57806323b872dd146103645780632b112e4914610384578063313ce567146103995780633ef5343c146103b557600080fd5b80630445b6671461026c57806306fdde0314610295578063095ea7b3146102d85780630bd11f8a1461030857806318160ddd1461033857600080fd5b3661026757005b600080fd5b34801561027857600080fd5b50610282601d5481565b6040519081526020015b60405180910390f35b3480156102a157600080fd5b50604080518082019091526011815270416d61746572617375204f6d696b616d6960781b60208201525b60405161028c9190612220565b3480156102e457600080fd5b506102f86102f336600461213d565b61082f565b604051901515815260200161028c565b34801561031457600080fd5b506102f8610323366004612077565b60136020526000908152604090205460ff1681565b34801561034457600080fd5b50600a54610282565b34801561035957600080fd5b5061036261089c565b005b34801561037057600080fd5b506102f861037f3660046120c5565b61091e565b34801561039057600080fd5b506102826109e0565b3480156103a557600080fd5b506040516012815260200161028c565b3480156103c157600080fd5b506103626103d03660046121d9565b610a32565b3480156103e157600080fd5b506102f86103f0366004612077565b60116020526000908152604090205460ff1681565b34801561041157600080fd5b50610362610420366004612101565b610aa6565b34801561043157600080fd5b50601c546102f890600160a01b900460ff1681565b34801561045257600080fd5b506102f8610461366004612077565b610afb565b34801561047257600080fd5b50610362610b09565b34801561048757600080fd5b50610362610496366004612167565b610b3d565b3480156104a757600080fd5b50610282600c5481565b3480156104bd57600080fd5b50601c546102f890600160a81b900460ff1681565b3480156104de57600080fd5b506102826104ed366004612077565b6001600160a01b03166000908152600d602052604090205490565b34801561051457600080fd5b50610362610bb3565b34801561052957600080fd5b50610282600b5481565b34801561053f57600080fd5b506102cb610c15565b34801561055457600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b34801561058657600080fd5b50610362610ca3565b34801561059b57600080fd5b506102f86105aa366004612077565b60126020526000908152604090205460ff1681565b3480156105cb57600080fd5b506000546001600160a01b0316610562565b3480156105e957600080fd5b506103626105f83660046121d9565b610cf8565b34801561060957600080fd5b50604080518082019091526003815262414d4f60e81b60208201526102cb565b34801561063557600080fd5b50610362610644366004612101565b610d7d565b34801561065557600080fd5b50610362610fd5565b34801561066a57600080fd5b506103626106793660046121d9565b6110ee565b34801561068a57600080fd5b50601c54610562906001600160a01b031681565b3480156106aa57600080fd5b506102f86106b936600461213d565b611173565b3480156106ca57600080fd5b506102f86106d9366004612077565b60106020526000908152604090205460ff1681565b3480156106fa57600080fd5b50600254610282565b34801561070f57600080fd5b5061028260045481565b34801561072557600080fd5b506103626107343660046121d9565b611180565b34801561074557600080fd5b50610282610754366004612092565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b34801561078b57600080fd5b5061056261079a3660046121d9565b611205565b3480156107ab57600080fd5b506103626107ba366004612101565b61122f565b3480156107cb57600080fd5b506103626107da366004612077565b611284565b3480156107eb57600080fd5b50601b54610562906001600160a01b031681565b34801561080b57600080fd5b506102f861081a366004612077565b60066020526000908152604090205460ff1681565b336000818152600e602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061088a9086815260200190565b60405180910390a35060015b92915050565b6019546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152601160248201527027b7363c902232bb102932b1b2b4bb32b960791b60448201526064015b60405180910390fd5b60405133904780156108fc02916000818181858888f1935050505015801561091b573d6000803e3d6000fd5b50565b6001600160a01b0383166000908152600e60209081526040808320338452909152812054600019146109cb576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600e825283812033825290915291909120546109a691849061135c565b6001600160a01b0385166000908152600e602090815260408083203384529091529020555b6109d6848484611396565b90505b9392505050565b6009546001600160a01b03166000908152600d6020526040812054610a2d906008546001600160a01b03166000908152600d6020526040902054610a2790600a549061184c565b9061184c565b905090565b6000546001600160a01b03163314610a5c5760405162461bcd60e51b81526004016108e6906122a0565b600f8110610aa15760405162461bcd60e51b8152602060048201526012602482015271086c2dc4ee840cede40e8d0c2e840d0d2ced60731b60448201526064016108e6565b600355565b6000546001600160a01b03163314610ad05760405162461bcd60e51b81526004016108e6906122a0565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60006108968260001961082f565b6000546001600160a01b03163314610b335760405162461bcd60e51b81526004016108e6906122a0565b610b3b61188e565b565b6018546001600160a01b0316331480610b6057506019546001600160a01b031633145b610ba25760405162461bcd60e51b815260206004820152601360248201527243616e27742073656e64206d6573736167657360681b60448201526064016108e6565b610bae601a8383611fc2565b505050565b6000546001600160a01b03163314610bdd5760405162461bcd60e51b81526004016108e6906122a0565b600080546040516001600160a01b039091169060008051602061244f833981519152908390a3600080546001600160a01b0319169055565b601a8054610c22906123b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4e906123b6565b8015610c9b5780601f10610c7057610100808354040283529160200191610c9b565b820191906000526020600020905b815481529060010190602001808311610c7e57829003601f168201915b505050505081565b6000546001600160a01b03163314610ccd5760405162461bcd60e51b81526004016108e6906122a0565b601c805460ff60a01b1916600160a01b179055436004819055600354610cf39190611bd4565b600555565b6000546001600160a01b03163314610d225760405162461bcd60e51b81526004016108e6906122a0565b600a54610d3190612710611c33565b8111610d785760405162461bcd60e51b815260206004820152601660248201527543616e27742072657374726963742074726164696e6760501b60448201526064016108e6565b600c55565b6000546001600160a01b03163314610da75760405162461bcd60e51b81526004016108e6906122a0565b6001600160a01b03821660009081526010602052604090205460ff1615158115151415610e0a5760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b60448201526064016108e6565b6001600160a01b0382166000908152601060205260409020805460ff19168215801591909117909155610e8857600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0384166001600160a01b03199091161790555050565b600f54600110610ecc5760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b60448201526064016108e6565b60005b600f54811015610bae57826001600160a01b0316600f8281548110610ef657610ef6612438565b6000918252602090912001546001600160a01b03161415610fc357600f8054610f219060019061239f565b81548110610f3157610f31612438565b600091825260209091200154600f80546001600160a01b039092169183908110610f5d57610f5d612438565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600f805480610f9c57610f9c612422565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b80610fcd816123f1565b915050610ecf565b6001546001600160a01b0316331461104e5760405162461bcd60e51b815260206004820152603660248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152751bd8dac81d1a19481d1bdad95b8818dbdb9d1c9858dd60521b60648201526084016108e6565b600254421161109f5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016108e6565b600154600080546040516001600160a01b03938416939091169160008051602061244f83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b031633146111185760405162461bcd60e51b81526004016108e6906122a0565b600a5461112790612710611c33565b811161116e5760405162461bcd60e51b815260206004820152601660248201527543616e27742072657374726963742074726164696e6760501b60448201526064016108e6565b600b55565b60006109d9338484611396565b6000546001600160a01b031633146111aa5760405162461bcd60e51b81526004016108e6906122a0565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556111d98142612346565b600255600080546040516001600160a01b039091169060008051602061244f833981519152908390a350565b600f818154811061121557600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146112595760405162461bcd60e51b81526004016108e6906122a0565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112ae5760405162461bcd60e51b81526004016108e6906122a0565b6001600160a01b0381166113135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e6565b600080546040516001600160a01b038085169392169160008051602061244f83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081848411156113805760405162461bcd60e51b81526004016108e69190612220565b50600061138d848661239f565b95945050505050565b6001600160a01b03831660009081526006602052604081205460ff161580156113d857506001600160a01b03831660009081526006602052604090205460ff16155b6114125760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b60448201526064016108e6565b601e5460ff161561142f57611428848484611c75565b90506109d9565b6001600160a01b03841660009081526011602052604090205460ff1615801561147157506001600160a01b03831660009081526011602052604090205460ff16155b156114c657601c54600160a01b900460ff166114c65760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108e6565b6114ce611d49565b156114db576114db61188e565b6001600160a01b038416600090815260106020526040902054829060ff161561160c576001600160a01b03841660009081526011602052604090205460ff1661160757600c546001600160a01b0385166000908152600d60205260409020546115449085611bd4565b11158061156957506001600160a01b03841660009081526013602052604090205460ff165b6115b55760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016108e6565b600b54831115806115de57506001600160a01b03841660009081526012602052604090205460ff165b6115fa5760405162461bcd60e51b81526004016108e690612275565b6116048584611da1565b90505b6117a5565b6001600160a01b03841660009081526010602052604090205460ff161561169c576001600160a01b03851660009081526011602052604090205460ff1661160757600b548311158061167657506001600160a01b03851660009081526012602052604090205460ff165b6116925760405162461bcd60e51b81526004016108e690612275565b6116048584611e38565b6001600160a01b03851660009081526011602052604090205460ff166117a557600c546001600160a01b0385166000908152600d60205260409020546116e29085611bd4565b11158061170757506001600160a01b03841660009081526013602052604090205460ff165b6117535760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016108e6565b600b548311158061177c57506001600160a01b03851660009081526012602052604090205460ff165b6117985760405162461bcd60e51b81526004016108e690612275565b6117a28584611ecc565b90505b6001600160a01b0385166000908152600d60205260409020546117c8908461184c565b6001600160a01b038087166000908152600d602052604080822093909355908616815220546117f79082611bd4565b6001600160a01b038086166000818152600d6020526040908190209390935591519087169060008051602061246f833981519152906118399085815260200190565b60405180910390a3506001949350505050565b60006109d983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061135c565b601e805460ff1916600117905560006118a78180611bd4565b905060006118c2601554601454611bd490919063ffffffff16565b306000908152600d60205260408120549192506118ec60026118e685818689611f15565b90611c33565b905060006118fa838361184c565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061193457611934612438565b6001600160a01b03928316602091820292909201015260075482519116908290600190811061196557611965612438565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b815291169063791ac947906119ab9086906000908690309042906004016122d5565b600060405180830381600087803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b5050505060006119f2834761184c90919063ffffffff16565b90506000611a0b611a048a6002611c33565b899061184c565b90506000611a2a60026118e68481611a238680611bd4565b8890611f15565b90506000611a47836118e6611a40600280611bd4565b8790611f15565b90506000611a5982610a27878661184c565b6018546040519192506000916001600160a01b039091169084908381818185875af1925050503d8060008114611aab576040519150601f19603f3d011682016040523d82523d6000602084013e611ab0565b606091505b50506019546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611b00576040519150601f19603f3d011682016040523d82523d6000602084013e611b05565b606091505b5060009250508a159050611bbb57601b5460175460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c4016060604051808303818588803b158015611b7e57600080fd5b505af1158015611b92573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611bb791906121f2565b5050505b5050601e805460ff191690555050505050505050505050565b600080611be18385612346565b9050838110156109d95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108e6565b60006109d983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f94565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600d90915291822054611cc691849061135c565b6001600160a01b038086166000908152600d60205260408082209390935590851681522054611cf59083611bd4565b6001600160a01b038085166000818152600d6020526040908190209390935591519086169060008051602061246f83398151915290611d379086815260200190565b60405180910390a35060019392505050565b3360009081526010602052604081205460ff16158015611d6c5750601e5460ff16155b8015611d815750601c54600160a81b900460ff165b8015610a2d575050601d54306000908152600d6020526040902054101590565b60145460055460009190431015611db6575060635b601654600090611dca906118e68685611f15565b306000908152600d6020526040902054909150611de79082611bd4565b306000818152600d6020526040908190209290925590516001600160a01b0387169060008051602061246f83398151915290611e269085815260200190565b60405180910390a361138d848261184c565b600080611e566016546118e660155486611f1590919063ffffffff16565b306000908152600d6020526040902054909150611e739082611bd4565b306000818152600d6020526040908190209290925590516001600160a01b0386169060008051602061246f83398151915290611eb29085815260200190565b60405180910390a3611ec4838261184c565b949350505050565b600080611ee96016546118e6600086611f1590919063ffffffff16565b90508015611f0b57306000908152600d6020526040902054611e739082611bd4565b611ec4838261184c565b600082611f2457506000610896565b6000611f308385612380565b905082611f3d858361235e565b146109d95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108e6565b60008183611fb55760405162461bcd60e51b81526004016108e69190612220565b50600061138d848661235e565b828054611fce906123b6565b90600052602060002090601f016020900481019282611ff05760008555612036565b82601f106120095782800160ff19823516178555612036565b82800160010185558215612036579182015b8281111561203657823582559160200191906001019061201b565b50612042929150612046565b5090565b5b808211156120425760008155600101612047565b80356001600160a01b038116811461207257600080fd5b919050565b60006020828403121561208957600080fd5b6109d98261205b565b600080604083850312156120a557600080fd5b6120ae8361205b565b91506120bc6020840161205b565b90509250929050565b6000806000606084860312156120da57600080fd5b6120e38461205b565b92506120f16020850161205b565b9150604084013590509250925092565b6000806040838503121561211457600080fd5b61211d8361205b565b91506020830135801515811461213257600080fd5b809150509250929050565b6000806040838503121561215057600080fd5b6121598361205b565b946020939093013593505050565b6000806020838503121561217a57600080fd5b823567ffffffffffffffff8082111561219257600080fd5b818501915085601f8301126121a657600080fd5b8135818111156121b557600080fd5b8660208285010111156121c757600080fd5b60209290920196919550909350505050565b6000602082840312156121eb57600080fd5b5035919050565b60008060006060848603121561220757600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b8181101561224d57858101830151858201604001528201612231565b8181111561225f576000604083870101525b50601f01601f1916929092016040019392505050565b602080825260119082015270151608131a5b5a5d08115e18d959591959607a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123255784516001600160a01b031683529383019391830191600101612300565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156123595761235961240c565b500190565b60008261237b57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561239a5761239a61240c565b500290565b6000828210156123b1576123b161240c565b500390565b600181811c908216806123ca57607f821691505b602082108114156123eb57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156124055761240561240c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200870b58d6b992f99772f938f76ce618c3f80f065481959645515dd0143e5c30d64736f6c63430008070033
Deployed Bytecode Sourcemap
6678:12611:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8786:54;;;;;;;;;;;;;;;;;;;10667:25:1;;;10655:2;10640:18;8786:54:0;;;;;;;;10035:80;;;;;;;;;;-1:-1:-1;10107:5:0;;;;;;;;;;;;-1:-1:-1;;;10107:5:0;;;;10035:80;;;;;;;:::i;10459:216::-;;;;;;;;;;-1:-1:-1;10459:216:0;;;;;:::i;:::-;;:::i;:::-;;;3880:14:1;;3873:22;3855:41;;3843:2;3828:18;10459:216:0;3715:187:1;7763:50:0;;;;;;;;;;-1:-1:-1;7763:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9765:88;;;;;;;;;;-1:-1:-1;9838:12:0;;9765:88;;15057:170;;;;;;;;;;;;;:::i;:::-;;10977:370;;;;;;;;;;-1:-1:-1;10977:370:0;;;;;:::i;:::-;;:::i;18625:142::-;;;;;;;;;;;;;:::i;9859:80::-;;;;;;;;;;-1:-1:-1;9859:80:0;;7235:2;11830:36:1;;11818:2;11803:18;9859:80:0;11688:184:1;19122:162:0;;;;;;;;;;-1:-1:-1;19122:162:0;;;;;:::i;:::-;;:::i;7657:44::-;;;;;;;;;;-1:-1:-1;7657:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19000:114;;;;;;;;;;-1:-1:-1;19000:114:0;;;;;:::i;:::-;;:::i;8708:34::-;;;;;;;;;;-1:-1:-1;8708:34:0;;;;-1:-1:-1;;;8708:34:0;;;;;;10683:122;;;;;;;;;;-1:-1:-1;10683:122:0;;;;;:::i;:::-;;:::i;18540:73::-;;;;;;;;;;;;;:::i;18775:217::-;;;;;;;;;;-1:-1:-1;18775:217:0;;;;;:::i;:::-;;:::i;7365:51::-;;;;;;;;;;;;;;;;8749:30;;;;;;;;;;-1:-1:-1;8749:30:0;;;;-1:-1:-1;;;8749:30:0;;;;;;10207:105;;;;;;;;;;-1:-1:-1;10207:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;10291:18:0;10273:7;10291:18;;;:9;:18;;;;;;;10207:105;3780:148;;;;;;;;;;;;;:::i;7311:47::-;;;;;;;;;;;;;;;;8565:74;;;;;;;;;;;;;:::i;10121:80::-;;;;;;;;;;-1:-1:-1;10173:7:0;3175:6;-1:-1:-1;;;;;3175:6:0;10121:80;;;-1:-1:-1;;;;;3059:32:1;;;3041:51;;3029:2;3014:18;10121:80:0;2895:203:1;15260:180:0;;;;;;;;;;;;;:::i;7708:48::-;;;;;;;;;;-1:-1:-1;7708:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3110:79;;;;;;;;;;-1:-1:-1;3148:7:0;3175:6;-1:-1:-1;;;;;3175:6:0;3110:79;;17466:185;;;;;;;;;;-1:-1:-1;17466:185:0;;;;;:::i;:::-;;:::i;9945:84::-;;;;;;;;;;-1:-1:-1;10019:7:0;;;;;;;;;;;;-1:-1:-1;;;10019:7:0;;;;9945:84;;17793:737;;;;;;;;;;-1:-1:-1;17793:737:0;;;;;:::i;:::-;;:::i;4811:324::-;;;;;;;;;;;;;:::i;17281:177::-;;;;;;;;;;-1:-1:-1;17281:177:0;;;;;:::i;:::-;;:::i;8680:19::-;;;;;;;;;;-1:-1:-1;8680:19:0;;;;-1:-1:-1;;;;;8680:19:0;;;10813:156;;;;;;;;;;-1:-1:-1;10813:156:0;;;;;:::i;:::-;;:::i;7592:58::-;;;;;;;;;;-1:-1:-1;7592:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4344:89;;;;;;;;;;-1:-1:-1;4416:9:0;;4344:89;;6795:26;;;;;;;;;;;;;;;;4509:226;;;;;;;;;;-1:-1:-1;4509:226:0;;;;;:::i;:::-;;:::i;10318:133::-;;;;;;;;;;-1:-1:-1;10318:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10420:19:0;;;10402:7;10420:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10318:133;7556:29;;;;;;;;;;-1:-1:-1;7556:29:0;;;;;:::i;:::-;;:::i;17659:126::-;;;;;;;;;;-1:-1:-1;17659:126:0;;;;;:::i;:::-;;:::i;4092:244::-;;;;;;;;;;-1:-1:-1;4092:244:0;;;;;:::i;:::-;;:::i;8649:24::-;;;;;;;;;;-1:-1:-1;8649:24:0;;;;-1:-1:-1;;;;;8649:24:0;;;6866:46;;;;;;;;;;-1:-1:-1;6866:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10459:216;10563:10;10534:4;10551:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10551:32:0;;;;;;;;;;:41;;;10608:37;10534:4;;10551:32;;10608:37;;;;10586:6;10667:25:1;;10655:2;10640:18;;10521:177;10608:37:0;;;;;;;;-1:-1:-1;10663:4:0;10459:216;;;;;:::o;15057:170::-;15121:14;;-1:-1:-1;;;;;15121:14:0;15107:10;:28;15098:59;;;;-1:-1:-1;;;15098:59:0;;7442:2:1;15098:59:0;;;7424:21:1;7481:2;7461:18;;;7454:30;-1:-1:-1;;;7500:18:1;;;7493:47;7557:18;;15098:59:0;;;;;;;;;15168:51;;15176:10;;15197:21;15168:51;;;;;;;;;15197:21;15176:10;15168:51;;;;;;;;;;;;;;;;;;;;;15057:170::o;10977:370::-;-1:-1:-1;;;;;11097:19:0;;11077:4;11097:19;;;:11;:19;;;;;;;;11117:10;11097:31;;;;;;;;-1:-1:-1;;11097:52:0;11094:186;;11199:69;;;;;;;;;;;-1:-1:-1;;;11199:69:0;;;;;;;;-1:-1:-1;;;;;11199:19:0;;-1:-1:-1;11199:19:0;;;:11;:19;;;;;11219:10;11199:31;;;;;;;;;;:69;;11235:6;;11199:35;:69::i;:::-;-1:-1:-1;;;;;11165:19:0;;;;;;:11;:19;;;;;;;;11185:10;11165:31;;;;;;;:103;11094:186;11299:40;11313:6;11321:9;11332:6;11299:13;:40::i;:::-;11292:47;;10977:370;;;;;;:::o;18625:142::-;18753:4;;-1:-1:-1;;;;;18753:4:0;18678:7;10291:18;;;:9;:18;;;;;;18705:54;;18732:4;;-1:-1:-1;;;;;18732:4:0;10273:7;10291:18;;;:9;:18;;;;;;18705:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;18698:61;;18625:142;:::o;19122:162::-;3328:6;;-1:-1:-1;;;;;3328:6:0;2259:10;3328:22;3320:67;;;;-1:-1:-1;;;3320:67:0;;;;;;;:::i;:::-;19210:2:::1;19200:7;:12;19192:43;;;::::0;-1:-1:-1;;;19192:43:0;;5636:2:1;19192:43:0::1;::::0;::::1;5618:21:1::0;5675:2;5655:18;;;5648:30;-1:-1:-1;;;5694:18:1;;;5687:48;5752:18;;19192:43:0::1;5434:342:1::0;19192:43:0::1;19246:10;:20:::0;19122:162::o;19000:114::-;3328:6;;-1:-1:-1;;;;;3328:6:0;2259:10;3328:22;3320:67;;;;-1:-1:-1;;;3320:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19075:23:0;;;::::1;;::::0;;;:13:::1;:23;::::0;;;;:31;;-1:-1:-1;;19075:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19000:114::o;10683:122::-;10738:4;10762:35;10770:7;-1:-1:-1;;10762:7:0;:35::i;18540:73::-;3328:6;;-1:-1:-1;;;;;3328:6:0;2259:10;3328:22;3320:67;;;;-1:-1:-1;;;3320:67:0;;;;;;;:::i;:::-;18595:10:::1;:8;:10::i;:::-;18540:73::o:0;18775:217::-;18876:20;;-1:-1:-1;;;;;18876:20:0;18862:10;:34;;:66;;-1:-1:-1;18914:14:0;;-1:-1:-1;;;;;18914:14:0;18900:10;:28;18862:66;18853:99;;;;-1:-1:-1;;;18853:99:0;;4937:2:1;18853:99:0;;;4919:21:1;4976:2;4956:18;;;4949:30;-1:-1:-1;;;4995:18:1;;;4988:49;5054:18;;18853:99:0;4735:343:1;18853:99:0;18963:20;:9;18975:8;;18963:20;:::i;:::-;;18775:217;;:::o;3780:148::-;3328:6;;-1:-1:-1;;;;;3328:6:0;2259:10;3328:22;3320:67;;;;-1:-1:-1;;;3320:67:0;;;;;;;:::i;:::-;3887:1:::1;3871:6:::0;;3850:40:::1;::::0;-1:-1:-1;;;;;3871:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;3850:40:0;3887:1;;3850:40:::1;3918:1;3901:19:::0;;-1:-1:-1;;;;;;3901:19:0::1;::::0;;3780:148::o;8565:74::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15260:180::-;3328:6;;-1:-1:-1;;;;;3328:6:0;2259:10;3328:22;3320:67;;;;-1:-1:-1;;;3320:67:0;;;;;;;:::i;:::-;15315:14:::1;:21:::0;;-1:-1:-1;;;;15315:21:0::1;-1:-1:-1::0;;;15315:21:0::1;::::0;;15361:12:::1;15347:11;:26:::0;;;15419:10:::1;::::0;15402:28:::1;::::0;15361:12;15402:16:::1;:28::i;:::-;15384:15;:46:::0;15260:180::o;17466:185::-;3328:6;;-1:-1:-1;;;;;3328:6:0;2259:10;3328:22;3320:67;;;;-1:-1:-1;;;3320:67:0;;;;;;;:::i;:::-;17557:12:::1;::::0;:23:::1;::::0;17574:5:::1;17557:16;:23::i;:::-;17548:6;:32;17540:67;;;::::0;-1:-1:-1;;;17540:67:0;;5285:2:1;17540:67:0::1;::::0;::::1;5267:21:1::0;5324:2;5304:18;;;5297:30;-1:-1:-1;;;5343:18:1;;;5336:52;5405:18;;17540:67:0::1;5083:346:1::0;17540:67:0::1;17618:16;:25:::0;17466:185::o;17793:737::-;3328:6;;-1:-1:-1;;;;;3328:6:0;2259:10;3328:22;3320:67;;;;-1:-1:-1;;;3320:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17898:32:0;::::1;;::::0;;;:25:::1;:32;::::0;;;;;::::1;;:42;;::::0;::::1;;;;17890:72;;;::::0;-1:-1:-1;;;17890:72:0;;6689:2:1;17890:72:0::1;::::0;::::1;6671:21:1::0;6728:2;6708:18;;;6701:30;-1:-1:-1;;;6747:18:1;;;6740:47;6804:18;;17890:72:0::1;6487:341:1::0;17890:72:0::1;-1:-1:-1::0;;;;;17979:32:0;::::1;;::::0;;;:25:::1;:32;::::0;;;;:41;;-1:-1:-1;;17979:41:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;18037:482:::1;;18066:12;:24:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;18066:24:0;;;;;::::1;::::0;;-1:-1:-1;;;;;18066:24:0;::::1;-1:-1:-1::0;;;;;;18066:24:0;;::::1;;::::0;;17793:737;;:::o;18037:482::-:1;18137:12;:19:::0;18159:1:::1;-1:-1:-1::0;18129:51:0::1;;;::::0;-1:-1:-1;;;18129:51:0;;8144:2:1;18129:51:0::1;::::0;::::1;8126:21:1::0;8183:2;8163:18;;;8156:30;-1:-1:-1;;;8202:18:1;;;8195:45;8257:18;;18129:51:0::1;7942:339:1::0;18129:51:0::1;18204:9;18199:305;18223:12;:19:::0;18219:23;::::1;18199:305;;;18295:5;-1:-1:-1::0;;;;;18276:24:0::1;:12;18289:1;18276:15;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;18276:15:0::1;:24;18272:213;;;18347:12;18360:19:::0;;:23:::1;::::0;18382:1:::1;::::0;18360:23:::1;:::i;:::-;18347:37;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;18329:12:::1;:15:::0;;-1:-1:-1;;;;;18347:37:0;;::::1;::::0;18342:1;;18329:15;::::1;;;;;:::i;:::-;;;;;;;;;:55;;;;;-1:-1:-1::0;;;;;18329:55:0::1;;;;;-1:-1:-1::0;;;;;18329:55:0::1;;;;;;18411:12;:18;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;18411:18:0;;;;;-1:-1:-1;;;;;;18411:18:0::1;::::0;;;;;18963:20;18775:217;;:::o;18272:213::-:1;18244:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18199:305;;4811:324:::0;4863:14;;-1:-1:-1;;;;;4863:14:0;4881:10;4863:28;4855:95;;;;-1:-1:-1;;;4855:95:0;;9960:2:1;4855:95:0;;;9942:21:1;9999:2;9979:18;;;9972:30;10038:34;10018:18;;;10011:62;-1:-1:-1;;;10089:18:1;;;10082:52;10151:19;;4855:95:0;9758:418:1;4855:95:0;4987:9;;4969:15;:27;4961:72;;;;-1:-1:-1;;;4961:72:0;;9600:2:1;4961:72:0;;;9582:21:1;9639:2;9619:18;;;9612:30;9678:33;9658:18;;;9651:61;9729:18;;4961:72:0;9398:355:1;4961:72:0;5078:14;;;5070:6;;5049:44;;-1:-1:-1;;;;;5078:14:0;;;;5070:6;;;;-1:-1:-1;;;;;;;;;;;5049:44:0;;5113:14;;;5104:23;;-1:-1:-1;;;;;;5104:23:0;-1:-1:-1;;;;;5113:14:0;;;5104:23;;;;;;4811:324::o;17281:177::-;3328:6;;-1:-1:-1;;;;;3328:6:0;2259:10;3328:22;3320:67;;;;-1:-1:-1;;;3320:67:0;;;;;;;:::i;:::-;17368:12:::1;::::0;:23:::1;::::0;17385:5:::1;17368:16;:23::i;:::-;17359:6;:32;17351:67;;;::::0;-1:-1:-1;;;17351:67:0;;5285:2:1;17351:67:0::1;::::0;::::1;5267:21:1::0;5324:2;5304:18;;;5297:30;-1:-1:-1;;;5343:18:1;;;5336:52;5405:18;;17351:67:0::1;5083:346:1::0;17351:67:0::1;17429:12;:21:::0;17281:177::o;10813:156::-;10893:4;10917:44;10931:10;10943:9;10954:6;10917:13;:44::i;4509:226::-;3328:6;;-1:-1:-1;;;;;3328:6:0;2259:10;3328:22;3320:67;;;;-1:-1:-1;;;3320:67:0;;;;;;;:::i;:::-;4590:6:::1;::::0;;;4573:23;;-1:-1:-1;;;;;;4573:23:0;;::::1;-1:-1:-1::0;;;;;4590:6:0;::::1;4573:23;::::0;;;4607:19:::1;::::0;;4649:22:::1;4667:4:::0;4649:15:::1;:22;:::i;:::-;4637:9;:34:::0;4724:1:::1;4708:6:::0;;4687:40:::1;::::0;-1:-1:-1;;;;;4708:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;4687:40:0;4724:1;;4687:40:::1;4509:226:::0;:::o;7556:29::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7556:29:0;;-1:-1:-1;7556:29:0;:::o;17659:126::-;3328:6;;-1:-1:-1;;;;;3328:6:0;2259:10;3328:22;3320:67;;;;-1:-1:-1;;;3320:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17749:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;17749:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17659:126::o;4092:244::-;3328:6;;-1:-1:-1;;;;;3328:6:0;2259:10;3328:22;3320:67;;;;-1:-1:-1;;;3320:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4181:22:0;::::1;4173:73;;;::::0;-1:-1:-1;;;4173:73:0;;7035:2:1;4173:73:0::1;::::0;::::1;7017:21:1::0;7074:2;7054:18;;;7047:30;7113:34;7093:18;;;7086:62;-1:-1:-1;;;7164:18:1;;;7157:36;7210:19;;4173:73:0::1;6833:402:1::0;4173:73:0::1;4283:6;::::0;;4262:38:::1;::::0;-1:-1:-1;;;;;4262:38:0;;::::1;::::0;4283:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;4262:38:0;::::1;4311:6;:17:::0;;-1:-1:-1;;;;;;4311:17:0::1;-1:-1:-1::0;;;;;4311:17:0;;;::::1;::::0;;;::::1;::::0;;4092:244::o;421:192::-;507:7;543:12;535:6;;;;527:29;;;;-1:-1:-1;;;527:29:0;;;;;;;;:::i;:::-;-1:-1:-1;567:9:0;579:5;583:1;579;:5;:::i;:::-;567:17;421:192;-1:-1:-1;;;;;421:192:0:o;11355:1833::-;-1:-1:-1;;;;;11473:21:0;;11447:4;11473:21;;;:13;:21;;;;;;;;11472:22;:51;;;;-1:-1:-1;;;;;;11499:24:0;;;;;;:13;:24;;;;;;;;11498:25;11472:51;11464:74;;;;-1:-1:-1;;;11464:74:0;;10383:2:1;11464:74:0;;;10365:21:1;10422:2;10402:18;;;10395:30;-1:-1:-1;;;10441:18:1;;;10434:41;10492:18;;11464:74:0;10181:335:1;11464:74:0;11552:6;;;;11549:63;;;11568:41;11583:6;11591:9;11602:6;11568:14;:41::i;:::-;11561:48;;;;11549:63;-1:-1:-1;;;;;11628:19:0;;;;;;:11;:19;;;;;;;;11627:20;:47;;;;-1:-1:-1;;;;;;11652:22:0;;;;;;:11;:22;;;;;;;;11651:23;11627:47;11624:124;;;11698:14;;-1:-1:-1;;;11698:14:0;;;;11690:46;;;;-1:-1:-1;;;11690:46:0;;8488:2:1;11690:46:0;;;8470:21:1;8527:2;8507:18;;;8500:30;-1:-1:-1;;;8546:18:1;;;8539:50;8606:18;;11690:46:0;8286:344:1;11690:46:0;11763:16;:14;:16::i;:::-;11760:35;;;11782:10;:8;:10::i;:::-;-1:-1:-1;;;;;11855:33:0;;11807:22;11855:33;;;:25;:33;;;;;;11832:6;;11855:33;;11852:1100;;;-1:-1:-1;;;;;11915:22:0;;;;;;:11;:22;;;;;;;;11911:354;;12002:16;;-1:-1:-1;;;;;11966:20:0;;;;;;:9;:20;;;;;;:32;;11991:6;11966:24;:32::i;:::-;:52;;:84;;;-1:-1:-1;;;;;;12022:28:0;;;;;;:17;:28;;;;;;;;11966:84;11958:128;;;;-1:-1:-1;;;11958:128:0;;6329:2:1;11958:128:0;;;6311:21:1;6368:2;6348:18;;;6341:30;6407:33;6387:18;;;6380:61;6458:18;;11958:128:0;6127:355:1;11958:128:0;12123:12;;12113:6;:22;;:52;;;-1:-1:-1;;;;;;12139:26:0;;;;;;:15;:26;;;;;;;;12113:52;12105:82;;;;-1:-1:-1;;;12105:82:0;;;;;;;:::i;:::-;12223:26;12234:6;12242;12223:10;:26::i;:::-;12206:43;;11911:354;11852:1100;;;-1:-1:-1;;;;;12287:36:0;;;;;;:25;:36;;;;;;;;12284:668;;;-1:-1:-1;;;;;12351:19:0;;;;;;:11;:19;;;;;;;;12347:204;;12409:12;;12399:6;:22;;:49;;;-1:-1:-1;;;;;;12425:23:0;;;;;;:15;:23;;;;;;;;12399:49;12391:79;;;;-1:-1:-1;;;12391:79:0;;;;;;;:::i;:::-;12506:27;12518:6;12526;12506:11;:27::i;12284:668::-;-1:-1:-1;;;;;12589:19:0;;;;;;:11;:19;;;;;;;;12584:357;;12674:16;;-1:-1:-1;;;;;12638:20:0;;;;;;:9;:20;;;;;;:32;;12663:6;12638:24;:32::i;:::-;:52;;:84;;;-1:-1:-1;;;;;;12694:28:0;;;;;;:17;:28;;;;;;;;12638:84;12630:128;;;;-1:-1:-1;;;12630:128:0;;6329:2:1;12630:128:0;;;6311:21:1;6368:2;6348:18;;;6341:30;6407:33;6387:18;;;6380:61;6458:18;;12630:128:0;6127:355:1;12630:128:0;12795:12;;12785:6;:22;;:49;;;-1:-1:-1;;;;;;12811:23:0;;;;;;:15;:23;;;;;;;;12785:49;12777:79;;;;-1:-1:-1;;;12777:79:0;;;;;;;:::i;:::-;12892:31;12908:6;12916;12892:15;:31::i;:::-;12875:48;;12584:357;-1:-1:-1;;;;;12984:17:0;;;;;;:9;:17;;;;;;:29;;13006:6;12984:21;:29::i;:::-;-1:-1:-1;;;;;12964:17:0;;;;;;;:9;:17;;;;;;:49;;;;13047:20;;;;;;;:40;;13072:14;13047:24;:40::i;:::-;-1:-1:-1;;;;;13024:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13115:43;;;;;;-1:-1:-1;;;;;;;;;;;13115:43:0;;;13143:14;10667:25:1;;10655:2;10640:18;;10521:177;13115:43:0;;;;;;;;-1:-1:-1;13176:4:0;;11355:1833;-1:-1:-1;;;;11355:1833:0:o;279:136::-;337:7;364:43;368:1;371;364:43;;;;;;;;;;;;;;;;;:3;:43::i;15448:1801::-;8897:6;:13;;-1:-1:-1;;8897:13:0;8906:4;8897:13;;;:6;15524:34:::1;8897:6:::0;;15524:16:::1;:34::i;:::-;15497:61;;15569:20;15591:29;15607:12;;15591:11;;:15;;:29;;;;:::i;:::-;15682:4;15633:28;15664:24:::0;;;:9:::1;:24;::::0;;;;;15569:51;;-1:-1:-1;15725:67:0::1;15790:1;15725:60;15569:51:::0;15725:60;15664:24;15750:16;15725:24:::1;:42::i;:::-;:46:::0;::::1;:60::i;:67::-;15699:93:::0;-1:-1:-1;15803:20:0::1;15826:41;:20:::0;15699:93;15826:24:::1;:41::i;:::-;15962:16;::::0;;15976:1:::1;15962:16:::0;;;;;::::1;::::0;;15803:64;;-1:-1:-1;15904:21:0::1;::::0;15880::::1;::::0;15962:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15962:16:0::1;15938:40;;16007:4;15989;15994:1;15989:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15989:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16033:4:::1;::::0;16023:7;;16033:4;::::1;::::0;16023;;16033;;16023:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16023:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16050:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;16050:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;16122:12;;16050:6:::1;::::0;16165:4;;16192::::1;::::0;16212:15:::1;::::0;16050:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16251:17;16271:40;16297:13;16271:21;:25;;:40;;;;:::i;:::-;16251:60:::0;-1:-1:-1;16324:19:0::1;16346:41;16363:23;:16:::0;16384:1:::1;16363:20;:23::i;:::-;16346:12:::0;;:16:::1;:41::i;:::-;16324:63:::0;-1:-1:-1;16408:26:0::1;16437:73;16508:1;16437:66;16324:63:::0;16437:66;16451:34:::1;16408:26:::0;;16451:16:::1;:34::i;:::-;16437:9:::0;;:13:::1;:49::i;:73::-;16408:102:::0;-1:-1:-1;16521:26:0::1;16550:66;16604:11:::0;16550:49:::1;16564:34;8071:1;::::0;16564:16:::1;:34::i;:::-;16550:9:::0;;:13:::1;:49::i;:66::-;16521:95:::0;-1:-1:-1;16627:20:0::1;16650:57;16521:95:::0;16650:33:::1;:9:::0;16664:18;16650:13:::1;:33::i;:57::-;16749:20;::::0;16741:65:::1;::::0;16627:80;;-1:-1:-1;16721:15:0::1;::::0;-1:-1:-1;;;;;16749:20:0;;::::1;::::0;16783:18;;16721:15;16741:65;16721:15;16741:65;16783:18;16749:20;16741:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16841:14:0::1;::::0;16833:53:::1;::::0;16720:86;;-1:-1:-1;;;;;;16841:14:0::1;::::0;16869:12;;16833:53:::1;::::0;;;16869:12;16841:14;16833:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16920:5:0::1;::::0;-1:-1:-1;;16941:19:0;;;-1:-1:-1;16938:294:0::1;;16976:6;::::0;17150:21:::1;::::0;16976:244:::1;::::0;-1:-1:-1;;;16976:244:0;;17052:4:::1;16976:244;::::0;::::1;3444:34:1::0;3494:18;;;3487:34;;;16976:6:0::1;3537:18:1::0;;;3530:34;;;3580:18;;;3573:34;-1:-1:-1;;;;;17150:21:0;;::::1;3623:19:1::0;;;3616:44;17190:15:0::1;3676:19:1::0;;;3669:35;16976:6:0;::::1;::::0;:22:::1;::::0;17006:18;;3378:19:1;;16976:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16938:294;-1:-1:-1::0;;8915:6:0;:14;;-1:-1:-1;;8915:14:0;;;-1:-1:-1;;;;;;;;;;;15448:1801:0:o;92:181::-;150:7;;182:5;186:1;182;:5;:::i;:::-;170:17;;211:1;206;:6;;198:46;;;;-1:-1:-1;;;198:46:0;;7788:2:1;198:46:0;;;7770:21:1;7827:2;7807:18;;;7800:30;7866:29;7846:18;;;7839:57;7913:18;;198:46:0;7586:351:1;875:132:0;933:7;960:39;964:1;967;960:39;;;;;;;;;;;;;;;;;:3;:39::i;13200:330::-;13330:53;;;;;;;;;;;-1:-1:-1;;;13330:53:0;;;;;;;;-1:-1:-1;;;;;13330:17:0;;13293:4;13330:17;;;:9;:17;;;;;;;:53;;13352:6;;13330:21;:53::i;:::-;-1:-1:-1;;;;;13310:17:0;;;;;;;:9;:17;;;;;;:73;;;;13417:20;;;;;;;:32;;13442:6;13417:24;:32::i;:::-;-1:-1:-1;;;;;13394:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13465:35;;;;;;-1:-1:-1;;;;;;;;;;;13465:35:0;;;13493:6;10667:25:1;;10655:2;10640:18;;10521:177;13465:35:0;;;;;;;;-1:-1:-1;13518:4:0;13200:330;;;;;:::o;14823:226::-;14932:10;14872:4;14906:37;;;:25;:37;;;;;;;;14905:38;:58;;;;-1:-1:-1;14957:6:0;;;;14956:7;14905:58;:82;;;;-1:-1:-1;14976:11:0;;-1:-1:-1;;;14976:11:0;;;;14905:82;:136;;;;-1:-1:-1;;15028:13:0;;15018:4;15000:24;;;;:9;:24;;;;;;:41;;;14823:226::o;13551:472::-;13659:11;;13700:15;;13621:7;;13659:11;13685:12;:30;13681:84;;;-1:-1:-1;13747:2:0;13681:84;13822:14;;13777:17;;13797:40;;:20;:6;13808:8;13797:10;:20::i;:40::-;13895:4;13877:24;;;;:9;:24;;;;;;13777:60;;-1:-1:-1;13877:39:0;;13777:60;13877:28;:39::i;:::-;13868:4;13850:24;;;;:9;:24;;;;;;;:66;;;;13932:42;;-1:-1:-1;;;;;13932:42:0;;;-1:-1:-1;;;;;;;;;;;13932:42:0;;;13964:9;10667:25:1;;10655:2;10640:18;;10521:177;13932:42:0;;;;;;;;13994:21;:6;14005:9;13994:10;:21::i;14031:356::-;14102:7;14123:17;14143:44;14172:14;;14143:24;14154:12;;14143:6;:10;;:24;;;;:::i;:44::-;14245:4;14227:24;;;;:9;:24;;;;;;14123:64;;-1:-1:-1;14227:39:0;;14123:64;14227:28;:39::i;:::-;14218:4;14200:24;;;;:9;:24;;;;;;;:66;;;;14282:42;;-1:-1:-1;;;;;14282:42:0;;;-1:-1:-1;;;;;;;;;;;14282:42:0;;;14314:9;10667:25:1;;10655:2;10640:18;;10521:177;14282:42:0;;;;;;;;14344:21;:6;14355:9;14344:10;:21::i;:::-;14337:28;14031:356;-1:-1:-1;;;;14031:356:0:o;14395:416::-;14470:7;14489:17;14509:43;14537:14;;14509:23;8167:1;14509:6;:10;;:23;;;;:::i;:43::-;14489:63;-1:-1:-1;14577:13:0;;14573:176;;14652:4;14634:24;;;;:9;:24;;;;;;:39;;14663:9;14634:28;:39::i;14573:176::-;14781:21;:6;14792:9;14781:10;:21::i;619:250::-;677:7;701:6;697:47;;-1:-1:-1;731:1:0;724:8;;697:47;756:9;768:5;772:1;768;:5;:::i;:::-;756:17;-1:-1:-1;801:1:0;792:5;796:1;756:17;792:5;:::i;:::-;:10;784:56;;;;-1:-1:-1;;;784:56:0;;8837:2:1;784:56:0;;;8819:21:1;8876:2;8856:18;;;8849:30;8915:34;8895:18;;;8888:62;-1:-1:-1;;;8966:18:1;;;8959:31;9007:19;;784:56:0;8635:397:1;1013:189:0;1099:7;1134:12;1127:5;1119:28;;;;-1:-1:-1;;;1119:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1158:9:0;1170:5;1174:1;1170;:5;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;383:260;;;;;:::o;648:328::-;725:6;733;741;794:2;782:9;773:7;769:23;765:32;762:52;;;810:1;807;800:12;762:52;833:29;852:9;833:29;:::i;:::-;823:39;;881:38;915:2;904:9;900:18;881:38;:::i;:::-;871:48;;966:2;955:9;951:18;938:32;928:42;;648:328;;;;;:::o;981:347::-;1046:6;1054;1107:2;1095:9;1086:7;1082:23;1078:32;1075:52;;;1123:1;1120;1113:12;1075:52;1146:29;1165:9;1146:29;:::i;:::-;1136:39;;1225:2;1214:9;1210:18;1197:32;1272:5;1265:13;1258:21;1251:5;1248:32;1238:60;;1294:1;1291;1284:12;1238:60;1317:5;1307:15;;;981:347;;;;;:::o;1333:254::-;1401:6;1409;1462:2;1450:9;1441:7;1437:23;1433:32;1430:52;;;1478:1;1475;1468:12;1430:52;1501:29;1520:9;1501:29;:::i;:::-;1491:39;1577:2;1562:18;;;;1549:32;;-1:-1:-1;;;1333:254:1:o;1592:592::-;1663:6;1671;1724:2;1712:9;1703:7;1699:23;1695:32;1692:52;;;1740:1;1737;1730:12;1692:52;1780:9;1767:23;1809:18;1850:2;1842:6;1839:14;1836:34;;;1866:1;1863;1856:12;1836:34;1904:6;1893:9;1889:22;1879:32;;1949:7;1942:4;1938:2;1934:13;1930:27;1920:55;;1971:1;1968;1961:12;1920:55;2011:2;1998:16;2037:2;2029:6;2026:14;2023:34;;;2053:1;2050;2043:12;2023:34;2098:7;2093:2;2084:6;2080:2;2076:15;2072:24;2069:37;2066:57;;;2119:1;2116;2109:12;2066:57;2150:2;2142:11;;;;;2172:6;;-1:-1:-1;1592:592:1;;-1:-1:-1;;;;1592:592:1:o;2189:180::-;2248:6;2301:2;2289:9;2280:7;2276:23;2272:32;2269:52;;;2317:1;2314;2307:12;2269:52;-1:-1:-1;2340:23:1;;2189:180;-1:-1:-1;2189:180:1:o;2374:306::-;2462:6;2470;2478;2531:2;2519:9;2510:7;2506:23;2502:32;2499:52;;;2547:1;2544;2537:12;2499:52;2576:9;2570:16;2560:26;;2626:2;2615:9;2611:18;2605:25;2595:35;;2670:2;2659:9;2655:18;2649:25;2639:35;;2374:306;;;;;:::o;4133:597::-;4245:4;4274:2;4303;4292:9;4285:21;4335:6;4329:13;4378:6;4373:2;4362:9;4358:18;4351:34;4403:1;4413:140;4427:6;4424:1;4421:13;4413:140;;;4522:14;;;4518:23;;4512:30;4488:17;;;4507:2;4484:26;4477:66;4442:10;;4413:140;;;4571:6;4568:1;4565:13;4562:91;;;4641:1;4636:2;4627:6;4616:9;4612:22;4608:31;4601:42;4562:91;-1:-1:-1;4714:2:1;4693:15;-1:-1:-1;;4689:29:1;4674:45;;;;4721:2;4670:54;;4133:597;-1:-1:-1;;;4133:597:1:o;5781:341::-;5983:2;5965:21;;;6022:2;6002:18;;;5995:30;-1:-1:-1;;;6056:2:1;6041:18;;6034:47;6113:2;6098:18;;5781:341::o;9037:356::-;9239:2;9221:21;;;9258:18;;;9251:30;9317:34;9312:2;9297:18;;9290:62;9384:2;9369:18;;9037:356::o;10703:980::-;10965:4;11013:3;11002:9;10998:19;11044:6;11033:9;11026:25;11070:2;11108:6;11103:2;11092:9;11088:18;11081:34;11151:3;11146:2;11135:9;11131:18;11124:31;11175:6;11210;11204:13;11241:6;11233;11226:22;11279:3;11268:9;11264:19;11257:26;;11318:2;11310:6;11306:15;11292:29;;11339:1;11349:195;11363:6;11360:1;11357:13;11349:195;;;11428:13;;-1:-1:-1;;;;;11424:39:1;11412:52;;11519:15;;;;11484:12;;;;11460:1;11378:9;11349:195;;;-1:-1:-1;;;;;;;11600:32:1;;;;11595:2;11580:18;;11573:60;-1:-1:-1;;;11664:3:1;11649:19;11642:35;11561:3;10703:980;-1:-1:-1;;;10703:980:1:o;11877:128::-;11917:3;11948:1;11944:6;11941:1;11938:13;11935:39;;;11954:18;;:::i;:::-;-1:-1:-1;11990:9:1;;11877:128::o;12010:217::-;12050:1;12076;12066:132;;12120:10;12115:3;12111:20;12108:1;12101:31;12155:4;12152:1;12145:15;12183:4;12180:1;12173:15;12066:132;-1:-1:-1;12212:9:1;;12010:217::o;12232:168::-;12272:7;12338:1;12334;12330:6;12326:14;12323:1;12320:21;12315:1;12308:9;12301:17;12297:45;12294:71;;;12345:18;;:::i;:::-;-1:-1:-1;12385:9:1;;12232:168::o;12405:125::-;12445:4;12473:1;12470;12467:8;12464:34;;;12478:18;;:::i;:::-;-1:-1:-1;12515:9:1;;12405:125::o;12535:380::-;12614:1;12610:12;;;;12657;;;12678:61;;12732:4;12724:6;12720:17;12710:27;;12678:61;12785:2;12777:6;12774:14;12754:18;12751:38;12748:161;;;12831:10;12826:3;12822:20;12819:1;12812:31;12866:4;12863:1;12856:15;12894:4;12891:1;12884:15;12748:161;;12535:380;;;:::o;12920:135::-;12959:3;-1:-1:-1;;12980:17:1;;12977:43;;;13000:18;;:::i;:::-;-1:-1:-1;13047:1:1;13036:13;;12920:135::o;13060:127::-;13121:10;13116:3;13112:20;13109:1;13102:31;13152:4;13149:1;13142:15;13176:4;13173:1;13166:15;13192:127;13253:10;13248:3;13244:20;13241:1;13234:31;13284:4;13281:1;13274:15;13308:4;13305:1;13298:15;13324:127;13385:10;13380:3;13376:20;13373:1;13366:31;13416:4;13413:1;13406:15;13440:4;13437:1;13430:15
Swarm Source
ipfs://0870b58d6b992f99772f938f76ce618c3f80f065481959645515dd0143e5c30d
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.