ERC-20
Overview
Max Total Supply
1,000,000,000 ZM
Holders
29
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1,631,015.591912306 ZMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
ZombieMongoose
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-12 */ /** https://t.me/zombiemongoose [¬º-°]¬ **/ pragma solidity ^0.8.7; /** * Standard SafeMath, stripped down to just add/sub/mul/div */ library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } /** * BEP20 standard interface. */ interface IBEP20 { 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); } /** * Allows for contract ownership along with multi-address authorization */ abstract contract Auth { address internal owner; constructor(address _owner) { owner = _owner; } /** * Function modifier to require caller to be contract deployer */ modifier onlyOwner() { require(isOwner(msg.sender), "!Owner"); _; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Transfer ownership to new address. Caller must be deployer. Leaves old deployer authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } 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 IDividendDistributor { function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function claimDividend(address shareholder) external; function setTreasury(address treasury) external; function getDividendsClaimedOf (address shareholder) external returns (uint256); } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address public _token; address public _owner; address public _treasury; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalClaimed; } address[] private shareholders; mapping (address => uint256) private shareholderIndexes; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalClaimed; uint256 public dividendsPerShare; uint256 private dividendsPerShareAccuracyFactor = 10 ** 36; modifier onlyToken() { require(msg.sender == _token); _; } modifier onlyOwner() { require(msg.sender == _owner); _; } constructor (address owner, address treasury) { _token = msg.sender; _owner = payable(owner); _treasury = payable(treasury); } // receive() external payable { } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override { uint256 amount = msg.value; totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getClaimableDividendOf(shareholder); if(amount > 0){ totalClaimed = totalClaimed.add(amount); shares[shareholder].totalClaimed = shares[shareholder].totalClaimed.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); payable(shareholder).transfer(amount); } } function claimDividend(address shareholder) external override onlyToken { distributeDividend(shareholder); } function getClaimableDividendOf(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } function manualSend(uint256 amount, address holder) external onlyOwner { uint256 contractETHBalance = address(this).balance; payable(holder).transfer(amount > 0 ? amount : contractETHBalance); } function setTreasury(address treasury) external override onlyToken { _treasury = payable(treasury); } function getDividendsClaimedOf (address shareholder) external override view returns (uint256) { require (shares[shareholder].amount > 0, "You're not a Zombie Mongoose shareholder!"); return shares[shareholder].totalClaimed; } } contract ZombieMongoose is IBEP20, Auth { using SafeMath for uint256; address private WETH; address private DEAD = 0x000000000000000000000000000000000000dEaD; address private ZERO = 0x0000000000000000000000000000000000000000; string private constant _name = "Zombie Mongoose"; string private constant _symbol = "ZM"; uint8 private constant _decimals = 9; uint256 private _totalSupply = 1000000000 * (10 ** _decimals); uint256 private _maxTxAmountBuy = _totalSupply; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private isFeeExempt; mapping (address => bool) private isDividendExempt; mapping (address => bool) private isBot; uint256 private totalFee = 14; uint256 private feeDenominator = 100; address payable public marketingWallet = payable(0x649f93c80B8aB118209F4a70e406bB226612fDEE); address payable public treasury = payable(0x649f93c80B8aB118209F4a70e406bB226612fDEE); IDEXRouter public router; address public pair; uint256 public launchedAt; bool private tradingOpen; bool private buyLimit = true; uint256 private maxBuy = 10000000 * (10 ** _decimals); DividendDistributor public distributor; bool private inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor ( ) Auth(0x5CAb5cF06BDaA3A2933CaB3c77D2518DfcBcc04a) { address _owner = 0x5CAb5cF06BDaA3A2933CaB3c77D2518DfcBcc04a; router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; distributor = new DividendDistributor(_owner, treasury); isFeeExempt[_owner] = true; isFeeExempt[marketingWallet] = true; isFeeExempt[treasury] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; _balances[_owner] = _totalSupply; emit Transfer(address(0), _owner, _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) { if (sender!= owner && recipient!= owner) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading require (!isBot[sender] && !isBot[recipient], "Nice try"); if (buyLimit) { if (sender!=owner && recipient!= owner) require (amount<=maxBuy, "Too much sir"); } if (block.number <= (launchedAt + 1)) { isBot[recipient] = true; isDividendExempt[recipient] = true; } if(inSwap){ return _basicTransfer(sender, recipient, amount); } bool shouldSwapBack = /*!inSwap &&*/ (recipient==pair && balanceOf(address(this)) > 0); if(shouldSwapBack){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); if(sender != pair && !isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} } if(recipient != pair && !isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} } 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; } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return ( !(isFeeExempt[sender] || isFeeExempt[recipient]) && (sender == pair || recipient == pair) ); } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount; feeAmount = amount.mul(totalFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function swapBack() internal swapping { uint256 amountToSwap = balanceOf(address(this)); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountTreasury = (address(this).balance).div(2); uint256 amountMarketing = (address(this).balance).div(2); payable(marketingWallet).transfer(amountMarketing); payable(treasury).transfer(amountTreasury); } function openTrading() external onlyOwner { launchedAt = block.number; tradingOpen = true; } function setBot(address _address) external onlyOwner { isBot[_address] = true; _setIsDividendExempt(_address, true); } function setBulkBots(address[] memory bots_) external onlyOwner { for (uint i = 0; i < bots_.length; i++) { isBot[bots_[i]] = true; _setIsDividendExempt(bots_[i], true); } } function delBulkBots(address[] memory bots_) external onlyOwner { for (uint i = 0; i < bots_.length; i++) { isBot[bots_[i]] = false; _setIsDividendExempt(bots_[i], false); } } function isInBot(address _address) external view onlyOwner returns (bool) { return isBot[_address]; } function _setIsDividendExempt(address holder, bool exempt) internal { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } function setIsDividendExempt(address holder, bool exempt) external onlyOwner { _setIsDividendExempt(holder, exempt); } function setIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function setFee (uint256 _fee) external onlyOwner { require (_fee <= 14, "Fee can't exceed 14%"); totalFee = _fee; } function manualSend() external onlyOwner { uint256 contractETHBalance = address(this).balance; payable(marketingWallet).transfer(contractETHBalance); } function claimDividend() external { distributor.claimDividend(msg.sender); } function claimDividend(address holder) external onlyOwner { distributor.claimDividend(holder); } function getClaimableDividendOf(address shareholder) public view returns (uint256) { return distributor.getClaimableDividendOf(shareholder); } function manualBurn(uint256 amount) external onlyOwner returns (bool) { return _basicTransfer(address(this), DEAD, amount); } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function setMarketingWallet(address _marketingWallet) external onlyOwner { marketingWallet = payable(_marketingWallet); } function setTreasury(address _treasury) external onlyOwner { treasury = payable(_treasury); distributor.setTreasury(_treasury); } function getTotalDividends() external view returns (uint256) { return distributor.totalDividends(); } function getTotalClaimed() external view returns (uint256) { return distributor.totalClaimed(); } function getDividendsClaimedOf (address shareholder) external view returns (uint256) { return distributor.getDividendsClaimedOf(shareholder); } function removeBuyLimit() external onlyOwner { buyLimit = false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"delBulkBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getClaimableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getDividendsClaimedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isInBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBulkBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","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":[{"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b031990811661dead17909155600380549091169055620000326009600a62000499565b6200004290633b9aca006200055a565b6004819055600555600e600b8190556064600c55600d80546001600160a01b031990811673649f93c80b8ab118209f4a70e406bb226612fdee9081179092558254161790556012805461ff001916610100179055620000a46009600a62000499565b620000b390629896806200055a565b601355348015620000c357600080fd5b5060008054735cab5cf06bdaa3a2933cab3c77d2518dfcbcc04a6001600160a01b03199182168117909255600f8054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b1580156200014457600080fd5b505afa15801562000159573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017f91906200041e565b600180546001600160a01b0319166001600160a01b03928316179055600f546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b158015620001d957600080fd5b505afa158015620001ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021491906200041e565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200026157600080fd5b505af115801562000276573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029c91906200041e565b601080546001600160a01b0319166001600160a01b03928316179055306000908152600760209081526040808320600f5485168452909152908190206000199055600e54905183929190911690620002f49062000410565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000328573d6000803e3d6000fd5b50601480546001600160a01b0319166001600160a01b039283161790558181166000818152600860209081526040808320805460ff199081166001908117909255600d54871685528285208054821683179055600e548716855282852080548216831790556010548716855260098452828520805482168317905530855282852080548216831790556002549096168452818420805490961617909455600454838352600682528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000592565b610d1680620025e583390190565b6000602082840312156200043157600080fd5b81516001600160a01b03811681146200044957600080fd5b9392505050565b600181815b80851115620004915781600019048211156200047557620004756200057c565b808516156200048357918102915b93841c939080029062000455565b509250929050565b60006200044960ff841683600082620004b55750600162000554565b81620004c45750600062000554565b8160018114620004dd5760028114620004e85762000508565b600191505062000554565b60ff841115620004fc57620004fc6200057c565b50506001821b62000554565b5060208310610133831016604e8410600b84101617156200052d575081810a62000554565b62000539838362000450565b80600019048211156200055057620005506200057c565b0290505b92915050565b60008160001904831182151516156200057757620005776200057c565b500290565b634e487b7160e01b600052601160045260246000fd5b61204380620005a26000396000f3fe6080604052600436106102345760003560e01c80636b5caec41161012e578063bf56b371116100ab578063f0fc6bca1161006f578063f0fc6bca146106e2578063f2fde38b146106f7578063f429389014610717578063f708a64f1461072c578063f887ea401461074c57600080fd5b8063bf56b37114610631578063bfe1092814610647578063c9567bf914610667578063dd62ed3e1461067c578063f0f44260146106c257600080fd5b80638ecc37fb116100f25780638ecc37fb1461058657806395d89b41146105a6578063a8aa1b31146105d1578063a9059cbb146105f1578063b89402a01461061157600080fd5b80636b5caec4146104dd57806370a08231146104fd578063736a83a11461053357806375f0a87414610548578063893d20e81461056857600080fd5b8063350fcdf9116101bc5780635d098b38116101805780635d098b381461043057806361d027b314610450578063658d4b7f1461048857806367ee5f09146104a857806369fe0e2d146104bd57600080fd5b8063350fcdf91461039b5780633e07ce5b146103bb578063416501c8146103d0578063571ac8b0146103f05780635cc33f741461041057600080fd5b806323b635851161020357806323b63585146102fb57806323b872dd1461031b5780632b112e491461033b5780632f54bf6e14610350578063313ce5671461037f57600080fd5b806306fdde0314610240578063095ea7b31461028a57806315f7e05e146102ba57806318160ddd146102dc57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5060408051808201909152600f81526e5a6f6d626965204d6f6e676f6f736560881b60208201525b6040516102819190611e45565b60405180910390f35b34801561029657600080fd5b506102aa6102a5366004611d1b565b61076c565b6040519015158152602001610281565b3480156102c657600080fd5b506102da6102d5366004611c51565b6107d9565b005b3480156102e857600080fd5b506004545b604051908152602001610281565b34801561030757600080fd5b506102aa610316366004611e13565b61086f565b34801561032757600080fd5b506102aa610336366004611ca7565b6108ba565b34801561034757600080fd5b506102ed61097c565b34801561035c57600080fd5b506102aa61036b366004611c51565b6000546001600160a01b0391821691161490565b34801561038b57600080fd5b5060405160098152602001610281565b3480156103a757600080fd5b506102da6103b6366004611d47565b6109ce565b3480156103c757600080fd5b506102da610a95565b3480156103dc57600080fd5b506102aa6103eb366004611c51565b610acc565b3480156103fc57600080fd5b506102aa61040b366004611c51565b610b16565b34801561041c57600080fd5b506102ed61042b366004611c51565b610b24565b34801561043c57600080fd5b506102da61044b366004611c51565b610ba3565b34801561045c57600080fd5b50600e54610470906001600160a01b031681565b6040516001600160a01b039091168152602001610281565b34801561049457600080fd5b506102da6104a3366004611ce8565b610bef565b3480156104b457600080fd5b506102ed610c44565b3480156104c957600080fd5b506102da6104d8366004611e13565b610cc1565b3480156104e957600080fd5b506102da6104f8366004611c51565b610d38565b34801561050957600080fd5b506102ed610518366004611c51565b6001600160a01b031660009081526006602052604090205490565b34801561053f57600080fd5b506102ed610d96565b34801561055457600080fd5b50600d54610470906001600160a01b031681565b34801561057457600080fd5b506000546001600160a01b0316610470565b34801561059257600080fd5b506102ed6105a1366004611c51565b610ddb565b3480156105b257600080fd5b506040805180820190915260028152615a4d60f01b6020820152610274565b3480156105dd57600080fd5b50601054610470906001600160a01b031681565b3480156105fd57600080fd5b506102aa61060c366004611d1b565b610e0e565b34801561061d57600080fd5b506102da61062c366004611d47565b610e1b565b34801561063d57600080fd5b506102ed60115481565b34801561065357600080fd5b50601454610470906001600160a01b031681565b34801561067357600080fd5b506102da610ede565b34801561068857600080fd5b506102ed610697366004611c6e565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156106ce57600080fd5b506102da6106dd366004611c51565b610f1b565b3480156106ee57600080fd5b506102da610f8e565b34801561070357600080fd5b506102da610712366004611c51565b610fed565b34801561072357600080fd5b506102da61106b565b34801561073857600080fd5b506102da610747366004611ce8565b6110cf565b34801561075857600080fd5b50600f54610470906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107c79086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461080c5760405162461bcd60e51b815260040161080390611e9a565b60405180910390fd5b601454604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e906024015b600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b5050505050565b600080546001600160a01b0316331461089a5760405162461bcd60e51b815260040161080390611e9a565b6002546108b29030906001600160a01b031684611103565b90505b919050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610967576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546109429184906111e9565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610972848484611223565b90505b9392505050565b6003546001600160a01b03166000908152600660205260408120546109c9906002546001600160a01b03166000908152600660205260409020546109c390600454906116cd565b906116cd565b905090565b6000546001600160a01b031633146109f85760405162461bcd60e51b815260040161080390611e9a565b60005b8151811015610a91576000600a6000848481518110610a1c57610a1c611fcc565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550610a7f828281518110610a7057610a70611fcc565b6020026020010151600061170f565b80610a8981611f9b565b9150506109fb565b5050565b6000546001600160a01b03163314610abf5760405162461bcd60e51b815260040161080390611e9a565b6012805461ff0019169055565b600080546001600160a01b03163314610af75760405162461bcd60e51b815260040161080390611e9a565b506001600160a01b03166000908152600a602052604090205460ff1690565b60006108b28260001961076c565b601454604051631730cfdd60e21b81526001600160a01b0383811660048301526000921690635cc33f74906024015b60206040518083038186803b158015610b6b57600080fd5b505afa158015610b7f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b29190611e2c565b6000546001600160a01b03163314610bcd5760405162461bcd60e51b815260040161080390611e9a565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610c195760405162461bcd60e51b815260040161080390611e9a565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6014546040805163997664d760e01b815290516000926001600160a01b03169163997664d7916004808301926020929190829003018186803b158015610c8957600080fd5b505afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611e2c565b6000546001600160a01b03163314610ceb5760405162461bcd60e51b815260040161080390611e9a565b600e811115610d335760405162461bcd60e51b81526020600482015260146024820152734665652063616e2774206578636565642031342560601b6044820152606401610803565b600b55565b6000546001600160a01b03163314610d625760405162461bcd60e51b815260040161080390611e9a565b6001600160a01b0381166000908152600a60205260409020805460ff19166001908117909155610d9390829061170f565b50565b6014546040805163d54ad2a160e01b815290516000926001600160a01b03169163d54ad2a1916004808301926020929190829003018186803b158015610c8957600080fd5b601454604051638ecc37fb60e01b81526001600160a01b0383811660048301526000921690638ecc37fb90602401610b53565b6000610975338484611223565b6000546001600160a01b03163314610e455760405162461bcd60e51b815260040161080390611e9a565b60005b8151811015610a91576001600a6000848481518110610e6957610e69611fcc565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550610ecc828281518110610ebd57610ebd611fcc565b6020026020010151600161170f565b80610ed681611f9b565b915050610e48565b6000546001600160a01b03163314610f085760405162461bcd60e51b815260040161080390611e9a565b436011556012805460ff19166001179055565b6000546001600160a01b03163314610f455760405162461bcd60e51b815260040161080390611e9a565b600e80546001600160a01b0319166001600160a01b03838116918217909255601454604051630787a21360e51b815260048101929092529091169063f0f442609060240161083a565b601454604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610fd357600080fd5b505af1158015610fe7573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146110175760405162461bcd60e51b815260040161080390611e9a565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146110955760405162461bcd60e51b815260040161080390611e9a565b600d5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610a91573d6000803e3d6000fd5b6000546001600160a01b031633146110f95760405162461bcd60e51b815260040161080390611e9a565b610a91828261170f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546111549184906111e9565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546111839083611820565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111d79086815260200190565b60405180910390a35060019392505050565b6000818484111561120d5760405162461bcd60e51b81526004016108039190611e45565b50600061121a8486611f84565b95945050505050565b600080546001600160a01b0385811691161480159061125057506000546001600160a01b03848116911614155b156112a75760125460ff166112a75760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610803565b6001600160a01b0384166000908152600a602052604090205460ff161580156112e957506001600160a01b0383166000908152600a602052604090205460ff16155b6113205760405162461bcd60e51b81526020600482015260086024820152674e6963652074727960c01b6044820152606401610803565b601254610100900460ff16156113a2576000546001600160a01b0385811691161480159061135c57506000546001600160a01b03848116911614155b156113a2576013548211156113a25760405162461bcd60e51b815260206004820152600c60248201526b2a37b79036bab1b41039b4b960a11b6044820152606401610803565b6011546113b0906001611f2b565b43116113f2576001600160a01b0383166000908152600a602090815260408083208054600160ff19918216811790925560099093529220805490911690911790555b601454600160a01b900460ff16156114165761140f848484611103565b9050610975565b6010546000906001600160a01b038581169116148015611443575030600090815260066020526040812054115b905080156114535761145361187f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600690915291909120546114a59185906111e9565b6001600160a01b0386166000908152600660205260408120919091556114cb8686611a36565b6114d557836114df565b6114df8685611aab565b6001600160a01b0386166000908152600660205260409020549091506115059082611820565b6001600160a01b0380871660009081526006602052604090209190915560105487821691161480159061155157506001600160a01b03861660009081526009602052604090205460ff16155b156115c7576014546001600160a01b0387811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156115b457600080fd5b505af19250505080156115c5575060015b505b6010546001600160a01b038681169116148015906115fe57506001600160a01b03851660009081526009602052604090205460ff16155b15611674576014546001600160a01b0386811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561166157600080fd5b505af1925050508015611672575060015b505b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116b991815260200190565b60405180910390a350600195945050505050565b600061097583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111e9565b6001600160a01b038216301480159061173657506010546001600160a01b03838116911614155b61173f57600080fd5b6001600160a01b0382166000908152600960205260409020805460ff191682158015919091179091556117d757601454604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b1580156117bb57600080fd5b505af11580156117cf573d6000803e3d6000fd5b505050505050565b6014546001600160a01b0383811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016117a1565b60008061182d8385611f2b565b9050838110156109755760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610803565b6014805460ff60a01b1916600160a01b17905530600090815260066020526040812054604080516002808252606082019092529192506000919081602001602082028036833701905050905030816000815181106118df576118df611fcc565b6001600160a01b039283166020918202929092010152600180548351921691839190811061190f5761190f611fcc565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b815291169063791ac94790611955908590600090869030904290600401611eba565b600060405180830381600087803b15801561196f57600080fd5b505af1158015611983573d6000803e3d6000fd5b50505050600061199d600247611b5790919063ffffffff16565b905060006119ac476002611b57565b600d546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156119e7573d6000803e3d6000fd5b50600e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611a22573d6000803e3d6000fd5b50506014805460ff60a01b19169055505050565b6001600160a01b03821660009081526008602052604081205460ff1680611a7557506001600160a01b03821660009081526008602052604090205460ff165b15801561097557506010546001600160a01b03848116911614806109755750506010546001600160a01b03908116911614919050565b600080611acf600c54611ac9600b5486611b9990919063ffffffff16565b90611b57565b30600090815260066020526040902054909150611aec9082611820565b30600081815260066020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b3d9085815260200190565b60405180910390a3611b4f83826116cd565b949350505050565b600061097583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c18565b600082611ba8575060006107d3565b6000611bb48385611f65565b905082611bc18583611f43565b146109755760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610803565b60008183611c395760405162461bcd60e51b81526004016108039190611e45565b50600061121a8486611f43565b80356108b581611ff8565b600060208284031215611c6357600080fd5b813561097581611ff8565b60008060408385031215611c8157600080fd5b8235611c8c81611ff8565b91506020830135611c9c81611ff8565b809150509250929050565b600080600060608486031215611cbc57600080fd5b8335611cc781611ff8565b92506020840135611cd781611ff8565b929592945050506040919091013590565b60008060408385031215611cfb57600080fd5b8235611d0681611ff8565b915060208301358015158114611c9c57600080fd5b60008060408385031215611d2e57600080fd5b8235611d3981611ff8565b946020939093013593505050565b60006020808385031215611d5a57600080fd5b823567ffffffffffffffff80821115611d7257600080fd5b818501915085601f830112611d8657600080fd5b813581811115611d9857611d98611fe2565b8060051b604051601f19603f83011681018181108582111715611dbd57611dbd611fe2565b604052828152858101935084860182860187018a1015611ddc57600080fd5b600095505b83861015611e0657611df281611c46565b855260019590950194938601938601611de1565b5098975050505050505050565b600060208284031215611e2557600080fd5b5035919050565b600060208284031215611e3e57600080fd5b5051919050565b600060208083528351808285015260005b81811015611e7257858101830151858201604001528201611e56565b81811115611e84576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7bbb732b960d11b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f0a5784516001600160a01b031683529383019391830191600101611ee5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f3e57611f3e611fb6565b500190565b600082611f6057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f7f57611f7f611fb6565b500290565b600082821015611f9657611f96611fb6565b500390565b6000600019821415611faf57611faf611fb6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610d9357600080fdfea26469706673582212201393de248481b42722494bd8581c0662d6b07658921bbfca468ca701943f0e0964736f6c6343000807003360806040526ec097ce7bc90715b34b9f1000000000600a5534801561002357600080fd5b50604051610d16380380610d168339810160408190526100429161009a565b600080546001600160a01b03199081163317909155600180546001600160a01b03948516908316179055600280549290931691161790556100cd565b80516001600160a01b038116811461009557600080fd5b919050565b600080604083850312156100ad57600080fd5b6100b68361007e565b91506100c46020840161007e565b90509250929050565b610c3a806100dc6000396000f3fe6080604052600436106100e85760003560e01c8063b2bdfa7b1161008a578063e2d2e21911610059578063e2d2e2191461027b578063e319a3d914610291578063ecd0c0c3146102b1578063f0f44260146102d157600080fd5b8063b2bdfa7b146101ce578063ce7c2ac214610206578063d0e30db01461025d578063d54ad2a11461026557600080fd5b80633a98ef39116100c65780633a98ef391461014f5780635cc33f74146101785780638ecc37fb14610198578063997664d7146101b857600080fd5b80631014edf5146100ed57806314b6ca961461010f57806315f7e05e1461012f575b600080fd5b3480156100f957600080fd5b5061010d610108366004610ad1565b6102f1565b005b34801561011b57600080fd5b5061010d61012a366004610aa7565b610351565b34801561013b57600080fd5b5061010d61014a366004610a8c565b6104c9565b34801561015b57600080fd5b5061016560065481565b6040519081526020015b60405180910390f35b34801561018457600080fd5b50610165610193366004610a8c565b6104ec565b3480156101a457600080fd5b506101656101b3366004610a8c565b610587565b3480156101c457600080fd5b5061016560075481565b3480156101da57600080fd5b506001546101ee906001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b34801561021257600080fd5b50610242610221366004610a8c565b60056020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161016f565b61010d610610565b34801561027157600080fd5b5061016560085481565b34801561028757600080fd5b5061016560095481565b34801561029d57600080fd5b506002546101ee906001600160a01b031681565b3480156102bd57600080fd5b506000546101ee906001600160a01b031681565b3480156102dd57600080fd5b5061010d6102ec366004610a8c565b61064f565b6001546001600160a01b0316331461030857600080fd5b476001600160a01b0382166108fc846103215782610323565b845b6040518115909202916000818181858888f1935050505015801561034b573d6000803e3d6000fd5b50505050565b6000546001600160a01b0316331461036857600080fd5b6001600160a01b0382166000908152600560205260409020541561038f5761038f82610688565b6000811180156103b557506001600160a01b038216600090815260056020526040902054155b1561041b57600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916909117905561044e565b8015801561044057506001600160a01b03821660009081526005602052604090205415155b1561044e5761044e8261076b565b6001600160a01b03821660009081526005602052604090205460065461047f91839161047991610880565b906108cb565b6006556001600160a01b03821660009081526005602052604090208190556104a68161092a565b6001600160a01b0390921660009081526005602052604090206001019190915550565b6000546001600160a01b031633146104e057600080fd5b6104e981610688565b50565b6001600160a01b0381166000908152600560205260408120546105685760405162461bcd60e51b815260206004820152602960248201527f596f75277265206e6f742061205a6f6d626965204d6f6e676f6f7365207368616044820152687265686f6c6465722160b81b60648201526084015b60405180910390fd5b506001600160a01b031660009081526005602052604090206002015490565b6001600160a01b0381166000908152600560205260408120546105ac57506000919050565b6001600160a01b0382166000908152600560205260408120546105ce9061092a565b6001600160a01b0384166000908152600560205260409020600101549091508082116105fe575060009392505050565b6106088282610880565b949350505050565b600754349061061f90826108cb565b600755600654600a54610649916106409161063a9085610947565b906109c6565b600954906108cb565b60095550565b6000546001600160a01b0316331461066657600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020546106a85750565b60006106b382610587565b90508015610767576008546106c890826108cb565b6008556001600160a01b0382166000908152600560205260409020600201546106f190826108cb565b6001600160a01b038316600090815260056020526040902060028101919091555461071b9061092a565b6001600160a01b038316600081815260056020526040808220600101939093559151909183156108fc02918491818181858888f19350505050158015610765573d6000803e3d6000fd5b505b5050565b6003805461077b90600190610bab565b8154811061078b5761078b610bee565b60009182526020808320909101546001600160a01b03848116845260049092526040909220546003805492909316929181106107c9576107c9610bee565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526004918290526040812054600380549193929161081590600190610bab565b8154811061082557610825610bee565b60009182526020808320909101546001600160a01b03168352820192909252604001902055600380548061085b5761085b610bd8565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60006108c283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a08565b90505b92915050565b6000806108d88385610b52565b9050838110156108c25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161055f565b60006108c5600a5461063a6009548561094790919063ffffffff16565b600082610956575060006108c5565b60006109628385610b8c565b90508261096f8583610b6a565b146108c25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161055f565b60006108c283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610a42565b60008184841115610a2c5760405162461bcd60e51b815260040161055f9190610afd565b506000610a398486610bab565b95945050505050565b60008183610a635760405162461bcd60e51b815260040161055f9190610afd565b506000610a398486610b6a565b80356001600160a01b0381168114610a8757600080fd5b919050565b600060208284031215610a9e57600080fd5b6108c282610a70565b60008060408385031215610aba57600080fd5b610ac383610a70565b946020939093013593505050565b60008060408385031215610ae457600080fd5b82359150610af460208401610a70565b90509250929050565b600060208083528351808285015260005b81811015610b2a57858101830151858201604001528201610b0e565b81811115610b3c576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610b6557610b65610bc2565b500190565b600082610b8757634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610ba657610ba6610bc2565b500290565b600082821015610bbd57610bbd610bc2565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212202f7affcb6cba8c5cc95e26fae9fb182e2b29575e849287952e0cab2c1f40df9564736f6c63430008070033
Deployed Bytecode
0x6080604052600436106102345760003560e01c80636b5caec41161012e578063bf56b371116100ab578063f0fc6bca1161006f578063f0fc6bca146106e2578063f2fde38b146106f7578063f429389014610717578063f708a64f1461072c578063f887ea401461074c57600080fd5b8063bf56b37114610631578063bfe1092814610647578063c9567bf914610667578063dd62ed3e1461067c578063f0f44260146106c257600080fd5b80638ecc37fb116100f25780638ecc37fb1461058657806395d89b41146105a6578063a8aa1b31146105d1578063a9059cbb146105f1578063b89402a01461061157600080fd5b80636b5caec4146104dd57806370a08231146104fd578063736a83a11461053357806375f0a87414610548578063893d20e81461056857600080fd5b8063350fcdf9116101bc5780635d098b38116101805780635d098b381461043057806361d027b314610450578063658d4b7f1461048857806367ee5f09146104a857806369fe0e2d146104bd57600080fd5b8063350fcdf91461039b5780633e07ce5b146103bb578063416501c8146103d0578063571ac8b0146103f05780635cc33f741461041057600080fd5b806323b635851161020357806323b63585146102fb57806323b872dd1461031b5780632b112e491461033b5780632f54bf6e14610350578063313ce5671461037f57600080fd5b806306fdde0314610240578063095ea7b31461028a57806315f7e05e146102ba57806318160ddd146102dc57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5060408051808201909152600f81526e5a6f6d626965204d6f6e676f6f736560881b60208201525b6040516102819190611e45565b60405180910390f35b34801561029657600080fd5b506102aa6102a5366004611d1b565b61076c565b6040519015158152602001610281565b3480156102c657600080fd5b506102da6102d5366004611c51565b6107d9565b005b3480156102e857600080fd5b506004545b604051908152602001610281565b34801561030757600080fd5b506102aa610316366004611e13565b61086f565b34801561032757600080fd5b506102aa610336366004611ca7565b6108ba565b34801561034757600080fd5b506102ed61097c565b34801561035c57600080fd5b506102aa61036b366004611c51565b6000546001600160a01b0391821691161490565b34801561038b57600080fd5b5060405160098152602001610281565b3480156103a757600080fd5b506102da6103b6366004611d47565b6109ce565b3480156103c757600080fd5b506102da610a95565b3480156103dc57600080fd5b506102aa6103eb366004611c51565b610acc565b3480156103fc57600080fd5b506102aa61040b366004611c51565b610b16565b34801561041c57600080fd5b506102ed61042b366004611c51565b610b24565b34801561043c57600080fd5b506102da61044b366004611c51565b610ba3565b34801561045c57600080fd5b50600e54610470906001600160a01b031681565b6040516001600160a01b039091168152602001610281565b34801561049457600080fd5b506102da6104a3366004611ce8565b610bef565b3480156104b457600080fd5b506102ed610c44565b3480156104c957600080fd5b506102da6104d8366004611e13565b610cc1565b3480156104e957600080fd5b506102da6104f8366004611c51565b610d38565b34801561050957600080fd5b506102ed610518366004611c51565b6001600160a01b031660009081526006602052604090205490565b34801561053f57600080fd5b506102ed610d96565b34801561055457600080fd5b50600d54610470906001600160a01b031681565b34801561057457600080fd5b506000546001600160a01b0316610470565b34801561059257600080fd5b506102ed6105a1366004611c51565b610ddb565b3480156105b257600080fd5b506040805180820190915260028152615a4d60f01b6020820152610274565b3480156105dd57600080fd5b50601054610470906001600160a01b031681565b3480156105fd57600080fd5b506102aa61060c366004611d1b565b610e0e565b34801561061d57600080fd5b506102da61062c366004611d47565b610e1b565b34801561063d57600080fd5b506102ed60115481565b34801561065357600080fd5b50601454610470906001600160a01b031681565b34801561067357600080fd5b506102da610ede565b34801561068857600080fd5b506102ed610697366004611c6e565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156106ce57600080fd5b506102da6106dd366004611c51565b610f1b565b3480156106ee57600080fd5b506102da610f8e565b34801561070357600080fd5b506102da610712366004611c51565b610fed565b34801561072357600080fd5b506102da61106b565b34801561073857600080fd5b506102da610747366004611ce8565b6110cf565b34801561075857600080fd5b50600f54610470906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107c79086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461080c5760405162461bcd60e51b815260040161080390611e9a565b60405180910390fd5b601454604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e906024015b600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b5050505050565b600080546001600160a01b0316331461089a5760405162461bcd60e51b815260040161080390611e9a565b6002546108b29030906001600160a01b031684611103565b90505b919050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610967576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546109429184906111e9565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610972848484611223565b90505b9392505050565b6003546001600160a01b03166000908152600660205260408120546109c9906002546001600160a01b03166000908152600660205260409020546109c390600454906116cd565b906116cd565b905090565b6000546001600160a01b031633146109f85760405162461bcd60e51b815260040161080390611e9a565b60005b8151811015610a91576000600a6000848481518110610a1c57610a1c611fcc565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550610a7f828281518110610a7057610a70611fcc565b6020026020010151600061170f565b80610a8981611f9b565b9150506109fb565b5050565b6000546001600160a01b03163314610abf5760405162461bcd60e51b815260040161080390611e9a565b6012805461ff0019169055565b600080546001600160a01b03163314610af75760405162461bcd60e51b815260040161080390611e9a565b506001600160a01b03166000908152600a602052604090205460ff1690565b60006108b28260001961076c565b601454604051631730cfdd60e21b81526001600160a01b0383811660048301526000921690635cc33f74906024015b60206040518083038186803b158015610b6b57600080fd5b505afa158015610b7f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b29190611e2c565b6000546001600160a01b03163314610bcd5760405162461bcd60e51b815260040161080390611e9a565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610c195760405162461bcd60e51b815260040161080390611e9a565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6014546040805163997664d760e01b815290516000926001600160a01b03169163997664d7916004808301926020929190829003018186803b158015610c8957600080fd5b505afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611e2c565b6000546001600160a01b03163314610ceb5760405162461bcd60e51b815260040161080390611e9a565b600e811115610d335760405162461bcd60e51b81526020600482015260146024820152734665652063616e2774206578636565642031342560601b6044820152606401610803565b600b55565b6000546001600160a01b03163314610d625760405162461bcd60e51b815260040161080390611e9a565b6001600160a01b0381166000908152600a60205260409020805460ff19166001908117909155610d9390829061170f565b50565b6014546040805163d54ad2a160e01b815290516000926001600160a01b03169163d54ad2a1916004808301926020929190829003018186803b158015610c8957600080fd5b601454604051638ecc37fb60e01b81526001600160a01b0383811660048301526000921690638ecc37fb90602401610b53565b6000610975338484611223565b6000546001600160a01b03163314610e455760405162461bcd60e51b815260040161080390611e9a565b60005b8151811015610a91576001600a6000848481518110610e6957610e69611fcc565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550610ecc828281518110610ebd57610ebd611fcc565b6020026020010151600161170f565b80610ed681611f9b565b915050610e48565b6000546001600160a01b03163314610f085760405162461bcd60e51b815260040161080390611e9a565b436011556012805460ff19166001179055565b6000546001600160a01b03163314610f455760405162461bcd60e51b815260040161080390611e9a565b600e80546001600160a01b0319166001600160a01b03838116918217909255601454604051630787a21360e51b815260048101929092529091169063f0f442609060240161083a565b601454604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610fd357600080fd5b505af1158015610fe7573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146110175760405162461bcd60e51b815260040161080390611e9a565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146110955760405162461bcd60e51b815260040161080390611e9a565b600d5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610a91573d6000803e3d6000fd5b6000546001600160a01b031633146110f95760405162461bcd60e51b815260040161080390611e9a565b610a91828261170f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546111549184906111e9565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546111839083611820565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111d79086815260200190565b60405180910390a35060019392505050565b6000818484111561120d5760405162461bcd60e51b81526004016108039190611e45565b50600061121a8486611f84565b95945050505050565b600080546001600160a01b0385811691161480159061125057506000546001600160a01b03848116911614155b156112a75760125460ff166112a75760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610803565b6001600160a01b0384166000908152600a602052604090205460ff161580156112e957506001600160a01b0383166000908152600a602052604090205460ff16155b6113205760405162461bcd60e51b81526020600482015260086024820152674e6963652074727960c01b6044820152606401610803565b601254610100900460ff16156113a2576000546001600160a01b0385811691161480159061135c57506000546001600160a01b03848116911614155b156113a2576013548211156113a25760405162461bcd60e51b815260206004820152600c60248201526b2a37b79036bab1b41039b4b960a11b6044820152606401610803565b6011546113b0906001611f2b565b43116113f2576001600160a01b0383166000908152600a602090815260408083208054600160ff19918216811790925560099093529220805490911690911790555b601454600160a01b900460ff16156114165761140f848484611103565b9050610975565b6010546000906001600160a01b038581169116148015611443575030600090815260066020526040812054115b905080156114535761145361187f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600690915291909120546114a59185906111e9565b6001600160a01b0386166000908152600660205260408120919091556114cb8686611a36565b6114d557836114df565b6114df8685611aab565b6001600160a01b0386166000908152600660205260409020549091506115059082611820565b6001600160a01b0380871660009081526006602052604090209190915560105487821691161480159061155157506001600160a01b03861660009081526009602052604090205460ff16155b156115c7576014546001600160a01b0387811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156115b457600080fd5b505af19250505080156115c5575060015b505b6010546001600160a01b038681169116148015906115fe57506001600160a01b03851660009081526009602052604090205460ff16155b15611674576014546001600160a01b0386811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561166157600080fd5b505af1925050508015611672575060015b505b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116b991815260200190565b60405180910390a350600195945050505050565b600061097583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111e9565b6001600160a01b038216301480159061173657506010546001600160a01b03838116911614155b61173f57600080fd5b6001600160a01b0382166000908152600960205260409020805460ff191682158015919091179091556117d757601454604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b1580156117bb57600080fd5b505af11580156117cf573d6000803e3d6000fd5b505050505050565b6014546001600160a01b0383811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016117a1565b60008061182d8385611f2b565b9050838110156109755760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610803565b6014805460ff60a01b1916600160a01b17905530600090815260066020526040812054604080516002808252606082019092529192506000919081602001602082028036833701905050905030816000815181106118df576118df611fcc565b6001600160a01b039283166020918202929092010152600180548351921691839190811061190f5761190f611fcc565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b815291169063791ac94790611955908590600090869030904290600401611eba565b600060405180830381600087803b15801561196f57600080fd5b505af1158015611983573d6000803e3d6000fd5b50505050600061199d600247611b5790919063ffffffff16565b905060006119ac476002611b57565b600d546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156119e7573d6000803e3d6000fd5b50600e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611a22573d6000803e3d6000fd5b50506014805460ff60a01b19169055505050565b6001600160a01b03821660009081526008602052604081205460ff1680611a7557506001600160a01b03821660009081526008602052604090205460ff165b15801561097557506010546001600160a01b03848116911614806109755750506010546001600160a01b03908116911614919050565b600080611acf600c54611ac9600b5486611b9990919063ffffffff16565b90611b57565b30600090815260066020526040902054909150611aec9082611820565b30600081815260066020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b3d9085815260200190565b60405180910390a3611b4f83826116cd565b949350505050565b600061097583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c18565b600082611ba8575060006107d3565b6000611bb48385611f65565b905082611bc18583611f43565b146109755760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610803565b60008183611c395760405162461bcd60e51b81526004016108039190611e45565b50600061121a8486611f43565b80356108b581611ff8565b600060208284031215611c6357600080fd5b813561097581611ff8565b60008060408385031215611c8157600080fd5b8235611c8c81611ff8565b91506020830135611c9c81611ff8565b809150509250929050565b600080600060608486031215611cbc57600080fd5b8335611cc781611ff8565b92506020840135611cd781611ff8565b929592945050506040919091013590565b60008060408385031215611cfb57600080fd5b8235611d0681611ff8565b915060208301358015158114611c9c57600080fd5b60008060408385031215611d2e57600080fd5b8235611d3981611ff8565b946020939093013593505050565b60006020808385031215611d5a57600080fd5b823567ffffffffffffffff80821115611d7257600080fd5b818501915085601f830112611d8657600080fd5b813581811115611d9857611d98611fe2565b8060051b604051601f19603f83011681018181108582111715611dbd57611dbd611fe2565b604052828152858101935084860182860187018a1015611ddc57600080fd5b600095505b83861015611e0657611df281611c46565b855260019590950194938601938601611de1565b5098975050505050505050565b600060208284031215611e2557600080fd5b5035919050565b600060208284031215611e3e57600080fd5b5051919050565b600060208083528351808285015260005b81811015611e7257858101830151858201604001528201611e56565b81811115611e84576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7bbb732b960d11b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f0a5784516001600160a01b031683529383019391830191600101611ee5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f3e57611f3e611fb6565b500190565b600082611f6057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f7f57611f7f611fb6565b500290565b600082821015611f9657611f96611fb6565b500390565b6000600019821415611faf57611faf611fb6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610d9357600080fdfea26469706673582212201393de248481b42722494bd8581c0662d6b07658921bbfca468ca701943f0e0964736f6c63430008070033
Deployed Bytecode Sourcemap
9479:10419:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12171:80;;;;;;;;;;-1:-1:-1;12243:5:0;;;;;;;;;;;;-1:-1:-1;;;12243:5:0;;;;12171:80;;;;;;;:::i;:::-;;;;;;;;12593:216;;;;;;;;;;-1:-1:-1;12593:216:0;;;;;:::i;:::-;;:::i;:::-;;;5150:14:1;;5143:22;5125:41;;5113:2;5098:18;12593:216:0;4985:187:1;18509:110:0;;;;;;;;;;-1:-1:-1;18509:110:0;;;;;:::i;:::-;;:::i;:::-;;11901:88;;;;;;;;;;-1:-1:-1;11974:12:0;;11901:88;;;8857:25:1;;;8845:2;8830:18;11901:88:0;8711:177:1;18799:139:0;;;;;;;;;;-1:-1:-1;18799:139:0;;;;;:::i;:::-;;:::i;13111:370::-;;;;;;;;;;-1:-1:-1;13111:370:0;;;;;:::i;:::-;;:::i;18950:142::-;;;;;;;;;;;;;:::i;2849:103::-;;;;;;;;;;-1:-1:-1;2849:103:0;;;;;:::i;:::-;2904:4;2939:5;-1:-1:-1;;;;;2928:16:0;;;2939:5;;2928:16;;2849:103;11995:80;;;;;;;;;;-1:-1:-1;11995:80:0;;9871:1;10020:36:1;;10008:2;9993:18;11995:80:0;9878:184:1;17109:218:0;;;;;;;;;;-1:-1:-1;17109:218:0;;;;;:::i;:::-;;:::i;19815:80::-;;;;;;;;;;;;;:::i;17335:115::-;;;;;;;;;;-1:-1:-1;17335:115:0;;;;;:::i;:::-;;:::i;12817:122::-;;;;;;;;;;-1:-1:-1;12817:122:0;;;;;:::i;:::-;;:::i;19650:157::-;;;;;;;;;;-1:-1:-1;19650:157:0;;;;;:::i;:::-;;:::i;19100:135::-;;;;;;;;;;-1:-1:-1;19100:135:0;;;;;:::i;:::-;;:::i;10486:85::-;;;;;;;;;;-1:-1:-1;10486:85:0;;;;-1:-1:-1;;;;;10486:85:0;;;;;;-1:-1:-1;;;;;3935:32:1;;;3917:51;;3905:2;3890:18;10486:85:0;3771:203:1;17947:119:0;;;;;;;;;;-1:-1:-1;17947:119:0;;;;;:::i;:::-;;:::i;19403:115::-;;;;;;;;;;;;;:::i;18074:139::-;;;;;;;;;;-1:-1:-1;18074:139:0;;;;;:::i;:::-;;:::i;16730:141::-;;;;;;;;;;-1:-1:-1;16730:141:0;;;;;:::i;:::-;;:::i;12341:105::-;;;;;;;;;;-1:-1:-1;12341:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;12425:18:0;12407:7;12425:18;;;:9;:18;;;;;;;12341:105;19530:111;;;;;;;;;;;;;:::i;10387:92::-;;;;;;;;;;-1:-1:-1;10387:92:0;;;;-1:-1:-1;;;;;10387:92:0;;;12257:78;;;;;;;;;;-1:-1:-1;12309:7:0;12327:5;-1:-1:-1;;;;;12327:5:0;12257:78;;18631:156;;;;;;;;;;-1:-1:-1;18631:156:0;;;;;:::i;:::-;;:::i;12081:84::-;;;;;;;;;;-1:-1:-1;12155:7:0;;;;;;;;;;;;-1:-1:-1;;;12155:7:0;;;;12081:84;;10611:19;;;;;;;;;;-1:-1:-1;10611:19:0;;;;-1:-1:-1;;;;;10611:19:0;;;12947:156;;;;;;;;;;-1:-1:-1;12947:156:0;;;;;:::i;:::-;;:::i;16883:216::-;;;;;;;;;;-1:-1:-1;16883:216:0;;;;;:::i;:::-;;:::i;10639:25::-;;;;;;;;;;;;;;;;10799:38;;;;;;;;;;-1:-1:-1;10799:38:0;;;;-1:-1:-1;;;;;10799:38:0;;;16595:115;;;;;;;;;;;;;:::i;12452:133::-;;;;;;;;;;-1:-1:-1;12452:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12554:19:0;;;12536:7;12554:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12452:133;19243:152;;;;;;;;;;-1:-1:-1;19243:152:0;;;;;:::i;:::-;;:::i;18407:90::-;;;;;;;;;;;;;:::i;3077:136::-;;;;;;;;;;-1:-1:-1;3077:136:0;;;;;:::i;:::-;;:::i;18225:174::-;;;;;;;;;;;;;:::i;17807:132::-;;;;;;;;;;-1:-1:-1;17807:132:0;;;;;:::i;:::-;;:::i;10580:24::-;;;;;;;;;;-1:-1:-1;10580:24:0;;;;-1:-1:-1;;;;;10580:24:0;;;12593:216;12697:10;12668:4;12685:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12685:32:0;;;;;;;;;;:41;;;12742:37;12668:4;;12685:32;;12742:37;;;;12720:6;8857:25:1;;8845:2;8830:18;;8711:177;12742:37:0;;;;;;;;-1:-1:-1;12797:4:0;12593:216;;;;;:::o;18509:110::-;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;;;;;;;;;18578:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;18578:33:0;;-1:-1:-1;;;;;3935:32:1;;;18578:33:0::1;::::0;::::1;3917:51:1::0;18578:11:0;;::::1;::::0;:25:::1;::::0;3890:18:1;;18578:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18509:110:::0;:::o;18799:139::-;18863:4;2939:5;;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;18917:4:::1;::::0;18887:43:::1;::::0;18910:4:::1;::::0;-1:-1:-1;;;;;18917:4:0::1;18923:6:::0;18887:14:::1;:43::i;:::-;18880:50;;2780:1;18799:139:::0;;;:::o;13111:370::-;-1:-1:-1;;;;;13231:19:0;;13211:4;13231:19;;;:11;:19;;;;;;;;13251:10;13231:31;;;;;;;;-1:-1:-1;;13231:52:0;13228:186;;13333:69;;;;;;;;;;;-1:-1:-1;;;13333:69:0;;;;;;;;-1:-1:-1;;;;;13333:19:0;;-1:-1:-1;13333:19:0;;;:11;:19;;;;;13353:10;13333:31;;;;;;;;;;:69;;13369:6;;13333:35;:69::i;:::-;-1:-1:-1;;;;;13299:19:0;;;;;;:11;:19;;;;;;;;13319:10;13299:31;;;;;;;:103;13228:186;13433:40;13447:6;13455:9;13466:6;13433:13;:40::i;:::-;13426:47;;13111:370;;;;;;:::o;18950:142::-;19078:4;;-1:-1:-1;;;;;19078:4:0;19003:7;12425:18;;;:9;:18;;;;;;19030:54;;19057:4;;-1:-1:-1;;;;;19057:4:0;12407:7;12425:18;;;:9;:18;;;;;;19030:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;19023:61;;18950:142;:::o;17109:218::-;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;17189:6:::1;17184:136;17205:5;:12;17201:1;:16;17184:136;;;17253:5;17235;:15;17241:5;17247:1;17241:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;17235:15:0::1;-1:-1:-1::0;;;;;17235:15:0::1;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17269:37;17290:5;17296:1;17290:8;;;;;;;;:::i;:::-;;;;;;;17300:5;17269:20;:37::i;:::-;17219:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17184:136;;;;17109:218:::0;:::o;19815:80::-;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;19871:8:::1;:16:::0;;-1:-1:-1;;19871:16:0::1;::::0;;19815:80::o;17335:115::-;17403:4;2939:5;;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;17427:15:0::1;;::::0;;;:5:::1;:15;::::0;;;;;::::1;;::::0;17335:115::o;12817:122::-;12872:4;12896:35;12904:7;-1:-1:-1;;12896:7:0;:35::i;19650:157::-;19753:11;;:46;;-1:-1:-1;;;19753:46:0;;-1:-1:-1;;;;;3935:32:1;;;19753:46:0;;;3917:51:1;19726:7:0;;19753:11;;:33;;3890:18:1;;19753:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19100:135::-;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;19184:15:::1;:43:::0;;-1:-1:-1;;;;;;19184:43:0::1;-1:-1:-1::0;;;;;19184:43:0;;;::::1;::::0;;;::::1;::::0;;19100:135::o;17947:119::-;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18030:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;18030:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17947:119::o;19403:115::-;19482:11;;:28;;;-1:-1:-1;;;19482:28:0;;;;19455:7;;-1:-1:-1;;;;;19482:11:0;;:26;;:28;;;;;;;;;;;;;;:11;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18074:139::-;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;18152:2:::1;18144:4;:10;;18135:44;;;::::0;-1:-1:-1;;;18135:44:0;;6776:2:1;18135:44:0::1;::::0;::::1;6758:21:1::0;6815:2;6795:18;;;6788:30;-1:-1:-1;;;6834:18:1;;;6827:50;6894:18;;18135:44:0::1;6574:344:1::0;18135:44:0::1;18190:8;:15:::0;18074:139::o;16730:141::-;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16794:15:0;::::1;;::::0;;;:5:::1;:15;::::0;;;;:22;;-1:-1:-1;;16794:22:0::1;16812:4;16794:22:::0;;::::1;::::0;;;16827:36:::1;::::0;16800:8;;16827:20:::1;:36::i;:::-;16730:141:::0;:::o;19530:111::-;19607:11;;:26;;;-1:-1:-1;;;19607:26:0;;;;19580:7;;-1:-1:-1;;;;;19607:11:0;;:24;;:26;;;;;;;;;;;;;;:11;:26;;;;;;;;;;18631:156;18732:11;;:47;;-1:-1:-1;;;18732:47:0;;-1:-1:-1;;;;;3935:32:1;;;18732:47:0;;;3917:51:1;18705:7:0;;18732:11;;:34;;3890:18:1;;18732:47:0;3771:203:1;12947:156:0;13027:4;13051:44;13065:10;13077:9;13088:6;13051:13;:44::i;16883:216::-;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;16963:6:::1;16958:134;16979:5;:12;16975:1;:16;16958:134;;;17027:4;17009:5;:15;17015:5;17021:1;17015:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;17009:15:0::1;-1:-1:-1::0;;;;;17009:15:0::1;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;17042:36;17063:5;17069:1;17063:8;;;;;;;;:::i;:::-;;;;;;;17073:4;17042:20;:36::i;:::-;16993:3:::0;::::1;::::0;::::1;:::i;:::-;;;;16958:134;;16595:115:::0;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;16661:12:::1;16648:10;:25:::0;16684:11:::1;:18:::0;;-1:-1:-1;;16684:18:0::1;16698:4;16684:18;::::0;;16595:115::o;19243:152::-;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;19313:8:::1;:29:::0;;-1:-1:-1;;;;;;19313:29:0::1;-1:-1:-1::0;;;;;19313:29:0;;::::1;::::0;;::::1;::::0;;;19353:11:::1;::::0;:34:::1;::::0;-1:-1:-1;;;19353:34:0;;::::1;::::0;::::1;3917:51:1::0;;;;19353:11:0;;::::1;::::0;:23:::1;::::0;3890:18:1;;19353:34:0::1;3771:203:1::0;18407:90:0;18452:11;;:37;;-1:-1:-1;;;18452:37:0;;18478:10;18452:37;;;3917:51:1;-1:-1:-1;;;;;18452:11:0;;;;:25;;3890:18:1;;18452:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18407:90::o;3077:136::-;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;3153:5:::1;:11:::0;;-1:-1:-1;;;;;;3153:11:0::1;-1:-1:-1::0;;;;;3153:11:0;::::1;::::0;;::::1;::::0;;;3180:25:::1;::::0;3917:51:1;;;3180:25:0::1;::::0;3905:2:1;3890:18;3180:25:0::1;;;;;;;3077:136:::0;:::o;18225:174::-;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;18346:15:::1;::::0;18338:53:::1;::::0;18306:21:::1;::::0;-1:-1:-1;;;;;18346:15:0::1;::::0;18338:53;::::1;;;::::0;18306:21;;18277:26:::1;18338:53:::0;18277:26;18338:53;18306:21;18346:15;18338:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;17807:132:::0;2904:4;2939:5;-1:-1:-1;;;;;2939:5:0;2756:10;2928:16;2740:38;;;;-1:-1:-1;;;2740:38:0;;;;;;;:::i;:::-;17895:36:::1;17916:6;17924;17895:20;:36::i;14958:330::-:0;15088:53;;;;;;;;;;;-1:-1:-1;;;15088:53:0;;;;;;;;-1:-1:-1;;;;;15088:17:0;;15051:4;15088:17;;;:9;:17;;;;;;;:53;;15110:6;;15088:21;:53::i;:::-;-1:-1:-1;;;;;15068:17:0;;;;;;;:9;:17;;;;;;:73;;;;15175:20;;;;;;;:32;;15200:6;15175:24;:32::i;:::-;-1:-1:-1;;;;;15152:20:0;;;;;;;:9;:20;;;;;;;:55;;;;15223:35;;;;;;;;;;15251:6;8857:25:1;;8845:2;8830:18;;8711:177;15223:35:0;;;;;;;;-1:-1:-1;15276:4:0;14958:330;;;;;:::o;511:192::-;597:7;633:12;625:6;;;;617:29;;;;-1:-1:-1;;;617:29:0;;;;;;;;:::i;:::-;-1:-1:-1;657:9:0;669:5;673:1;669;:5;:::i;:::-;657:17;511:192;-1:-1:-1;;;;;511:192:0:o;13489:1457::-;13581:4;13611:5;;-1:-1:-1;;;;;13602:14:0;;;13611:5;;13602:14;;;;:35;;-1:-1:-1;13632:5:0;;-1:-1:-1;;;;;13620:17:0;;;13632:5;;13620:17;;13602:35;13598:89;;;13647:11;;;;13639:48;;;;-1:-1:-1;;;13639:48:0;;8560:2:1;13639:48:0;;;8542:21:1;8599:2;8579:18;;;8572:30;8638:26;8618:18;;;8611:54;8682:18;;13639:48:0;8358:348:1;13639:48:0;-1:-1:-1;;;;;13748:13:0;;;;;;:5;:13;;;;;;;;13747:14;:35;;;;-1:-1:-1;;;;;;13766:16:0;;;;;;:5;:16;;;;;;;;13765:17;13747:35;13738:57;;;;-1:-1:-1;;;13738:57:0;;7125:2:1;13738:57:0;;;7107:21:1;7164:1;7144:18;;;7137:29;-1:-1:-1;;;7182:18:1;;;7175:38;7230:18;;13738:57:0;6923:331:1;13738:57:0;13810:8;;;;;;;13806:130;;;13848:5;;-1:-1:-1;;;;;13840:13:0;;;13848:5;;13840:13;;;;:34;;-1:-1:-1;13869:5:0;;-1:-1:-1;;;;;13857:17:0;;;13869:5;;13857:17;;13840:34;13836:80;;;13893:6;;13885;:14;;13876:40;;;;-1:-1:-1;;;13876:40:0;;7817:2:1;13876:40:0;;;7799:21:1;7856:2;7836:18;;;7829:30;-1:-1:-1;;;7875:18:1;;;7868:42;7927:18;;13876:40:0;7615:336:1;13876:40:0;13967:10;;:14;;13980:1;13967:14;:::i;:::-;13950:12;:32;13946:139;;-1:-1:-1;;;;;14000:16:0;;;;;;:5;:16;;;;;;;;:23;;14019:4;-1:-1:-1;;14000:23:0;;;;;;;;14038:16;:27;;;;;:34;;;;;;;;;;13946:139;14107:6;;-1:-1:-1;;;14107:6:0;;;;14104:63;;;14123:41;14138:6;14146:9;14157:6;14123:14;:41::i;:::-;14116:48;;;;14104:63;14238:4;;14189:19;;-1:-1:-1;;;;;14227:15:0;;;14238:4;;14227:15;:47;;;;-1:-1:-1;14264:4:0;14273:1;12425:18;;;:9;:18;;;;;;14246:28;14227:47;14189:86;;14289:14;14286:33;;;14306:10;:8;:10::i;:::-;14351:53;;;;;;;;;;;-1:-1:-1;;;14351:53:0;;;;;;;;-1:-1:-1;;;;;14351:17:0;;-1:-1:-1;14351:17:0;;;:9;:17;;;;;;;;:53;;14373:6;;14351:21;:53::i;:::-;-1:-1:-1;;;;;14331:17:0;;;;;;:9;:17;;;;;:73;;;;14442:32;14341:6;14464:9;14442:13;:32::i;:::-;:67;;14503:6;14442:67;;;14477:23;14485:6;14493;14477:7;:23::i;:::-;-1:-1:-1;;;;;14553:20:0;;;;;;:9;:20;;;;;;14417:92;;-1:-1:-1;14553:40:0;;14417:92;14553:24;:40::i;:::-;-1:-1:-1;;;;;14530:20:0;;;;;;;:9;:20;;;;;:63;;;;14619:4;;14609:14;;;14619:4;;14609:14;;;;:43;;-1:-1:-1;;;;;;14628:24:0;;;;;;:16;:24;;;;;;;;14627:25;14609:43;14606:114;;;14659:11;;-1:-1:-1;;;;;14688:17:0;;;14659:11;14688:17;;;:9;:17;;;;;;;;14659:47;;-1:-1:-1;;;14659:47:0;;;;;4601:51:1;;;;4668:18;;;4661:34;14659:11:0;;;:20;;4574:18:1;;14659:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14655:63;;14746:4;;-1:-1:-1;;;;;14733:17:0;;;14746:4;;14733:17;;;;:49;;-1:-1:-1;;;;;;14755:27:0;;;;;;:16;:27;;;;;;;;14754:28;14733:49;14730:126;;;14789:11;;-1:-1:-1;;;;;14821:20:0;;;14789:11;14821:20;;;:9;:20;;;;;;;;14789:53;;-1:-1:-1;;;14789:53:0;;;;;4601:51:1;;;;4668:18;;;4661:34;14789:11:0;;;:20;;4574:18:1;;14789:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14785:69;;14890:9;-1:-1:-1;;;;;14873:43:0;14882:6;-1:-1:-1;;;;;14873:43:0;;14901:14;14873:43;;;;8857:25:1;;8845:2;8830:18;;8711:177;14873:43:0;;;;;;;;-1:-1:-1;14934:4:0;;13489:1457;-1:-1:-1;;;;;13489:1457:0:o;369:136::-;427:7;454:43;458:1;461;454:43;;;;;;;;;;;;;;;;;:3;:43::i;17462:337::-;-1:-1:-1;;;;;17549:23:0;;17567:4;17549:23;;;;:41;;-1:-1:-1;17586:4:0;;-1:-1:-1;;;;;17576:14:0;;;17586:4;;17576:14;;17549:41;17541:50;;;;;;-1:-1:-1;;;;;17602:24:0;;;;;;:16;:24;;;;;:33;;-1:-1:-1;;17602:33:0;;;;;;;;;;;;17646:146;;17671:11;;:31;;-1:-1:-1;;;17671:31:0;;-1:-1:-1;;;;;4619:32:1;;;17671:31:0;;;4601:51:1;17671:11:0;4668:18:1;;;4661:34;17671:11:0;;;;:20;;4574:18:1;;17671:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17184:136:::1;17109:218:::0;:::o;17646:146::-;17733:11;;-1:-1:-1;;;;;17762:17:0;;;17733:11;17762:17;;;:9;:17;;;;;;;;17733:47;;-1:-1:-1;;;17733:47:0;;;;;4601:51:1;;;;4668:18;;;4661:34;17733:11:0;;;:20;;4574:18:1;;17733:47:0;4419:282:1;182:181:0;240:7;;272:5;276:1;272;:5;:::i;:::-;260:17;;301:1;296;:6;;288:46;;;;-1:-1:-1;;;288:46:0;;7461:2:1;288:46:0;;;7443:21:1;7500:2;7480:18;;;7473:30;7539:29;7519:18;;;7512:57;7586:18;;288:46:0;7259:351:1;15880:701:0;10912:6;:13;;-1:-1:-1;;;;10912:13:0;-1:-1:-1;;;10912:13:0;;;15970:4:::1;-1:-1:-1::0;12425:18:0;;;:9;:18;;;;;;16013:16:::1;::::0;;16027:1:::1;16013:16:::0;;;;;::::1;::::0;;;15929:47;;-1:-1:-1;15989:21:0::1;::::0;16013:16;::::1;;;;;;;;;;;::::0;-1:-1:-1;16013:16:0::1;15989:40;;16058:4;16040;16045:1;16040:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16040:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16084:4:::1;::::0;;16074:7;;16084:4;::::1;::::0;16074;;16084;16074:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16074:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16111:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;16111:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;16183:12;;16111:6:::1;::::0;16226:4;;16253::::1;::::0;16273:15:::1;::::0;16111:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16320:22;16345:30;16373:1;16346:21;16345:27;;:30;;;;:::i;:::-;16320:55:::0;-1:-1:-1;16386:23:0::1;16412:30;16413:21;16440:1;16412:27;:30::i;:::-;16478:15;::::0;16470:50:::1;::::0;16386:56;;-1:-1:-1;;;;;;16478:15:0::1;::::0;16470:50;::::1;;;::::0;16386:56;;16478:15:::1;16470:50:::0;16478:15;16470:50;16386:56;16478:15;16470:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;16539:8:0::1;::::0;16531:42:::1;::::0;-1:-1:-1;;;;;16539:8:0;;::::1;::::0;16531:42;::::1;;;::::0;16558:14;;16539:8:::1;16531:42:::0;16539:8;16531:42;16558:14;16539:8;16531:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10930:6:0;:14;;-1:-1:-1;;;;10930:14:0;;;-1:-1:-1;;;15880:701:0:o;15299:206::-;-1:-1:-1;;;;;15408:19:0;;15380:4;15408:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;15431:22:0;;;;;;:11;:22;;;;;;;;15408:45;15406:48;:90;;;;-1:-1:-1;15470:4:0;;-1:-1:-1;;;;;15460:14:0;;;15470:4;;15460:14;;:35;;-1:-1:-1;;15491:4:0;;-1:-1:-1;;;;;15491:4:0;;;15478:17;;;;15299:206;-1:-1:-1;15299:206:0:o;15513:354::-;15580:7;15600:17;15640:40;15665:14;;15640:20;15651:8;;15640:6;:10;;:20;;;;:::i;:::-;:24;;:40::i;:::-;15736:4;15718:24;;;;:9;:24;;;;;;15628:52;;-1:-1:-1;15718:39:0;;15628:52;15718:28;:39::i;:::-;15709:4;15691:24;;;;:9;:24;;;;;;;:66;;;;15773:42;;-1:-1:-1;;;;;15773:42:0;;;;;;;15805:9;8857:25:1;;8845:2;8830:18;;8711:177;15773:42:0;;;;;;;;15838:21;:6;15849:9;15838:10;:21::i;:::-;15831:28;15513:354;-1:-1:-1;;;;15513:354:0:o;965:132::-;1023:7;1050:39;1054:1;1057;1050:39;;;;;;;;;;;;;;;;;:3;:39::i;709:250::-;767:7;791:6;787:47;;-1:-1:-1;821:1:0;814:8;;787:47;846:9;858:5;862:1;858;:5;:::i;:::-;846:17;-1:-1:-1;891:1:0;882:5;886:1;846:17;882:5;:::i;:::-;:10;874:56;;;;-1:-1:-1;;;874:56:0;;8158:2:1;874:56:0;;;8140:21:1;8197:2;8177:18;;;8170:30;8236:34;8216:18;;;8209:62;-1:-1:-1;;;8287:18:1;;;8280:31;8328:19;;874:56:0;7956:397:1;1103:345:0;1189:7;1291:12;1284:5;1276:28;;;;-1:-1:-1;;;1276:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1315:9:0;1327:5;1331:1;1327;:5;:::i;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;153:247::-;212:6;265:2;253:9;244:7;240:23;236:32;233:52;;;281:1;278;271:12;233:52;320:9;307:23;339:31;364:5;339:31;:::i;665:388::-;733:6;741;794:2;782:9;773:7;769:23;765:32;762:52;;;810:1;807;800:12;762:52;849:9;836:23;868:31;893:5;868:31;:::i;:::-;918:5;-1:-1:-1;975:2:1;960:18;;947:32;988:33;947:32;988:33;:::i;:::-;1040:7;1030:17;;;665:388;;;;;:::o;1058:456::-;1135:6;1143;1151;1204:2;1192:9;1183:7;1179:23;1175:32;1172:52;;;1220:1;1217;1210:12;1172:52;1259:9;1246:23;1278:31;1303:5;1278:31;:::i;:::-;1328:5;-1:-1:-1;1385:2:1;1370:18;;1357:32;1398:33;1357:32;1398:33;:::i;:::-;1058:456;;1450:7;;-1:-1:-1;;;1504:2:1;1489:18;;;;1476:32;;1058:456::o;1519:416::-;1584:6;1592;1645:2;1633:9;1624:7;1620:23;1616:32;1613:52;;;1661:1;1658;1651:12;1613:52;1700:9;1687:23;1719:31;1744:5;1719:31;:::i;:::-;1769:5;-1:-1:-1;1826:2:1;1811:18;;1798:32;1868:15;;1861:23;1849:36;;1839:64;;1899:1;1896;1889:12;1940:315;2008:6;2016;2069:2;2057:9;2048:7;2044:23;2040:32;2037:52;;;2085:1;2082;2075:12;2037:52;2124:9;2111:23;2143:31;2168:5;2143:31;:::i;:::-;2193:5;2245:2;2230:18;;;;2217:32;;-1:-1:-1;;;1940:315:1:o;2260:1132::-;2344:6;2375:2;2418;2406:9;2397:7;2393:23;2389:32;2386:52;;;2434:1;2431;2424:12;2386:52;2474:9;2461:23;2503:18;2544:2;2536:6;2533:14;2530:34;;;2560:1;2557;2550:12;2530:34;2598:6;2587:9;2583:22;2573:32;;2643:7;2636:4;2632:2;2628:13;2624:27;2614:55;;2665:1;2662;2655:12;2614:55;2701:2;2688:16;2723:2;2719;2716:10;2713:36;;;2729:18;;:::i;:::-;2775:2;2772:1;2768:10;2807:2;2801:9;2870:2;2866:7;2861:2;2857;2853:11;2849:25;2841:6;2837:38;2925:6;2913:10;2910:22;2905:2;2893:10;2890:18;2887:46;2884:72;;;2936:18;;:::i;:::-;2972:2;2965:22;3022:18;;;3056:15;;;;-1:-1:-1;3091:11:1;;;3121;;;3117:20;;3114:33;-1:-1:-1;3111:53:1;;;3160:1;3157;3150:12;3111:53;3182:1;3173:10;;3192:169;3206:2;3203:1;3200:9;3192:169;;;3263:23;3282:3;3263:23;:::i;:::-;3251:36;;3224:1;3217:9;;;;;3307:12;;;;3339;;3192:169;;;-1:-1:-1;3380:6:1;2260:1132;-1:-1:-1;;;;;;;;2260:1132:1:o;3397:180::-;3456:6;3509:2;3497:9;3488:7;3484:23;3480:32;3477:52;;;3525:1;3522;3515:12;3477:52;-1:-1:-1;3548:23:1;;3397:180;-1:-1:-1;3397:180:1:o;3582:184::-;3652:6;3705:2;3693:9;3684:7;3680:23;3676:32;3673:52;;;3721:1;3718;3711:12;3673:52;-1:-1:-1;3744:16:1;;3582:184;-1:-1:-1;3582:184:1:o;5638:597::-;5750:4;5779:2;5808;5797:9;5790:21;5840:6;5834:13;5883:6;5878:2;5867:9;5863:18;5856:34;5908:1;5918:140;5932:6;5929:1;5926:13;5918:140;;;6027:14;;;6023:23;;6017:30;5993:17;;;6012:2;5989:26;5982:66;5947:10;;5918:140;;;6076:6;6073:1;6070:13;6067:91;;;6146:1;6141:2;6132:6;6121:9;6117:22;6113:31;6106:42;6067:91;-1:-1:-1;6219:2:1;6198:15;-1:-1:-1;;6194:29:1;6179:45;;;;6226:2;6175:54;;5638:597;-1:-1:-1;;;5638:597:1:o;6240:329::-;6442:2;6424:21;;;6481:1;6461:18;;;6454:29;-1:-1:-1;;;6514:2:1;6499:18;;6492:36;6560:2;6545:18;;6240:329::o;8893:980::-;9155:4;9203:3;9192:9;9188:19;9234:6;9223:9;9216:25;9260:2;9298:6;9293:2;9282:9;9278:18;9271:34;9341:3;9336:2;9325:9;9321:18;9314:31;9365:6;9400;9394:13;9431:6;9423;9416:22;9469:3;9458:9;9454:19;9447:26;;9508:2;9500:6;9496:15;9482:29;;9529:1;9539:195;9553:6;9550:1;9547:13;9539:195;;;9618:13;;-1:-1:-1;;;;;9614:39:1;9602:52;;9709:15;;;;9674:12;;;;9650:1;9568:9;9539:195;;;-1:-1:-1;;;;;;;9790:32:1;;;;9785:2;9770:18;;9763:60;-1:-1:-1;;;9854:3:1;9839:19;9832:35;9751:3;8893:980;-1:-1:-1;;;8893:980:1:o;10067:128::-;10107:3;10138:1;10134:6;10131:1;10128:13;10125:39;;;10144:18;;:::i;:::-;-1:-1:-1;10180:9:1;;10067:128::o;10200:217::-;10240:1;10266;10256:132;;10310:10;10305:3;10301:20;10298:1;10291:31;10345:4;10342:1;10335:15;10373:4;10370:1;10363:15;10256:132;-1:-1:-1;10402:9:1;;10200:217::o;10422:168::-;10462:7;10528:1;10524;10520:6;10516:14;10513:1;10510:21;10505:1;10498:9;10491:17;10487:45;10484:71;;;10535:18;;:::i;:::-;-1:-1:-1;10575:9:1;;10422:168::o;10595:125::-;10635:4;10663:1;10660;10657:8;10654:34;;;10668:18;;:::i;:::-;-1:-1:-1;10705:9:1;;10595:125::o;10725:135::-;10764:3;-1:-1:-1;;10785:17:1;;10782:43;;;10805:18;;:::i;:::-;-1:-1:-1;10852:1:1;10841:13;;10725:135::o;10865:127::-;10926:10;10921:3;10917:20;10914:1;10907:31;10957:4;10954:1;10947:15;10981:4;10978:1;10971:15;10997:127;11058:10;11053:3;11049:20;11046:1;11039:31;11089:4;11086:1;11079:15;11113:4;11110:1;11103:15;11129:127;11190:10;11185:3;11181:20;11178:1;11171:31;11221:4;11218:1;11211:15;11245:4;11242:1;11235:15;11261:131;-1:-1:-1;;;;;11336:31:1;;11326:42;;11316:70;;11382:1;11379;11372:12
Swarm Source
ipfs://2f7affcb6cba8c5cc95e26fae9fb182e2b29575e849287952e0cab2c1f40df95
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.