Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000 miniFlUFFY
Holders
14
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
3,297,278,828.324363938 miniFlUFFYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
miniFLUFFY
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-19 */ // SPDX-License-Identifier: MIT 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 miniFLUFFY shareholder!"); return shares[shareholder].totalClaimed; } } contract miniFLUFFY is IBEP20, Auth { using SafeMath for uint256; address private WETH; address private DEAD = 0x000000000000000000000000000000000000dEaD; address private ZERO = 0x0000000000000000000000000000000000000000; string private constant _name = "miniFluffy Inu"; string private constant _symbol = "miniFlUFFY"; uint8 private constant _decimals = 9; uint256 private _totalSupply = 1000000000000 * (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(0x2F1556C7Da672b9b3dbbe78B4c3C507641c19D2f); address payable public treasury = payable(0x2d40E11b86C8F6469F35Cf48670D379AcFE9980c); IDEXRouter public router; address public pair; uint256 public launchedAt; bool private tradingOpen; bool private buyLimit = true; uint256 private maxBuy = 20000000000 * (10 ** _decimals); DividendDistributor private distributor; bool private inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor ( ) Auth(0x57ba5F02D686f527500061691d6E2b4c21EE791F) { address _owner = 0x57ba5F02D686f527500061691d6E2b4c21EE791F; 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
Contract ABI
API[{"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":"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
6080604052600280546001600160a01b031990811661dead17909155600380549091169055620000326009600a620004af565b620000439064e8d4a5100062000570565b6004819055600555600e600b8190556064600c55600d80546001600160a01b0319908116732f1556c7da672b9b3dbbe78b4c3c507641c19d2f17909155815416732d40e11b86c8f6469f35cf48670d379acfe9980c1790556012805461ff001916610100179055620000b86009600a620004af565b620000c9906404a817c80062000570565b601355348015620000d957600080fd5b50600080547357ba5f02d686f527500061691d6e2b4c21ee791f6001600160a01b03199182168117909255600f8054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b1580156200015a57600080fd5b505afa1580156200016f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000195919062000434565b600180546001600160a01b0319166001600160a01b03928316179055600f546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b158015620001ef57600080fd5b505afa15801562000204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022a919062000434565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200027757600080fd5b505af11580156200028c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b2919062000434565b601080546001600160a01b0319166001600160a01b03928316179055306000908152600760209081526040808320600f5485168452909152908190206000199055600e549051839291909116906200030a9062000426565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200033e573d6000803e3d6000fd5b50601480546001600160a01b0319166001600160a01b039283161790558181166000818152600860209081526040808320805460ff199081166001908117909255600d54871685528285208054821683179055600e548716855282852080548216831790556010548716855260098452828520805482168317905530855282852080548216831790556002549096168452818420805490961617909455600454838352600682528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620005a8565b610d1080620025d783390190565b6000602082840312156200044757600080fd5b81516001600160a01b03811681146200045f57600080fd5b9392505050565b600181815b80851115620004a75781600019048211156200048b576200048b62000592565b808516156200049957918102915b93841c93908002906200046b565b509250929050565b60006200045f60ff841683600082620004cb575060016200056a565b81620004da575060006200056a565b8160018114620004f35760028114620004fe576200051e565b60019150506200056a565b60ff84111562000512576200051262000592565b50506001821b6200056a565b5060208310610133831016604e8410600b841016171562000543575081810a6200056a565b6200054f838362000466565b806000190482111562000566576200056662000592565b0290505b92915050565b60008160001904831182151516156200058d576200058d62000592565b500290565b634e487b7160e01b600052601160045260246000fd5b61201f80620005b86000396000f3fe6080604052600436106102295760003560e01c80636b5caec411610123578063b89402a0116100ab578063f0fc6bca1161006f578063f0fc6bca146106be578063f2fde38b146106d3578063f4293890146106f3578063f708a64f14610708578063f887ea401461072857600080fd5b8063b89402a01461060d578063bf56b3711461062d578063c9567bf914610643578063dd62ed3e14610658578063f0f442601461069e57600080fd5b8063893d20e8116100f2578063893d20e81461055c5780638ecc37fb1461057a57806395d89b411461059a578063a8aa1b31146105cd578063a9059cbb146105ed57600080fd5b80636b5caec4146104d157806370a08231146104f1578063736a83a11461052757806375f0a8741461053c57600080fd5b8063350fcdf9116101b15780635d098b38116101755780635d098b381461042457806361d027b314610444578063658d4b7f1461047c57806367ee5f091461049c57806369fe0e2d146104b157600080fd5b8063350fcdf91461038f5780633e07ce5b146103af578063416501c8146103c4578063571ac8b0146103e45780635cc33f741461040457600080fd5b806323b63585116101f857806323b63585146102ef57806323b872dd1461030f5780632b112e491461032f5780632f54bf6e14610344578063313ce5671461037357600080fd5b806306fdde0314610235578063095ea7b31461027e57806315f7e05e146102ae57806318160ddd146102d057600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5060408051808201909152600e81526d6d696e69466c7566667920496e7560901b60208201525b6040516102759190611e21565b60405180910390f35b34801561028a57600080fd5b5061029e610299366004611cf7565b610748565b6040519015158152602001610275565b3480156102ba57600080fd5b506102ce6102c9366004611c2d565b6107b5565b005b3480156102dc57600080fd5b506004545b604051908152602001610275565b3480156102fb57600080fd5b5061029e61030a366004611def565b61084b565b34801561031b57600080fd5b5061029e61032a366004611c83565b610896565b34801561033b57600080fd5b506102e1610958565b34801561035057600080fd5b5061029e61035f366004611c2d565b6000546001600160a01b0391821691161490565b34801561037f57600080fd5b5060405160098152602001610275565b34801561039b57600080fd5b506102ce6103aa366004611d23565b6109aa565b3480156103bb57600080fd5b506102ce610a71565b3480156103d057600080fd5b5061029e6103df366004611c2d565b610aa8565b3480156103f057600080fd5b5061029e6103ff366004611c2d565b610af2565b34801561041057600080fd5b506102e161041f366004611c2d565b610b00565b34801561043057600080fd5b506102ce61043f366004611c2d565b610b7f565b34801561045057600080fd5b50600e54610464906001600160a01b031681565b6040516001600160a01b039091168152602001610275565b34801561048857600080fd5b506102ce610497366004611cc4565b610bcb565b3480156104a857600080fd5b506102e1610c20565b3480156104bd57600080fd5b506102ce6104cc366004611def565b610c9d565b3480156104dd57600080fd5b506102ce6104ec366004611c2d565b610d14565b3480156104fd57600080fd5b506102e161050c366004611c2d565b6001600160a01b031660009081526006602052604090205490565b34801561053357600080fd5b506102e1610d72565b34801561054857600080fd5b50600d54610464906001600160a01b031681565b34801561056857600080fd5b506000546001600160a01b0316610464565b34801561058657600080fd5b506102e1610595366004611c2d565b610db7565b3480156105a657600080fd5b5060408051808201909152600a8152696d696e69466c5546465960b01b6020820152610268565b3480156105d957600080fd5b50601054610464906001600160a01b031681565b3480156105f957600080fd5b5061029e610608366004611cf7565b610dea565b34801561061957600080fd5b506102ce610628366004611d23565b610df7565b34801561063957600080fd5b506102e160115481565b34801561064f57600080fd5b506102ce610eba565b34801561066457600080fd5b506102e1610673366004611c4a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156106aa57600080fd5b506102ce6106b9366004611c2d565b610ef7565b3480156106ca57600080fd5b506102ce610f6a565b3480156106df57600080fd5b506102ce6106ee366004611c2d565b610fc9565b3480156106ff57600080fd5b506102ce611047565b34801561071457600080fd5b506102ce610723366004611cc4565b6110ab565b34801561073457600080fd5b50600f54610464906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107a39086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107e85760405162461bcd60e51b81526004016107df90611e76565b60405180910390fd5b601454604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e906024015b600060405180830381600087803b15801561083057600080fd5b505af1158015610844573d6000803e3d6000fd5b5050505050565b600080546001600160a01b031633146108765760405162461bcd60e51b81526004016107df90611e76565b60025461088e9030906001600160a01b0316846110df565b90505b919050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610943576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260078252838120338252909152919091205461091e9184906111c5565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b61094e8484846111ff565b90505b9392505050565b6003546001600160a01b03166000908152600660205260408120546109a5906002546001600160a01b031660009081526006602052604090205461099f90600454906116a9565b906116a9565b905090565b6000546001600160a01b031633146109d45760405162461bcd60e51b81526004016107df90611e76565b60005b8151811015610a6d576000600a60008484815181106109f8576109f8611fa8565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550610a5b828281518110610a4c57610a4c611fa8565b602002602001015160006116eb565b80610a6581611f77565b9150506109d7565b5050565b6000546001600160a01b03163314610a9b5760405162461bcd60e51b81526004016107df90611e76565b6012805461ff0019169055565b600080546001600160a01b03163314610ad35760405162461bcd60e51b81526004016107df90611e76565b506001600160a01b03166000908152600a602052604090205460ff1690565b600061088e82600019610748565b601454604051631730cfdd60e21b81526001600160a01b0383811660048301526000921690635cc33f74906024015b60206040518083038186803b158015610b4757600080fd5b505afa158015610b5b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088e9190611e08565b6000546001600160a01b03163314610ba95760405162461bcd60e51b81526004016107df90611e76565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bf55760405162461bcd60e51b81526004016107df90611e76565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6014546040805163997664d760e01b815290516000926001600160a01b03169163997664d7916004808301926020929190829003018186803b158015610c6557600080fd5b505afa158015610c79573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a59190611e08565b6000546001600160a01b03163314610cc75760405162461bcd60e51b81526004016107df90611e76565b600e811115610d0f5760405162461bcd60e51b81526020600482015260146024820152734665652063616e2774206578636565642031342560601b60448201526064016107df565b600b55565b6000546001600160a01b03163314610d3e5760405162461bcd60e51b81526004016107df90611e76565b6001600160a01b0381166000908152600a60205260409020805460ff19166001908117909155610d6f9082906116eb565b50565b6014546040805163d54ad2a160e01b815290516000926001600160a01b03169163d54ad2a1916004808301926020929190829003018186803b158015610c6557600080fd5b601454604051638ecc37fb60e01b81526001600160a01b0383811660048301526000921690638ecc37fb90602401610b2f565b60006109513384846111ff565b6000546001600160a01b03163314610e215760405162461bcd60e51b81526004016107df90611e76565b60005b8151811015610a6d576001600a6000848481518110610e4557610e45611fa8565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550610ea8828281518110610e9957610e99611fa8565b602002602001015160016116eb565b80610eb281611f77565b915050610e24565b6000546001600160a01b03163314610ee45760405162461bcd60e51b81526004016107df90611e76565b436011556012805460ff19166001179055565b6000546001600160a01b03163314610f215760405162461bcd60e51b81526004016107df90611e76565b600e80546001600160a01b0319166001600160a01b03838116918217909255601454604051630787a21360e51b815260048101929092529091169063f0f4426090602401610816565b601454604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610ff35760405162461bcd60e51b81526004016107df90611e76565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146110715760405162461bcd60e51b81526004016107df90611e76565b600d5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610a6d573d6000803e3d6000fd5b6000546001600160a01b031633146110d55760405162461bcd60e51b81526004016107df90611e76565b610a6d82826116eb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546111309184906111c5565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461115f90836117fc565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111b39086815260200190565b60405180910390a35060019392505050565b600081848411156111e95760405162461bcd60e51b81526004016107df9190611e21565b5060006111f68486611f60565b95945050505050565b600080546001600160a01b0385811691161480159061122c57506000546001600160a01b03848116911614155b156112835760125460ff166112835760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016107df565b6001600160a01b0384166000908152600a602052604090205460ff161580156112c557506001600160a01b0383166000908152600a602052604090205460ff16155b6112fc5760405162461bcd60e51b81526020600482015260086024820152674e6963652074727960c01b60448201526064016107df565b601254610100900460ff161561137e576000546001600160a01b0385811691161480159061133857506000546001600160a01b03848116911614155b1561137e5760135482111561137e5760405162461bcd60e51b815260206004820152600c60248201526b2a37b79036bab1b41039b4b960a11b60448201526064016107df565b60115461138c906001611f07565b43116113ce576001600160a01b0383166000908152600a602090815260408083208054600160ff19918216811790925560099093529220805490911690911790555b601454600160a01b900460ff16156113f2576113eb8484846110df565b9050610951565b6010546000906001600160a01b03858116911614801561141f575030600090815260066020526040812054115b9050801561142f5761142f61185b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600690915291909120546114819185906111c5565b6001600160a01b0386166000908152600660205260408120919091556114a78686611a12565b6114b157836114bb565b6114bb8685611a87565b6001600160a01b0386166000908152600660205260409020549091506114e190826117fc565b6001600160a01b0380871660009081526006602052604090209190915560105487821691161480159061152d57506001600160a01b03861660009081526009602052604090205460ff16155b156115a3576014546001600160a01b0387811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561159057600080fd5b505af19250505080156115a1575060015b505b6010546001600160a01b038681169116148015906115da57506001600160a01b03851660009081526009602052604090205460ff16155b15611650576014546001600160a01b0386811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561163d57600080fd5b505af192505050801561164e575060015b505b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161169591815260200190565b60405180910390a350600195945050505050565b600061095183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111c5565b6001600160a01b038216301480159061171257506010546001600160a01b03838116911614155b61171b57600080fd5b6001600160a01b0382166000908152600960205260409020805460ff191682158015919091179091556117b357601454604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561179757600080fd5b505af11580156117ab573d6000803e3d6000fd5b505050505050565b6014546001600160a01b0383811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca969060440161177d565b6000806118098385611f07565b9050838110156109515760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107df565b6014805460ff60a01b1916600160a01b17905530600090815260066020526040812054604080516002808252606082019092529192506000919081602001602082028036833701905050905030816000815181106118bb576118bb611fa8565b6001600160a01b03928316602091820292909201015260018054835192169183919081106118eb576118eb611fa8565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b815291169063791ac94790611931908590600090869030904290600401611e96565b600060405180830381600087803b15801561194b57600080fd5b505af115801561195f573d6000803e3d6000fd5b505050506000611979600247611b3390919063ffffffff16565b90506000611988476002611b33565b600d546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156119c3573d6000803e3d6000fd5b50600e546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156119fe573d6000803e3d6000fd5b50506014805460ff60a01b19169055505050565b6001600160a01b03821660009081526008602052604081205460ff1680611a5157506001600160a01b03821660009081526008602052604090205460ff165b15801561095157506010546001600160a01b03848116911614806109515750506010546001600160a01b03908116911614919050565b600080611aab600c54611aa5600b5486611b7590919063ffffffff16565b90611b33565b30600090815260066020526040902054909150611ac890826117fc565b30600081815260066020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b199085815260200190565b60405180910390a3611b2b83826116a9565b949350505050565b600061095183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bf4565b600082611b84575060006107af565b6000611b908385611f41565b905082611b9d8583611f1f565b146109515760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107df565b60008183611c155760405162461bcd60e51b81526004016107df9190611e21565b5060006111f68486611f1f565b803561089181611fd4565b600060208284031215611c3f57600080fd5b813561095181611fd4565b60008060408385031215611c5d57600080fd5b8235611c6881611fd4565b91506020830135611c7881611fd4565b809150509250929050565b600080600060608486031215611c9857600080fd5b8335611ca381611fd4565b92506020840135611cb381611fd4565b929592945050506040919091013590565b60008060408385031215611cd757600080fd5b8235611ce281611fd4565b915060208301358015158114611c7857600080fd5b60008060408385031215611d0a57600080fd5b8235611d1581611fd4565b946020939093013593505050565b60006020808385031215611d3657600080fd5b823567ffffffffffffffff80821115611d4e57600080fd5b818501915085601f830112611d6257600080fd5b813581811115611d7457611d74611fbe565b8060051b604051601f19603f83011681018181108582111715611d9957611d99611fbe565b604052828152858101935084860182860187018a1015611db857600080fd5b600095505b83861015611de257611dce81611c22565b855260019590950194938601938601611dbd565b5098975050505050505050565b600060208284031215611e0157600080fd5b5035919050565b600060208284031215611e1a57600080fd5b5051919050565b600060208083528351808285015260005b81811015611e4e57858101830151858201604001528201611e32565b81811115611e60576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7bbb732b960d11b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ee65784516001600160a01b031683529383019391830191600101611ec1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f1a57611f1a611f92565b500190565b600082611f3c57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f5b57611f5b611f92565b500290565b600082821015611f7257611f72611f92565b500390565b6000600019821415611f8b57611f8b611f92565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610d6f57600080fdfea2646970667358221220cb2ad05948bd93cc4a9d635507f6ced9822ff08b09b547fb740c2944c73921f664736f6c6343000807003360806040526ec097ce7bc90715b34b9f1000000000600a5534801561002357600080fd5b50604051610d10380380610d108339810160408190526100429161009a565b600080546001600160a01b03199081163317909155600180546001600160a01b03948516908316179055600280549290931691161790556100cd565b80516001600160a01b038116811461009557600080fd5b919050565b600080604083850312156100ad57600080fd5b6100b68361007e565b91506100c46020840161007e565b90509250929050565b610c34806100dc6000396000f3fe6080604052600436106100e85760003560e01c8063b2bdfa7b1161008a578063e2d2e21911610059578063e2d2e2191461027b578063e319a3d914610291578063ecd0c0c3146102b1578063f0f44260146102d157600080fd5b8063b2bdfa7b146101ce578063ce7c2ac214610206578063d0e30db01461025d578063d54ad2a11461026557600080fd5b80633a98ef39116100c65780633a98ef391461014f5780635cc33f74146101785780638ecc37fb14610198578063997664d7146101b857600080fd5b80631014edf5146100ed57806314b6ca961461010f57806315f7e05e1461012f575b600080fd5b3480156100f957600080fd5b5061010d610108366004610acb565b6102f1565b005b34801561011b57600080fd5b5061010d61012a366004610aa1565b610351565b34801561013b57600080fd5b5061010d61014a366004610a86565b6104c9565b34801561015b57600080fd5b5061016560065481565b6040519081526020015b60405180910390f35b34801561018457600080fd5b50610165610193366004610a86565b6104ec565b3480156101a457600080fd5b506101656101b3366004610a86565b610581565b3480156101c457600080fd5b5061016560075481565b3480156101da57600080fd5b506001546101ee906001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b34801561021257600080fd5b50610242610221366004610a86565b60056020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161016f565b61010d61060a565b34801561027157600080fd5b5061016560085481565b34801561028757600080fd5b5061016560095481565b34801561029d57600080fd5b506002546101ee906001600160a01b031681565b3480156102bd57600080fd5b506000546101ee906001600160a01b031681565b3480156102dd57600080fd5b5061010d6102ec366004610a86565b610649565b6001546001600160a01b0316331461030857600080fd5b476001600160a01b0382166108fc846103215782610323565b845b6040518115909202916000818181858888f1935050505015801561034b573d6000803e3d6000fd5b50505050565b6000546001600160a01b0316331461036857600080fd5b6001600160a01b0382166000908152600560205260409020541561038f5761038f82610682565b6000811180156103b557506001600160a01b038216600090815260056020526040902054155b1561041b57600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916909117905561044e565b8015801561044057506001600160a01b03821660009081526005602052604090205415155b1561044e5761044e82610765565b6001600160a01b03821660009081526005602052604090205460065461047f9183916104799161087a565b906108c5565b6006556001600160a01b03821660009081526005602052604090208190556104a681610924565b6001600160a01b0390921660009081526005602052604090206001019190915550565b6000546001600160a01b031633146104e057600080fd5b6104e981610682565b50565b6001600160a01b0381166000908152600560205260408120546105625760405162461bcd60e51b8152602060048201526024808201527f596f75277265206e6f742061206d696e69464c55464659207368617265686f6c6044820152636465722160e01b60648201526084015b60405180910390fd5b506001600160a01b031660009081526005602052604090206002015490565b6001600160a01b0381166000908152600560205260408120546105a657506000919050565b6001600160a01b0382166000908152600560205260408120546105c890610924565b6001600160a01b0384166000908152600560205260409020600101549091508082116105f8575060009392505050565b610602828261087a565b949350505050565b600754349061061990826108c5565b600755600654600a546106439161063a916106349085610941565b906109c0565b600954906108c5565b60095550565b6000546001600160a01b0316331461066057600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020546106a25750565b60006106ad82610581565b90508015610761576008546106c290826108c5565b6008556001600160a01b0382166000908152600560205260409020600201546106eb90826108c5565b6001600160a01b038316600090815260056020526040902060028101919091555461071590610924565b6001600160a01b038316600081815260056020526040808220600101939093559151909183156108fc02918491818181858888f1935050505015801561075f573d6000803e3d6000fd5b505b5050565b6003805461077590600190610ba5565b8154811061078557610785610be8565b60009182526020808320909101546001600160a01b03848116845260049092526040909220546003805492909316929181106107c3576107c3610be8565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526004918290526040812054600380549193929161080f90600190610ba5565b8154811061081f5761081f610be8565b60009182526020808320909101546001600160a01b03168352820192909252604001902055600380548061085557610855610bd2565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60006108bc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a02565b90505b92915050565b6000806108d28385610b4c565b9050838110156108bc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610559565b60006108bf600a546106346009548561094190919063ffffffff16565b600082610950575060006108bf565b600061095c8385610b86565b9050826109698583610b64565b146108bc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610559565b60006108bc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610a3c565b60008184841115610a265760405162461bcd60e51b81526004016105599190610af7565b506000610a338486610ba5565b95945050505050565b60008183610a5d5760405162461bcd60e51b81526004016105599190610af7565b506000610a338486610b64565b80356001600160a01b0381168114610a8157600080fd5b919050565b600060208284031215610a9857600080fd5b6108bc82610a6a565b60008060408385031215610ab457600080fd5b610abd83610a6a565b946020939093013593505050565b60008060408385031215610ade57600080fd5b82359150610aee60208401610a6a565b90509250929050565b600060208083528351808285015260005b81811015610b2457858101830151858201604001528201610b08565b81811115610b36576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610b5f57610b5f610bbc565b500190565b600082610b8157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610ba057610ba0610bbc565b500290565b600082821015610bb757610bb7610bbc565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea2646970667358221220508a245f2aa58715ee5d510f0c35b75036c69eabceb4eab774e3d7c6889395f364736f6c63430008070033
Deployed Bytecode
0x6080604052600436106102295760003560e01c80636b5caec411610123578063b89402a0116100ab578063f0fc6bca1161006f578063f0fc6bca146106be578063f2fde38b146106d3578063f4293890146106f3578063f708a64f14610708578063f887ea401461072857600080fd5b8063b89402a01461060d578063bf56b3711461062d578063c9567bf914610643578063dd62ed3e14610658578063f0f442601461069e57600080fd5b8063893d20e8116100f2578063893d20e81461055c5780638ecc37fb1461057a57806395d89b411461059a578063a8aa1b31146105cd578063a9059cbb146105ed57600080fd5b80636b5caec4146104d157806370a08231146104f1578063736a83a11461052757806375f0a8741461053c57600080fd5b8063350fcdf9116101b15780635d098b38116101755780635d098b381461042457806361d027b314610444578063658d4b7f1461047c57806367ee5f091461049c57806369fe0e2d146104b157600080fd5b8063350fcdf91461038f5780633e07ce5b146103af578063416501c8146103c4578063571ac8b0146103e45780635cc33f741461040457600080fd5b806323b63585116101f857806323b63585146102ef57806323b872dd1461030f5780632b112e491461032f5780632f54bf6e14610344578063313ce5671461037357600080fd5b806306fdde0314610235578063095ea7b31461027e57806315f7e05e146102ae57806318160ddd146102d057600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5060408051808201909152600e81526d6d696e69466c7566667920496e7560901b60208201525b6040516102759190611e21565b60405180910390f35b34801561028a57600080fd5b5061029e610299366004611cf7565b610748565b6040519015158152602001610275565b3480156102ba57600080fd5b506102ce6102c9366004611c2d565b6107b5565b005b3480156102dc57600080fd5b506004545b604051908152602001610275565b3480156102fb57600080fd5b5061029e61030a366004611def565b61084b565b34801561031b57600080fd5b5061029e61032a366004611c83565b610896565b34801561033b57600080fd5b506102e1610958565b34801561035057600080fd5b5061029e61035f366004611c2d565b6000546001600160a01b0391821691161490565b34801561037f57600080fd5b5060405160098152602001610275565b34801561039b57600080fd5b506102ce6103aa366004611d23565b6109aa565b3480156103bb57600080fd5b506102ce610a71565b3480156103d057600080fd5b5061029e6103df366004611c2d565b610aa8565b3480156103f057600080fd5b5061029e6103ff366004611c2d565b610af2565b34801561041057600080fd5b506102e161041f366004611c2d565b610b00565b34801561043057600080fd5b506102ce61043f366004611c2d565b610b7f565b34801561045057600080fd5b50600e54610464906001600160a01b031681565b6040516001600160a01b039091168152602001610275565b34801561048857600080fd5b506102ce610497366004611cc4565b610bcb565b3480156104a857600080fd5b506102e1610c20565b3480156104bd57600080fd5b506102ce6104cc366004611def565b610c9d565b3480156104dd57600080fd5b506102ce6104ec366004611c2d565b610d14565b3480156104fd57600080fd5b506102e161050c366004611c2d565b6001600160a01b031660009081526006602052604090205490565b34801561053357600080fd5b506102e1610d72565b34801561054857600080fd5b50600d54610464906001600160a01b031681565b34801561056857600080fd5b506000546001600160a01b0316610464565b34801561058657600080fd5b506102e1610595366004611c2d565b610db7565b3480156105a657600080fd5b5060408051808201909152600a8152696d696e69466c5546465960b01b6020820152610268565b3480156105d957600080fd5b50601054610464906001600160a01b031681565b3480156105f957600080fd5b5061029e610608366004611cf7565b610dea565b34801561061957600080fd5b506102ce610628366004611d23565b610df7565b34801561063957600080fd5b506102e160115481565b34801561064f57600080fd5b506102ce610eba565b34801561066457600080fd5b506102e1610673366004611c4a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156106aa57600080fd5b506102ce6106b9366004611c2d565b610ef7565b3480156106ca57600080fd5b506102ce610f6a565b3480156106df57600080fd5b506102ce6106ee366004611c2d565b610fc9565b3480156106ff57600080fd5b506102ce611047565b34801561071457600080fd5b506102ce610723366004611cc4565b6110ab565b34801561073457600080fd5b50600f54610464906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107a39086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107e85760405162461bcd60e51b81526004016107df90611e76565b60405180910390fd5b601454604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e906024015b600060405180830381600087803b15801561083057600080fd5b505af1158015610844573d6000803e3d6000fd5b5050505050565b600080546001600160a01b031633146108765760405162461bcd60e51b81526004016107df90611e76565b60025461088e9030906001600160a01b0316846110df565b90505b919050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610943576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260078252838120338252909152919091205461091e9184906111c5565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b61094e8484846111ff565b90505b9392505050565b6003546001600160a01b03166000908152600660205260408120546109a5906002546001600160a01b031660009081526006602052604090205461099f90600454906116a9565b906116a9565b905090565b6000546001600160a01b031633146109d45760405162461bcd60e51b81526004016107df90611e76565b60005b8151811015610a6d576000600a60008484815181106109f8576109f8611fa8565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550610a5b828281518110610a4c57610a4c611fa8565b602002602001015160006116eb565b80610a6581611f77565b9150506109d7565b5050565b6000546001600160a01b03163314610a9b5760405162461bcd60e51b81526004016107df90611e76565b6012805461ff0019169055565b600080546001600160a01b03163314610ad35760405162461bcd60e51b81526004016107df90611e76565b506001600160a01b03166000908152600a602052604090205460ff1690565b600061088e82600019610748565b601454604051631730cfdd60e21b81526001600160a01b0383811660048301526000921690635cc33f74906024015b60206040518083038186803b158015610b4757600080fd5b505afa158015610b5b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088e9190611e08565b6000546001600160a01b03163314610ba95760405162461bcd60e51b81526004016107df90611e76565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bf55760405162461bcd60e51b81526004016107df90611e76565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6014546040805163997664d760e01b815290516000926001600160a01b03169163997664d7916004808301926020929190829003018186803b158015610c6557600080fd5b505afa158015610c79573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a59190611e08565b6000546001600160a01b03163314610cc75760405162461bcd60e51b81526004016107df90611e76565b600e811115610d0f5760405162461bcd60e51b81526020600482015260146024820152734665652063616e2774206578636565642031342560601b60448201526064016107df565b600b55565b6000546001600160a01b03163314610d3e5760405162461bcd60e51b81526004016107df90611e76565b6001600160a01b0381166000908152600a60205260409020805460ff19166001908117909155610d6f9082906116eb565b50565b6014546040805163d54ad2a160e01b815290516000926001600160a01b03169163d54ad2a1916004808301926020929190829003018186803b158015610c6557600080fd5b601454604051638ecc37fb60e01b81526001600160a01b0383811660048301526000921690638ecc37fb90602401610b2f565b60006109513384846111ff565b6000546001600160a01b03163314610e215760405162461bcd60e51b81526004016107df90611e76565b60005b8151811015610a6d576001600a6000848481518110610e4557610e45611fa8565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550610ea8828281518110610e9957610e99611fa8565b602002602001015160016116eb565b80610eb281611f77565b915050610e24565b6000546001600160a01b03163314610ee45760405162461bcd60e51b81526004016107df90611e76565b436011556012805460ff19166001179055565b6000546001600160a01b03163314610f215760405162461bcd60e51b81526004016107df90611e76565b600e80546001600160a01b0319166001600160a01b03838116918217909255601454604051630787a21360e51b815260048101929092529091169063f0f4426090602401610816565b601454604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610ff35760405162461bcd60e51b81526004016107df90611e76565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146110715760405162461bcd60e51b81526004016107df90611e76565b600d5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610a6d573d6000803e3d6000fd5b6000546001600160a01b031633146110d55760405162461bcd60e51b81526004016107df90611e76565b610a6d82826116eb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546111309184906111c5565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461115f90836117fc565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111b39086815260200190565b60405180910390a35060019392505050565b600081848411156111e95760405162461bcd60e51b81526004016107df9190611e21565b5060006111f68486611f60565b95945050505050565b600080546001600160a01b0385811691161480159061122c57506000546001600160a01b03848116911614155b156112835760125460ff166112835760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016107df565b6001600160a01b0384166000908152600a602052604090205460ff161580156112c557506001600160a01b0383166000908152600a602052604090205460ff16155b6112fc5760405162461bcd60e51b81526020600482015260086024820152674e6963652074727960c01b60448201526064016107df565b601254610100900460ff161561137e576000546001600160a01b0385811691161480159061133857506000546001600160a01b03848116911614155b1561137e5760135482111561137e5760405162461bcd60e51b815260206004820152600c60248201526b2a37b79036bab1b41039b4b960a11b60448201526064016107df565b60115461138c906001611f07565b43116113ce576001600160a01b0383166000908152600a602090815260408083208054600160ff19918216811790925560099093529220805490911690911790555b601454600160a01b900460ff16156113f2576113eb8484846110df565b9050610951565b6010546000906001600160a01b03858116911614801561141f575030600090815260066020526040812054115b9050801561142f5761142f61185b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600690915291909120546114819185906111c5565b6001600160a01b0386166000908152600660205260408120919091556114a78686611a12565b6114b157836114bb565b6114bb8685611a87565b6001600160a01b0386166000908152600660205260409020549091506114e190826117fc565b6001600160a01b0380871660009081526006602052604090209190915560105487821691161480159061152d57506001600160a01b03861660009081526009602052604090205460ff16155b156115a3576014546001600160a01b0387811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561159057600080fd5b505af19250505080156115a1575060015b505b6010546001600160a01b038681169116148015906115da57506001600160a01b03851660009081526009602052604090205460ff16155b15611650576014546001600160a01b0386811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561163d57600080fd5b505af192505050801561164e575060015b505b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161169591815260200190565b60405180910390a350600195945050505050565b600061095183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111c5565b6001600160a01b038216301480159061171257506010546001600160a01b03838116911614155b61171b57600080fd5b6001600160a01b0382166000908152600960205260409020805460ff191682158015919091179091556117b357601454604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561179757600080fd5b505af11580156117ab573d6000803e3d6000fd5b505050505050565b6014546001600160a01b0383811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca969060440161177d565b6000806118098385611f07565b9050838110156109515760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107df565b6014805460ff60a01b1916600160a01b17905530600090815260066020526040812054604080516002808252606082019092529192506000919081602001602082028036833701905050905030816000815181106118bb576118bb611fa8565b6001600160a01b03928316602091820292909201015260018054835192169183919081106118eb576118eb611fa8565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b815291169063791ac94790611931908590600090869030904290600401611e96565b600060405180830381600087803b15801561194b57600080fd5b505af115801561195f573d6000803e3d6000fd5b505050506000611979600247611b3390919063ffffffff16565b90506000611988476002611b33565b600d546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156119c3573d6000803e3d6000fd5b50600e546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156119fe573d6000803e3d6000fd5b50506014805460ff60a01b19169055505050565b6001600160a01b03821660009081526008602052604081205460ff1680611a5157506001600160a01b03821660009081526008602052604090205460ff165b15801561095157506010546001600160a01b03848116911614806109515750506010546001600160a01b03908116911614919050565b600080611aab600c54611aa5600b5486611b7590919063ffffffff16565b90611b33565b30600090815260066020526040902054909150611ac890826117fc565b30600081815260066020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b199085815260200190565b60405180910390a3611b2b83826116a9565b949350505050565b600061095183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bf4565b600082611b84575060006107af565b6000611b908385611f41565b905082611b9d8583611f1f565b146109515760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107df565b60008183611c155760405162461bcd60e51b81526004016107df9190611e21565b5060006111f68486611f1f565b803561089181611fd4565b600060208284031215611c3f57600080fd5b813561095181611fd4565b60008060408385031215611c5d57600080fd5b8235611c6881611fd4565b91506020830135611c7881611fd4565b809150509250929050565b600080600060608486031215611c9857600080fd5b8335611ca381611fd4565b92506020840135611cb381611fd4565b929592945050506040919091013590565b60008060408385031215611cd757600080fd5b8235611ce281611fd4565b915060208301358015158114611c7857600080fd5b60008060408385031215611d0a57600080fd5b8235611d1581611fd4565b946020939093013593505050565b60006020808385031215611d3657600080fd5b823567ffffffffffffffff80821115611d4e57600080fd5b818501915085601f830112611d6257600080fd5b813581811115611d7457611d74611fbe565b8060051b604051601f19603f83011681018181108582111715611d9957611d99611fbe565b604052828152858101935084860182860187018a1015611db857600080fd5b600095505b83861015611de257611dce81611c22565b855260019590950194938601938601611dbd565b5098975050505050505050565b600060208284031215611e0157600080fd5b5035919050565b600060208284031215611e1a57600080fd5b5051919050565b600060208083528351808285015260005b81811015611e4e57858101830151858201604001528201611e32565b81811115611e60576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7bbb732b960d11b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ee65784516001600160a01b031683529383019391830191600101611ec1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f1a57611f1a611f92565b500190565b600082611f3c57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f5b57611f5b611f92565b500290565b600082821015611f7257611f72611f92565b500390565b6000600019821415611f8b57611f8b611f92565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610d6f57600080fdfea2646970667358221220cb2ad05948bd93cc4a9d635507f6ced9822ff08b09b547fb740c2944c73921f664736f6c63430008070033
Deployed Bytecode Sourcemap
9451:10437:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12161:80;;;;;;;;;;-1:-1:-1;12233:5:0;;;;;;;;;;;;-1:-1:-1;;;12233:5:0;;;;12161:80;;;;;;;:::i;:::-;;;;;;;;12583:216;;;;;;;;;;-1:-1:-1;12583:216:0;;;;;:::i;:::-;;:::i;:::-;;;5150:14:1;;5143:22;5125:41;;5113:2;5098:18;12583:216:0;4985:187:1;18499:110:0;;;;;;;;;;-1:-1:-1;18499:110:0;;;;;:::i;:::-;;:::i;:::-;;11891:88;;;;;;;;;;-1:-1:-1;11964:12:0;;11891:88;;;8622:25:1;;;8610:2;8595:18;11891:88:0;8476:177:1;18789:139:0;;;;;;;;;;-1:-1:-1;18789:139:0;;;;;:::i;:::-;;:::i;13101:370::-;;;;;;;;;;-1:-1:-1;13101:370:0;;;;;:::i;:::-;;:::i;18940:142::-;;;;;;;;;;;;;:::i;2826:103::-;;;;;;;;;;-1:-1:-1;2826:103:0;;;;;:::i;:::-;2881:4;2916:5;-1:-1:-1;;;;;2905:16:0;;;2916:5;;2905:16;;2826:103;11985:80;;;;;;;;;;-1:-1:-1;11985:80:0;;9846:1;9785:36:1;;9773:2;9758:18;11985:80:0;9643:184:1;17099:218:0;;;;;;;;;;-1:-1:-1;17099:218:0;;;;;:::i;:::-;;:::i;19805:80::-;;;;;;;;;;;;;:::i;17325:115::-;;;;;;;;;;-1:-1:-1;17325:115:0;;;;;:::i;:::-;;:::i;12807:122::-;;;;;;;;;;-1:-1:-1;12807:122:0;;;;;:::i;:::-;;:::i;19640:157::-;;;;;;;;;;-1:-1:-1;19640:157:0;;;;;:::i;:::-;;:::i;19090:135::-;;;;;;;;;;-1:-1:-1;19090:135:0;;;;;:::i;:::-;;:::i;10472:85::-;;;;;;;;;;-1:-1:-1;10472:85:0;;;;-1:-1:-1;;;;;10472:85:0;;;;;;-1:-1:-1;;;;;3935:32:1;;;3917:51;;3905:2;3890:18;10472:85:0;3771:203:1;17937:119:0;;;;;;;;;;-1:-1:-1;17937:119:0;;;;;:::i;:::-;;:::i;19393:115::-;;;;;;;;;;;;;:::i;18064:139::-;;;;;;;;;;-1:-1:-1;18064:139:0;;;;;:::i;:::-;;:::i;16720:141::-;;;;;;;;;;-1:-1:-1;16720:141:0;;;;;:::i;:::-;;:::i;12331:105::-;;;;;;;;;;-1:-1:-1;12331:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;12415:18:0;12397:7;12415:18;;;:9;:18;;;;;;;12331:105;19520:111;;;;;;;;;;;;;:::i;10373:92::-;;;;;;;;;;-1:-1:-1;10373:92:0;;;;-1:-1:-1;;;;;10373:92:0;;;12247:78;;;;;;;;;;-1:-1:-1;12299:7:0;12317:5;-1:-1:-1;;;;;12317:5:0;12247:78;;18621:156;;;;;;;;;;-1:-1:-1;18621:156:0;;;;;:::i;:::-;;:::i;12071:84::-;;;;;;;;;;-1:-1:-1;12145:7:0;;;;;;;;;;;;-1:-1:-1;;;12145:7:0;;;;12071:84;;10597:19;;;;;;;;;;-1:-1:-1;10597:19:0;;;;-1:-1:-1;;;;;10597:19:0;;;12937:156;;;;;;;;;;-1:-1:-1;12937:156:0;;;;;:::i;:::-;;:::i;16873:216::-;;;;;;;;;;-1:-1:-1;16873:216:0;;;;;:::i;:::-;;:::i;10625:25::-;;;;;;;;;;;;;;;;16585:115;;;;;;;;;;;;;:::i;12442:133::-;;;;;;;;;;-1:-1:-1;12442:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12544:19:0;;;12526:7;12544:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12442:133;19233:152;;;;;;;;;;-1:-1:-1;19233:152:0;;;;;:::i;:::-;;:::i;18397:90::-;;;;;;;;;;;;;:::i;3054:136::-;;;;;;;;;;-1:-1:-1;3054:136:0;;;;;:::i;:::-;;:::i;18215:174::-;;;;;;;;;;;;;:::i;17797:132::-;;;;;;;;;;-1:-1:-1;17797:132:0;;;;;:::i;:::-;;:::i;10566:24::-;;;;;;;;;;-1:-1:-1;10566:24:0;;;;-1:-1:-1;;;;;10566:24:0;;;12583:216;12687:10;12658:4;12675:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12675:32:0;;;;;;;;;;:41;;;12732:37;12658:4;;12675:32;;12732:37;;;;12710:6;8622:25:1;;8610:2;8595:18;;8476:177;12732:37:0;;;;;;;;-1:-1:-1;12787:4:0;12583:216;;;;;:::o;18499:110::-;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;;;;;;;;;18568:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;18568:33:0;;-1:-1:-1;;;;;3935:32:1;;;18568:33:0::1;::::0;::::1;3917:51:1::0;18568:11:0;;::::1;::::0;:25:::1;::::0;3890:18:1;;18568:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18499:110:::0;:::o;18789:139::-;18853:4;2916:5;;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;18907:4:::1;::::0;18877:43:::1;::::0;18900:4:::1;::::0;-1:-1:-1;;;;;18907:4:0::1;18913:6:::0;18877:14:::1;:43::i;:::-;18870:50;;2757:1;18789:139:::0;;;:::o;13101:370::-;-1:-1:-1;;;;;13221:19:0;;13201:4;13221:19;;;:11;:19;;;;;;;;13241:10;13221:31;;;;;;;;-1:-1:-1;;13221:52:0;13218:186;;13323:69;;;;;;;;;;;-1:-1:-1;;;13323:69:0;;;;;;;;-1:-1:-1;;;;;13323:19:0;;-1:-1:-1;13323:19:0;;;:11;:19;;;;;13343:10;13323:31;;;;;;;;;;:69;;13359:6;;13323:35;:69::i;:::-;-1:-1:-1;;;;;13289:19:0;;;;;;:11;:19;;;;;;;;13309:10;13289:31;;;;;;;:103;13218:186;13423:40;13437:6;13445:9;13456:6;13423:13;:40::i;:::-;13416:47;;13101:370;;;;;;:::o;18940:142::-;19068:4;;-1:-1:-1;;;;;19068:4:0;18993:7;12415:18;;;:9;:18;;;;;;19020:54;;19047:4;;-1:-1:-1;;;;;19047:4:0;12397:7;12415:18;;;:9;:18;;;;;;19020:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;19013:61;;18940:142;:::o;17099:218::-;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;17179:6:::1;17174:136;17195:5;:12;17191:1;:16;17174:136;;;17243:5;17225;:15;17231:5;17237:1;17231:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;17225:15:0::1;-1:-1:-1::0;;;;;17225:15:0::1;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17259:37;17280:5;17286:1;17280:8;;;;;;;;:::i;:::-;;;;;;;17290:5;17259:20;:37::i;:::-;17209:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17174:136;;;;17099:218:::0;:::o;19805:80::-;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;19861:8:::1;:16:::0;;-1:-1:-1;;19861:16:0::1;::::0;;19805:80::o;17325:115::-;17393:4;2916:5;;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;17417:15:0::1;;::::0;;;:5:::1;:15;::::0;;;;;::::1;;::::0;17325:115::o;12807:122::-;12862:4;12886:35;12894:7;-1:-1:-1;;12886:7:0;:35::i;19640:157::-;19743:11;;:46;;-1:-1:-1;;;19743:46:0;;-1:-1:-1;;;;;3935:32:1;;;19743:46:0;;;3917:51:1;19716:7:0;;19743:11;;:33;;3890:18:1;;19743:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19090:135::-;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;19174:15:::1;:43:::0;;-1:-1:-1;;;;;;19174:43:0::1;-1:-1:-1::0;;;;;19174:43:0;;;::::1;::::0;;;::::1;::::0;;19090:135::o;17937:119::-;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18020:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;18020:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17937:119::o;19393:115::-;19472:11;;:28;;;-1:-1:-1;;;19472:28:0;;;;19445:7;;-1:-1:-1;;;;;19472:11:0;;:26;;:28;;;;;;;;;;;;;;:11;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18064:139::-;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;18142:2:::1;18134:4;:10;;18125:44;;;::::0;-1:-1:-1;;;18125:44:0;;6541:2:1;18125:44:0::1;::::0;::::1;6523:21:1::0;6580:2;6560:18;;;6553:30;-1:-1:-1;;;6599:18:1;;;6592:50;6659:18;;18125:44:0::1;6339:344:1::0;18125:44:0::1;18180:8;:15:::0;18064:139::o;16720:141::-;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16784:15:0;::::1;;::::0;;;:5:::1;:15;::::0;;;;:22;;-1:-1:-1;;16784:22:0::1;16802:4;16784:22:::0;;::::1;::::0;;;16817:36:::1;::::0;16790:8;;16817:20:::1;:36::i;:::-;16720:141:::0;:::o;19520:111::-;19597:11;;:26;;;-1:-1:-1;;;19597:26:0;;;;19570:7;;-1:-1:-1;;;;;19597:11:0;;:24;;:26;;;;;;;;;;;;;;:11;:26;;;;;;;;;;18621:156;18722:11;;:47;;-1:-1:-1;;;18722:47:0;;-1:-1:-1;;;;;3935:32:1;;;18722:47:0;;;3917:51:1;18695:7:0;;18722:11;;:34;;3890:18:1;;18722:47:0;3771:203:1;12937:156:0;13017:4;13041:44;13055:10;13067:9;13078:6;13041:13;:44::i;16873:216::-;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;16953:6:::1;16948:134;16969:5;:12;16965:1;:16;16948:134;;;17017:4;16999:5;:15;17005:5;17011:1;17005:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;16999:15:0::1;-1:-1:-1::0;;;;;16999:15:0::1;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;17032:36;17053:5;17059:1;17053:8;;;;;;;;:::i;:::-;;;;;;;17063:4;17032:20;:36::i;:::-;16983:3:::0;::::1;::::0;::::1;:::i;:::-;;;;16948:134;;16585:115:::0;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;16651:12:::1;16638:10;:25:::0;16674:11:::1;:18:::0;;-1:-1:-1;;16674:18:0::1;16688:4;16674:18;::::0;;16585:115::o;19233:152::-;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;19303:8:::1;:29:::0;;-1:-1:-1;;;;;;19303:29:0::1;-1:-1:-1::0;;;;;19303:29:0;;::::1;::::0;;::::1;::::0;;;19343:11:::1;::::0;:34:::1;::::0;-1:-1:-1;;;19343:34:0;;::::1;::::0;::::1;3917:51:1::0;;;;19343:11:0;;::::1;::::0;:23:::1;::::0;3890:18:1;;19343:34:0::1;3771:203:1::0;18397:90:0;18442:11;;:37;;-1:-1:-1;;;18442:37:0;;18468:10;18442:37;;;3917:51:1;-1:-1:-1;;;;;18442:11:0;;;;:25;;3890:18:1;;18442:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18397:90::o;3054:136::-;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;3130:5:::1;:11:::0;;-1:-1:-1;;;;;;3130:11:0::1;-1:-1:-1::0;;;;;3130:11:0;::::1;::::0;;::::1;::::0;;;3157:25:::1;::::0;3917:51:1;;;3157:25:0::1;::::0;3905:2:1;3890:18;3157:25:0::1;;;;;;;3054:136:::0;:::o;18215:174::-;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;18336:15:::1;::::0;18328:53:::1;::::0;18296:21:::1;::::0;-1:-1:-1;;;;;18336:15:0::1;::::0;18328:53;::::1;;;::::0;18296:21;;18267:26:::1;18328:53:::0;18267:26;18328:53;18296:21;18336:15;18328:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;17797:132:::0;2881:4;2916:5;-1:-1:-1;;;;;2916:5:0;2733:10;2905:16;2717:38;;;;-1:-1:-1;;;2717:38:0;;;;;;;:::i;:::-;17885:36:::1;17906:6;17914;17885:20;:36::i;14948:330::-:0;15078:53;;;;;;;;;;;-1:-1:-1;;;15078:53:0;;;;;;;;-1:-1:-1;;;;;15078:17:0;;15041:4;15078:17;;;:9;:17;;;;;;;:53;;15100:6;;15078:21;:53::i;:::-;-1:-1:-1;;;;;15058:17:0;;;;;;;:9;:17;;;;;;:73;;;;15165:20;;;;;;;:32;;15190:6;15165:24;:32::i;:::-;-1:-1:-1;;;;;15142:20:0;;;;;;;:9;:20;;;;;;;:55;;;;15213:35;;;;;;;;;;15241:6;8622:25:1;;8610:2;8595:18;;8476:177;15213:35:0;;;;;;;;-1:-1:-1;15266:4:0;14948:330;;;;;:::o;488:192::-;574:7;610:12;602:6;;;;594:29;;;;-1:-1:-1;;;594:29:0;;;;;;;;:::i;:::-;-1:-1:-1;634:9:0;646:5;650:1;646;:5;:::i;:::-;634:17;488:192;-1:-1:-1;;;;;488:192:0:o;13479:1457::-;13571:4;13601:5;;-1:-1:-1;;;;;13592:14:0;;;13601:5;;13592:14;;;;:35;;-1:-1:-1;13622:5:0;;-1:-1:-1;;;;;13610:17:0;;;13622:5;;13610:17;;13592:35;13588:89;;;13637:11;;;;13629:48;;;;-1:-1:-1;;;13629:48:0;;8325:2:1;13629:48:0;;;8307:21:1;8364:2;8344:18;;;8337:30;8403:26;8383:18;;;8376:54;8447:18;;13629:48:0;8123:348:1;13629:48:0;-1:-1:-1;;;;;13738:13:0;;;;;;:5;:13;;;;;;;;13737:14;:35;;;;-1:-1:-1;;;;;;13756:16:0;;;;;;:5;:16;;;;;;;;13755:17;13737:35;13728:57;;;;-1:-1:-1;;;13728:57:0;;6890:2:1;13728:57:0;;;6872:21:1;6929:1;6909:18;;;6902:29;-1:-1:-1;;;6947:18:1;;;6940:38;6995:18;;13728:57:0;6688:331:1;13728:57:0;13800:8;;;;;;;13796:130;;;13838:5;;-1:-1:-1;;;;;13830:13:0;;;13838:5;;13830:13;;;;:34;;-1:-1:-1;13859:5:0;;-1:-1:-1;;;;;13847:17:0;;;13859:5;;13847:17;;13830:34;13826:80;;;13883:6;;13875;:14;;13866:40;;;;-1:-1:-1;;;13866:40:0;;7582:2:1;13866:40:0;;;7564:21:1;7621:2;7601:18;;;7594:30;-1:-1:-1;;;7640:18:1;;;7633:42;7692:18;;13866:40:0;7380:336:1;13866:40:0;13957:10;;:14;;13970:1;13957:14;:::i;:::-;13940:12;:32;13936:139;;-1:-1:-1;;;;;13990:16:0;;;;;;:5;:16;;;;;;;;:23;;14009:4;-1:-1:-1;;13990:23:0;;;;;;;;14028:16;:27;;;;;:34;;;;;;;;;;13936:139;14097:6;;-1:-1:-1;;;14097:6:0;;;;14094:63;;;14113:41;14128:6;14136:9;14147:6;14113:14;:41::i;:::-;14106:48;;;;14094:63;14228:4;;14179:19;;-1:-1:-1;;;;;14217:15:0;;;14228:4;;14217:15;:47;;;;-1:-1:-1;14254:4:0;14263:1;12415:18;;;:9;:18;;;;;;14236:28;14217:47;14179:86;;14279:14;14276:33;;;14296:10;:8;:10::i;:::-;14341:53;;;;;;;;;;;-1:-1:-1;;;14341:53:0;;;;;;;;-1:-1:-1;;;;;14341:17:0;;-1:-1:-1;14341:17:0;;;:9;:17;;;;;;;;:53;;14363:6;;14341:21;:53::i;:::-;-1:-1:-1;;;;;14321:17:0;;;;;;:9;:17;;;;;:73;;;;14432:32;14331:6;14454:9;14432:13;:32::i;:::-;:67;;14493:6;14432:67;;;14467:23;14475:6;14483;14467:7;:23::i;:::-;-1:-1:-1;;;;;14543:20:0;;;;;;:9;:20;;;;;;14407:92;;-1:-1:-1;14543:40:0;;14407:92;14543:24;:40::i;:::-;-1:-1:-1;;;;;14520:20:0;;;;;;;:9;:20;;;;;:63;;;;14609:4;;14599:14;;;14609:4;;14599:14;;;;:43;;-1:-1:-1;;;;;;14618:24:0;;;;;;:16;:24;;;;;;;;14617:25;14599:43;14596:114;;;14649:11;;-1:-1:-1;;;;;14678:17:0;;;14649:11;14678:17;;;:9;:17;;;;;;;;14649:47;;-1:-1:-1;;;14649:47:0;;;;;4601:51:1;;;;4668:18;;;4661:34;14649:11:0;;;:20;;4574:18:1;;14649:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14645:63;;14736:4;;-1:-1:-1;;;;;14723:17:0;;;14736:4;;14723:17;;;;:49;;-1:-1:-1;;;;;;14745:27:0;;;;;;:16;:27;;;;;;;;14744:28;14723:49;14720:126;;;14779:11;;-1:-1:-1;;;;;14811:20:0;;;14779:11;14811:20;;;:9;:20;;;;;;;;14779:53;;-1:-1:-1;;;14779:53:0;;;;;4601:51:1;;;;4668:18;;;4661:34;14779:11:0;;;:20;;4574:18:1;;14779:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14775:69;;14880:9;-1:-1:-1;;;;;14863:43:0;14872:6;-1:-1:-1;;;;;14863:43:0;;14891:14;14863:43;;;;8622:25:1;;8610:2;8595:18;;8476:177;14863:43:0;;;;;;;;-1:-1:-1;14924:4:0;;13479:1457;-1:-1:-1;;;;;13479:1457:0:o;346:136::-;404:7;431:43;435:1;438;431:43;;;;;;;;;;;;;;;;;:3;:43::i;17452:337::-;-1:-1:-1;;;;;17539:23:0;;17557:4;17539:23;;;;:41;;-1:-1:-1;17576:4:0;;-1:-1:-1;;;;;17566:14:0;;;17576:4;;17566:14;;17539:41;17531:50;;;;;;-1:-1:-1;;;;;17592:24:0;;;;;;:16;:24;;;;;:33;;-1:-1:-1;;17592:33:0;;;;;;;;;;;;17636:146;;17661:11;;:31;;-1:-1:-1;;;17661:31:0;;-1:-1:-1;;;;;4619:32:1;;;17661:31:0;;;4601:51:1;17661:11:0;4668:18:1;;;4661:34;17661:11:0;;;;:20;;4574:18:1;;17661:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17174:136:::1;17099:218:::0;:::o;17636:146::-;17723:11;;-1:-1:-1;;;;;17752:17:0;;;17723:11;17752:17;;;:9;:17;;;;;;;;17723:47;;-1:-1:-1;;;17723:47:0;;;;;4601:51:1;;;;4668:18;;;4661:34;17723:11:0;;;:20;;4574:18:1;;17723:47:0;4419:282:1;159:181:0;217:7;;249:5;253:1;249;:5;:::i;:::-;237:17;;278:1;273;:6;;265:46;;;;-1:-1:-1;;;265:46:0;;7226:2:1;265:46:0;;;7208:21:1;7265:2;7245:18;;;7238:30;7304:29;7284:18;;;7277:57;7351:18;;265:46:0;7024:351:1;15870:701:0;10902:6;:13;;-1:-1:-1;;;;10902:13:0;-1:-1:-1;;;10902:13:0;;;15960:4:::1;-1:-1:-1::0;12415:18:0;;;:9;:18;;;;;;16003:16:::1;::::0;;16017:1:::1;16003:16:::0;;;;;::::1;::::0;;;15919:47;;-1:-1:-1;15979:21:0::1;::::0;16003:16;::::1;;;;;;;;;;;::::0;-1:-1:-1;16003:16:0::1;15979:40;;16048:4;16030;16035:1;16030:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16030:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16074:4:::1;::::0;;16064:7;;16074:4;::::1;::::0;16064;;16074;16064:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16064:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16101:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;16101:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;16173:12;;16101:6:::1;::::0;16216:4;;16243::::1;::::0;16263:15:::1;::::0;16101:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16310:22;16335:30;16363:1;16336:21;16335:27;;:30;;;;:::i;:::-;16310:55:::0;-1:-1:-1;16376:23:0::1;16402:30;16403:21;16430:1;16402:27;:30::i;:::-;16468:15;::::0;16460:50:::1;::::0;16376:56;;-1:-1:-1;;;;;;16468:15:0::1;::::0;16460:50;::::1;;;::::0;16376:56;;16468:15:::1;16460:50:::0;16468:15;16460:50;16376:56;16468:15;16460:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;16529:8:0::1;::::0;16521:42:::1;::::0;-1:-1:-1;;;;;16529:8:0;;::::1;::::0;16521:42;::::1;;;::::0;16548:14;;16529:8:::1;16521:42:::0;16529:8;16521:42;16548:14;16529:8;16521:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10920:6:0;:14;;-1:-1:-1;;;;10920:14:0;;;-1:-1:-1;;;15870:701:0:o;15289:206::-;-1:-1:-1;;;;;15398:19:0;;15370:4;15398:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;15421:22:0;;;;;;:11;:22;;;;;;;;15398:45;15396:48;:90;;;;-1:-1:-1;15460:4:0;;-1:-1:-1;;;;;15450:14:0;;;15460:4;;15450:14;;:35;;-1:-1:-1;;15481:4:0;;-1:-1:-1;;;;;15481:4:0;;;15468:17;;;;15289:206;-1:-1:-1;15289:206:0:o;15503:354::-;15570:7;15590:17;15630:40;15655:14;;15630:20;15641:8;;15630:6;:10;;:20;;;;:::i;:::-;:24;;:40::i;:::-;15726:4;15708:24;;;;:9;:24;;;;;;15618:52;;-1:-1:-1;15708:39:0;;15618:52;15708:28;:39::i;:::-;15699:4;15681:24;;;;:9;:24;;;;;;;:66;;;;15763:42;;-1:-1:-1;;;;;15763:42:0;;;;;;;15795:9;8622:25:1;;8610:2;8595:18;;8476:177;15763:42:0;;;;;;;;15828:21;:6;15839:9;15828:10;:21::i;:::-;15821:28;15503:354;-1:-1:-1;;;;15503:354:0:o;942:132::-;1000:7;1027:39;1031:1;1034;1027:39;;;;;;;;;;;;;;;;;:3;:39::i;686:250::-;744:7;768:6;764:47;;-1:-1:-1;798:1:0;791:8;;764:47;823:9;835:5;839:1;835;:5;:::i;:::-;823:17;-1:-1:-1;868:1:0;859:5;863:1;823:17;859:5;:::i;:::-;:10;851:56;;;;-1:-1:-1;;;851:56:0;;7923:2:1;851:56:0;;;7905:21:1;7962:2;7942:18;;;7935:30;8001:34;7981:18;;;7974:62;-1:-1:-1;;;8052:18:1;;;8045:31;8093:19;;851:56:0;7721:397:1;1080:345:0;1166:7;1268:12;1261:5;1253:28;;;;-1:-1:-1;;;1253:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1292:9:0;1304:5;1308:1;1304;: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;5403:597::-;5515:4;5544:2;5573;5562:9;5555:21;5605:6;5599:13;5648:6;5643:2;5632:9;5628:18;5621:34;5673:1;5683:140;5697:6;5694:1;5691:13;5683:140;;;5792:14;;;5788:23;;5782:30;5758:17;;;5777:2;5754:26;5747:66;5712:10;;5683:140;;;5841:6;5838:1;5835:13;5832:91;;;5911:1;5906:2;5897:6;5886:9;5882:22;5878:31;5871:42;5832:91;-1:-1:-1;5984:2:1;5963:15;-1:-1:-1;;5959:29:1;5944:45;;;;5991:2;5940:54;;5403:597;-1:-1:-1;;;5403:597:1:o;6005:329::-;6207:2;6189:21;;;6246:1;6226:18;;;6219:29;-1:-1:-1;;;6279:2:1;6264:18;;6257:36;6325:2;6310:18;;6005:329::o;8658:980::-;8920:4;8968:3;8957:9;8953:19;8999:6;8988:9;8981:25;9025:2;9063:6;9058:2;9047:9;9043:18;9036:34;9106:3;9101:2;9090:9;9086:18;9079:31;9130:6;9165;9159:13;9196:6;9188;9181:22;9234:3;9223:9;9219:19;9212:26;;9273:2;9265:6;9261:15;9247:29;;9294:1;9304:195;9318:6;9315:1;9312:13;9304:195;;;9383:13;;-1:-1:-1;;;;;9379:39:1;9367:52;;9474:15;;;;9439:12;;;;9415:1;9333:9;9304:195;;;-1:-1:-1;;;;;;;9555:32:1;;;;9550:2;9535:18;;9528:60;-1:-1:-1;;;9619:3:1;9604:19;9597:35;9516:3;8658:980;-1:-1:-1;;;8658:980:1:o;9832:128::-;9872:3;9903:1;9899:6;9896:1;9893:13;9890:39;;;9909:18;;:::i;:::-;-1:-1:-1;9945:9:1;;9832:128::o;9965:217::-;10005:1;10031;10021:132;;10075:10;10070:3;10066:20;10063:1;10056:31;10110:4;10107:1;10100:15;10138:4;10135:1;10128:15;10021:132;-1:-1:-1;10167:9:1;;9965:217::o;10187:168::-;10227:7;10293:1;10289;10285:6;10281:14;10278:1;10275:21;10270:1;10263:9;10256:17;10252:45;10249:71;;;10300:18;;:::i;:::-;-1:-1:-1;10340:9:1;;10187:168::o;10360:125::-;10400:4;10428:1;10425;10422:8;10419:34;;;10433:18;;:::i;:::-;-1:-1:-1;10470:9:1;;10360:125::o;10490:135::-;10529:3;-1:-1:-1;;10550:17:1;;10547:43;;;10570:18;;:::i;:::-;-1:-1:-1;10617:1:1;10606:13;;10490:135::o;10630:127::-;10691:10;10686:3;10682:20;10679:1;10672:31;10722:4;10719:1;10712:15;10746:4;10743:1;10736:15;10762:127;10823:10;10818:3;10814:20;10811:1;10804:31;10854:4;10851:1;10844:15;10878:4;10875:1;10868:15;10894:127;10955:10;10950:3;10946:20;10943:1;10936:31;10986:4;10983:1;10976:15;11010:4;11007:1;11000:15;11026:131;-1:-1:-1;;;;;11101:31:1;;11091:42;;11081:70;;11147:1;11144;11137:12
Swarm Source
ipfs://508a245f2aa58715ee5d510f0c35b75036c69eabceb4eab774e3d7c6889395f3
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.