ERC-20
Overview
Max Total Supply
1,000,000,000,000 MBCD
Holders
92
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
11,550,794,646.377798488 MBCDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
McDonaldBrainCapitalDAO
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-05 */ /** McDonald Brain Capital DAO https://twitter.com/McDonaldDAO https://t.me/McDonaldBrainCapital Tax: 14% ( 3% marketing, 4% treasury & yield farming, 7% Reflection to holders) **/ 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 MBCD shareholder!"); return shares[shareholder].totalClaimed; } } contract McDonaldBrainCapitalDAO is IBEP20, Auth { using SafeMath for uint256; address private WETH; address private DEAD = 0x000000000000000000000000000000000000dEaD; address private ZERO = 0x0000000000000000000000000000000000000000; string private constant _name = "McDonald Brain Capital DAO"; string private constant _symbol = "MBCD"; 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(0xfc104148430db2081C3659D9dE737ED0329bFe7F); address payable public treasury = payable(0x6A4ff452f25A2fDC1111cC3fBa191E5969aE253e); IDEXRouter public router; address public pair; uint256 public launchedAt; bool private tradingOpen; bool private buyLimit = true; uint256 private maxBuy = 5000000000 * (10 ** _decimals); DividendDistributor public distributor; bool private inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor ( ) Auth(0xA3353FFF76b34B2174fF11f54A33e5f0DeFeCE38) { address _owner = 0xA3353FFF76b34B2174fF11f54A33e5f0DeFeCE38; 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
608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000b01565b64e8d4a51000620000ab919062000c3e565b600455600454600555600e600b556064600c5573fc104148430db2081c3659d9de737ed0329bfe7f600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736a4ff452f25a2fdc1111cc3fba191e5969ae253e600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260016101000a81548160ff0219169083151502179055506009600a62000193919062000b01565b64012a05f200620001a5919062000c3e565b601355348015620001b557600080fd5b5073a3353fff76b34b2174ff11f54a33e5f0defece38806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600073a3353fff76b34b2174ff11f54a33e5f0defece389050737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002e357600080fd5b505afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e9190620009ca565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c757600080fd5b505afa158015620003dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004029190620009ca565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200046092919062000a2f565b602060405180830381600087803b1580156200047b57600080fd5b505af115801562000490573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b69190620009ca565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005eb90620009a5565b620005f892919062000a5c565b604051809103906000f08015801562000615573d6000803e3d6000fd5b50601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000996919062000a89565b60405180910390a35062000d81565b6119e48062004d8583390190565b600081519050620009c48162000d67565b92915050565b600060208284031215620009e357620009e262000d55565b5b6000620009f384828501620009b3565b91505092915050565b62000a078162000cea565b82525050565b62000a188162000c9f565b82525050565b62000a298162000cd3565b82525050565b600060408201905062000a46600083018562000a0d565b62000a55602083018462000a0d565b9392505050565b600060408201905062000a73600083018562000a0d565b62000a826020830184620009fc565b9392505050565b600060208201905062000aa0600083018462000a1e565b92915050565b6000808291508390505b600185111562000af85780860481111562000ad05762000acf62000d26565b5b600185161562000ae05780820291505b808102905062000af08562000d5a565b945062000ab0565b94509492505050565b600062000b0e8262000cd3565b915062000b1b8362000cdd565b925062000b4a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b52565b905092915050565b60008262000b64576001905062000c37565b8162000b74576000905062000c37565b816001811462000b8d576002811462000b985762000bce565b600191505062000c37565b60ff84111562000bad5762000bac62000d26565b5b8360020a91508482111562000bc75762000bc662000d26565b5b5062000c37565b5060208310610133831016604e8410600b841016171562000c085782820a90508381111562000c025762000c0162000d26565b5b62000c37565b62000c17848484600162000aa6565b9250905081840481111562000c315762000c3062000d26565b5b81810290505b9392505050565b600062000c4b8262000cd3565b915062000c588362000cd3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c945762000c9362000d26565b5b828202905092915050565b600062000cac8262000cb3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600062000cf78262000cfe565b9050919050565b600062000d0b8262000d12565b9050919050565b600062000d1f8262000cb3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b60008160011c9050919050565b62000d728162000c9f565b811462000d7e57600080fd5b50565b613ff48062000d916000396000f3fe6080604052600436106102345760003560e01c80636b5caec41161012e578063bf56b371116100ab578063f0fc6bca1161006f578063f0fc6bca14610884578063f2fde38b1461089b578063f4293890146108c4578063f708a64f146108db578063f887ea40146109045761023b565b8063bf56b371146107b1578063bfe10928146107dc578063c9567bf914610807578063dd62ed3e1461081e578063f0f442601461085b5761023b565b80638ecc37fb116100f25780638ecc37fb146106b857806395d89b41146106f5578063a8aa1b3114610720578063a9059cbb1461074b578063b89402a0146107885761023b565b80636b5caec4146105d157806370a08231146105fa578063736a83a11461063757806375f0a87414610662578063893d20e81461068d5761023b565b8063350fcdf9116101bc5780635d098b38116101805780635d098b381461050057806361d027b314610529578063658d4b7f1461055457806367ee5f091461057d57806369fe0e2d146105a85761023b565b8063350fcdf9146104095780633e07ce5b14610432578063416501c814610449578063571ac8b0146104865780635cc33f74146104c35761023b565b806323b635851161020357806323b63585146102fc57806323b872dd146103395780632b112e49146103765780632f54bf6e146103a1578063313ce567146103de5761023b565b806306fdde0314610240578063095ea7b31461026b57806315f7e05e146102a857806318160ddd146102d15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561092f565b604051610262919061386f565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d919061345e565b61096c565b60405161029f919061381e565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190613331565b610a5e565b005b3480156102dd57600080fd5b506102e6610b36565b6040516102f39190613971565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e91906134e7565b610b40565b604051610330919061381e565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b91906133cb565b610bbe565b60405161036d919061381e565b60405180910390f35b34801561038257600080fd5b5061038b610dbe565b6040516103989190613971565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c39190613331565b610e40565b6040516103d5919061381e565b60405180910390f35b3480156103ea57600080fd5b506103f3610e99565b60405161040091906139e6565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b919061349e565b610ea2565b005b34801561043e57600080fd5b50610447610fa4565b005b34801561045557600080fd5b50610470600480360381019061046b9190613331565b611009565b60405161047d919061381e565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190613331565b6110a7565b6040516104ba919061381e565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190613331565b6110da565b6040516104f79190613971565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190613331565b61118e565b005b34801561053557600080fd5b5061053e61121a565b60405161054b91906137b1565b60405180910390f35b34801561056057600080fd5b5061057b6004803603810190610576919061341e565b611240565b005b34801561058957600080fd5b506105926112e3565b60405161059f9190613971565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca91906134e7565b61138a565b005b3480156105dd57600080fd5b506105f860048036038101906105f39190613331565b611420565b005b34801561060657600080fd5b50610621600480360381019061061c9190613331565b6114ce565b60405161062e9190613971565b60405180910390f35b34801561064357600080fd5b5061064c611517565b6040516106599190613971565b60405180910390f35b34801561066e57600080fd5b506106776115be565b60405161068491906137b1565b60405180910390f35b34801561069957600080fd5b506106a26115e4565b6040516106af919061377b565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da9190613331565b61160d565b6040516106ec9190613971565b60405180910390f35b34801561070157600080fd5b5061070a6116c1565b604051610717919061386f565b60405180910390f35b34801561072c57600080fd5b506107356116fe565b604051610742919061377b565b60405180910390f35b34801561075757600080fd5b50610772600480360381019061076d919061345e565b611724565b60405161077f919061381e565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa919061349e565b611739565b005b3480156107bd57600080fd5b506107c661183b565b6040516107d39190613971565b60405180910390f35b3480156107e857600080fd5b506107f1611841565b6040516107fe9190613839565b60405180910390f35b34801561081357600080fd5b5061081c611867565b005b34801561082a57600080fd5b506108456004803603810190610840919061338b565b6118d3565b6040516108529190613971565b60405180910390f35b34801561086757600080fd5b50610882600480360381019061087d9190613331565b61195a565b005b34801561089057600080fd5b50610899611a73565b005b3480156108a757600080fd5b506108c260048036038101906108bd919061335e565b611b02565b005b3480156108d057600080fd5b506108d9611bc4565b005b3480156108e757600080fd5b5061090260048036038101906108fd919061341e565b611c7d565b005b34801561091057600080fd5b50610919611cd3565b6040516109269190613854565b60405180910390f35b60606040518060400160405280601a81526020017f4d63446f6e616c6420427261696e204361706974616c2044414f000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a4c9190613971565b60405180910390a36001905092915050565b610a6733610e40565b610aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9d90613891565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610b01919061377b565b600060405180830381600087803b158015610b1b57600080fd5b505af1158015610b2f573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610b4b33610e40565b610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8190613891565b60405180910390fd5b610bb730600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cf9565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610daa57610d29826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ecc9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610db5848484611f30565b90509392505050565b6000610e3b610dee600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114ce565b610e2d610e1c600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114ce565b60045461287490919063ffffffff16565b61287490919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610eab33610e40565b610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190613891565b60405180910390fd5b60005b8151811015610fa0576000600a6000848481518110610f0f57610f0e613d9a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f8d828281518110610f7e57610f7d613d9a565b5b602002602001015160006128be565b8080610f9890613cf3565b915050610eed565b5050565b610fad33610e40565b610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe390613891565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b600061101433610e40565b611053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104a90613891565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006110d3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61096c565b9050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b8152600401611137919061377b565b60206040518083038186803b15801561114f57600080fd5b505afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111879190613514565b9050919050565b61119733610e40565b6111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd90613891565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61124933610e40565b611288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127f90613891565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b15801561134d57600080fd5b505afa158015611361573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113859190613514565b905090565b61139333610e40565b6113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990613891565b60405180910390fd5b600e811115611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d906138b1565b60405180910390fd5b80600b8190555050565b61142933610e40565b611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90613891565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506114cb8160016128be565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b815260040160206040518083038186803b15801561158157600080fd5b505afa158015611595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b99190613514565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b815260040161166a919061377b565b60206040518083038186803b15801561168257600080fd5b505afa158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190613514565b9050919050565b60606040518060400160405280600481526020017f4d42434400000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611731338484611f30565b905092915050565b61174233610e40565b611781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177890613891565b60405180910390fd5b60005b8151811015611837576001600a60008484815181106117a6576117a5613d9a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061182482828151811061181557611814613d9a565b5b602002602001015160016128be565b808061182f90613cf3565b915050611784565b5050565b60115481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61187033610e40565b6118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690613891565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61196333610e40565b6119a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199990613891565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f44260826040518263ffffffff1660e01b8152600401611a3e919061377b565b600060405180830381600087803b158015611a5857600080fd5b505af1158015611a6c573d6000803e3d6000fd5b5050505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401611ace919061377b565b600060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b50505050565b611b0b33610e40565b611b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4190613891565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611bb99190613796565b60405180910390a150565b611bcd33610e40565b611c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0390613891565b60405180910390fd5b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c79573d6000803e3d6000fd5b5050565b611c8633610e40565b611cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbc90613891565b60405180910390fd5b611ccf82826128be565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d84826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ecc9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1982600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb99190613971565b60405180910390a3600190509392505050565b6000838311158290611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b919061386f565b60405180910390fd5b5060008385611f239190613b88565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fdb575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561203057601260009054906101000a900460ff1661202f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202690613951565b60405180910390fd5b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120d45750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a906138d1565b60405180910390fd5b601260019054906101000a900460ff161561221c5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121d0575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561221b5760135482111561221a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221190613911565b60405180910390fd5b5b5b600160115461222b9190613aa7565b43116122e2576001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60148054906101000a900460ff161561230757612300848484611cf9565b905061286d565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561236e5750600061236c306114ce565b115b9050801561237f5761237e612b74565b5b612408836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ecc9092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006124578686612e61565b612461578361246c565b61246b8685612fbe565b5b90506124c081600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156125ab5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268257601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161264c9291906137f5565b600060405180830381600087803b15801561266657600080fd5b505af1925050508015612677575060015b61268057612681565b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561272a5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561280157601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016127cb9291906137f5565b600060405180830381600087803b1580156127e557600080fd5b505af19250505080156127f6575060015b6127ff57612800565b5b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161285e9190613971565b60405180910390a36001925050505b9392505050565b60006128b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ecc565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156129485750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61295157600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612a4357601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612a0c9291906137cc565b600060405180830381600087803b158015612a2657600080fd5b505af1158015612a3a573d6000803e3d6000fd5b50505050612b12565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612adf9291906137f5565b600060405180830381600087803b158015612af957600080fd5b505af1158015612b0d573d6000803e3d6000fd5b505050505b5050565b6000808284612b259190613aa7565b905083811015612b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b61906138f1565b60405180910390fd5b8091505092915050565b60016014806101000a81548160ff0219169083151502179055506000612b99306114ce565b90506000600267ffffffffffffffff811115612bb857612bb7613dc9565b5b604051908082528060200260200182016040528015612be65781602001602082028036833780820191505090505b5090503081600081518110612bfe57612bfd613d9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612c6f57612c6e613d9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d0d95949392919061398c565b600060405180830381600087803b158015612d2757600080fd5b505af1158015612d3b573d6000803e3d6000fd5b505050506000612d5560024761310290919063ffffffff16565b90506000612d6d60024761310290919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612dd7573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612e40573d6000803e3d6000fd5b505050505060006014806101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f045750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612fb65750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612fb55750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612fea600c54612fdc600b548661314c90919063ffffffff16565b61310290919063ffffffff16565b905061303e81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130de9190613971565b60405180910390a36130f9818461287490919063ffffffff16565b91505092915050565b600061314483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131c7565b905092915050565b60008083141561315f57600090506131c1565b6000828461316d9190613b2e565b905082848261317c9190613afd565b146131bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b390613931565b60405180910390fd5b809150505b92915050565b6000808311829061320e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613205919061386f565b60405180910390fd5b506000838561321d9190613afd565b9050809150509392505050565b600061323d61323884613a26565b613a01565b905080838252602082019050828560208602820111156132605761325f613dfd565b5b60005b858110156132905781613276888261329a565b845260208401935060208301925050600181019050613263565b5050509392505050565b6000813590506132a981613f62565b92915050565b6000813590506132be81613f79565b92915050565b600082601f8301126132d9576132d8613df8565b5b81356132e984826020860161322a565b91505092915050565b60008135905061330181613f90565b92915050565b60008135905061331681613fa7565b92915050565b60008151905061332b81613fa7565b92915050565b60006020828403121561334757613346613e07565b5b60006133558482850161329a565b91505092915050565b60006020828403121561337457613373613e07565b5b6000613382848285016132af565b91505092915050565b600080604083850312156133a2576133a1613e07565b5b60006133b08582860161329a565b92505060206133c18582860161329a565b9150509250929050565b6000806000606084860312156133e4576133e3613e07565b5b60006133f28682870161329a565b93505060206134038682870161329a565b925050604061341486828701613307565b9150509250925092565b6000806040838503121561343557613434613e07565b5b60006134438582860161329a565b9250506020613454858286016132f2565b9150509250929050565b6000806040838503121561347557613474613e07565b5b60006134838582860161329a565b925050602061349485828601613307565b9150509250929050565b6000602082840312156134b4576134b3613e07565b5b600082013567ffffffffffffffff8111156134d2576134d1613e02565b5b6134de848285016132c4565b91505092915050565b6000602082840312156134fd576134fc613e07565b5b600061350b84828501613307565b91505092915050565b60006020828403121561352a57613529613e07565b5b60006135388482850161331c565b91505092915050565b600061354d8383613577565b60208301905092915050565b61356281613c23565b82525050565b61357181613bce565b82525050565b61358081613bbc565b82525050565b61358f81613bbc565b82525050565b60006135a082613a62565b6135aa8185613a85565b93506135b583613a52565b8060005b838110156135e65781516135cd8882613541565b97506135d883613a78565b9250506001810190506135b9565b5085935050505092915050565b6135fc81613be0565b82525050565b61360b81613c35565b82525050565b61361a81613c47565b82525050565b61362981613c59565b82525050565b600061363a82613a6d565b6136448185613a96565b9350613654818560208601613c8f565b61365d81613e0c565b840191505092915050565b6000613675600683613a96565b915061368082613e1d565b602082019050919050565b6000613698601483613a96565b91506136a382613e46565b602082019050919050565b60006136bb600883613a96565b91506136c682613e6f565b602082019050919050565b60006136de601b83613a96565b91506136e982613e98565b602082019050919050565b6000613701600c83613a96565b915061370c82613ec1565b602082019050919050565b6000613724602183613a96565b915061372f82613eea565b604082019050919050565b6000613747601883613a96565b915061375282613f39565b602082019050919050565b61376681613c0c565b82525050565b61377581613c16565b82525050565b60006020820190506137906000830184613586565b92915050565b60006020820190506137ab6000830184613559565b92915050565b60006020820190506137c66000830184613568565b92915050565b60006040820190506137e16000830185613586565b6137ee6020830184613620565b9392505050565b600060408201905061380a6000830185613586565b613817602083018461375d565b9392505050565b600060208201905061383360008301846135f3565b92915050565b600060208201905061384e6000830184613602565b92915050565b60006020820190506138696000830184613611565b92915050565b60006020820190508181036000830152613889818461362f565b905092915050565b600060208201905081810360008301526138aa81613668565b9050919050565b600060208201905081810360008301526138ca8161368b565b9050919050565b600060208201905081810360008301526138ea816136ae565b9050919050565b6000602082019050818103600083015261390a816136d1565b9050919050565b6000602082019050818103600083015261392a816136f4565b9050919050565b6000602082019050818103600083015261394a81613717565b9050919050565b6000602082019050818103600083015261396a8161373a565b9050919050565b6000602082019050613986600083018461375d565b92915050565b600060a0820190506139a1600083018861375d565b6139ae6020830187613620565b81810360408301526139c08186613595565b90506139cf6060830185613586565b6139dc608083018461375d565b9695505050505050565b60006020820190506139fb600083018461376c565b92915050565b6000613a0b613a1c565b9050613a178282613cc2565b919050565b6000604051905090565b600067ffffffffffffffff821115613a4157613a40613dc9565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613ab282613c0c565b9150613abd83613c0c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613af257613af1613d3c565b5b828201905092915050565b6000613b0882613c0c565b9150613b1383613c0c565b925082613b2357613b22613d6b565b5b828204905092915050565b6000613b3982613c0c565b9150613b4483613c0c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b7d57613b7c613d3c565b5b828202905092915050565b6000613b9382613c0c565b9150613b9e83613c0c565b925082821015613bb157613bb0613d3c565b5b828203905092915050565b6000613bc782613bec565b9050919050565b6000613bd982613bec565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613c2e82613c6b565b9050919050565b6000613c4082613c6b565b9050919050565b6000613c5282613c6b565b9050919050565b6000613c6482613c0c565b9050919050565b6000613c7682613c7d565b9050919050565b6000613c8882613bec565b9050919050565b60005b83811015613cad578082015181840152602081019050613c92565b83811115613cbc576000848401525b50505050565b613ccb82613e0c565b810181811067ffffffffffffffff82111715613cea57613ce9613dc9565b5b80604052505050565b6000613cfe82613c0c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d3157613d30613d3c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b7f4665652063616e27742065786365656420313425000000000000000000000000600082015250565b7f4e69636520747279000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b613f6b81613bbc565b8114613f7657600080fd5b50565b613f8281613bce565b8114613f8d57600080fd5b50565b613f9981613be0565b8114613fa457600080fd5b50565b613fb081613c0c565b8114613fbb57600080fd5b5056fea26469706673582212209f977c3aacf8a8d1081adad688660d27c05e683413e6f5bd89e1b1b7e57f4a9464736f6c6343000807003360806040526ec097ce7bc90715b34b9f1000000000600a553480156200002457600080fd5b50604051620019e4380380620019e483398181016040528101906200004a91906200012b565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620001c5565b6000815190506200012581620001ab565b92915050565b60008060408385031215620001455762000144620001a6565b5b6000620001558582860162000114565b9250506020620001688582860162000114565b9150509250929050565b60006200017f8262000186565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001b68162000172565b8114620001c257600080fd5b50565b61180f80620001d56000396000f3fe6080604052600436106100e85760003560e01c8063b2bdfa7b1161008a578063e2d2e21911610059578063e2d2e219146102d7578063e319a3d914610302578063ecd0c0c31461032d578063f0f4426014610358576100e8565b8063b2bdfa7b14610238578063ce7c2ac214610263578063d0e30db0146102a2578063d54ad2a1146102ac576100e8565b80633a98ef39116100c65780633a98ef39146101685780635cc33f74146101935780638ecc37fb146101d0578063997664d71461020d576100e8565b80631014edf5146100ed57806314b6ca961461011657806315f7e05e1461013f575b600080fd5b3480156100f957600080fd5b50610114600480360381019061010f91906112a9565b610381565b005b34801561012257600080fd5b5061013d60048036038101906101389190611269565b61043b565b005b34801561014b57600080fd5b506101666004803603810190610161919061123c565b6106fa565b005b34801561017457600080fd5b5061017d61075e565b60405161018a9190611446565b60405180910390f35b34801561019f57600080fd5b506101ba60048036038101906101b5919061123c565b610764565b6040516101c79190611446565b60405180910390f35b3480156101dc57600080fd5b506101f760048036038101906101f2919061123c565b610834565b6040516102049190611446565b60405180910390f35b34801561021957600080fd5b5061022261094e565b60405161022f9190611446565b60405180910390f35b34801561024457600080fd5b5061024d610954565b60405161025a91906113a9565b60405180910390f35b34801561026f57600080fd5b5061028a6004803603810190610285919061123c565b61097a565b60405161029993929190611461565b60405180910390f35b6102aa6109a4565b005b3480156102b857600080fd5b506102c1610a0a565b6040516102ce9190611446565b60405180910390f35b3480156102e357600080fd5b506102ec610a10565b6040516102f99190611446565b60405180910390f35b34801561030e57600080fd5b50610317610a16565b60405161032491906113a9565b60405180910390f35b34801561033957600080fd5b50610342610a3c565b60405161034f91906113a9565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a919061123c565b610a60565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103db57600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60008511610408578261040a565b845b9081150290604051600060405180830381858888f19350505050158015610435573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049357600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104e8576104e782610afc565b5b60008111801561053a57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561054d5761054882610cf6565b6105af565b60008114801561059f57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156105ae576105ad82610da5565b5b5b6106188161060a600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600654610fac90919063ffffffff16565b610ff690919063ffffffff16565b60068190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106b0600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075257600080fd5b61075b81610afc565b50565b60065481565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154116107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190611406565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156108895760009050610949565b60006108d6600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b90506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161093157600092505050610949565b6109448183610fac90919063ffffffff16565b925050505b919050565b60075481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915090508060000154908060010154908060020154905083565b60003490506109be81600754610ff690919063ffffffff16565b600781905550610a016109f06006546109e284600a5461108690919063ffffffff16565b61110190919063ffffffff16565b600954610ff690919063ffffffff16565b60098190555050565b60085481565b60095481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab857600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610b4c57610cf3565b6000610b5782610834565b90506000811115610cf157610b7781600854610ff690919063ffffffff16565b600881905550610bd281600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610ff690919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610c63600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cef573d6000803e3d6000fd5b505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60036001600380549050610db99190611595565b81548110610dca57610dc96116c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610e4857610e476116c5565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600060036001600380549050610ee89190611595565b81548110610ef957610ef86116c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003805480610f7457610f73611696565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000610fee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061114b565b905092915050565b600080828461100591906114b4565b90508381101561104a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611041906113e6565b60405180910390fd5b8091505092915050565b600061107f600a546110716009548561108690919063ffffffff16565b61110190919063ffffffff16565b9050919050565b60008083141561109957600090506110fb565b600082846110a7919061153b565b90508284826110b6919061150a565b146110f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ed90611426565b60405180910390fd5b809150505b92915050565b600061114383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111af565b905092915050565b6000838311158290611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118a91906113c4565b60405180910390fd5b50600083856111a29190611595565b9050809150509392505050565b600080831182906111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed91906113c4565b60405180910390fd5b5060008385611205919061150a565b9050809150509392505050565b600081359050611221816117ab565b92915050565b600081359050611236816117c2565b92915050565b600060208284031215611252576112516116f4565b5b600061126084828501611212565b91505092915050565b600080604083850312156112805761127f6116f4565b5b600061128e85828601611212565b925050602061129f85828601611227565b9150509250929050565b600080604083850312156112c0576112bf6116f4565b5b60006112ce85828601611227565b92505060206112df85828601611212565b9150509250929050565b6112f2816115c9565b82525050565b600061130382611498565b61130d81856114a3565b935061131d818560208601611605565b611326816116f9565b840191505092915050565b600061133e601b836114a3565b91506113498261170a565b602082019050919050565b6000611361601e836114a3565b915061136c82611733565b602082019050919050565b60006113846021836114a3565b915061138f8261175c565b604082019050919050565b6113a3816115fb565b82525050565b60006020820190506113be60008301846112e9565b92915050565b600060208201905081810360008301526113de81846112f8565b905092915050565b600060208201905081810360008301526113ff81611331565b9050919050565b6000602082019050818103600083015261141f81611354565b9050919050565b6000602082019050818103600083015261143f81611377565b9050919050565b600060208201905061145b600083018461139a565b92915050565b6000606082019050611476600083018661139a565b611483602083018561139a565b611490604083018461139a565b949350505050565b600081519050919050565b600082825260208201905092915050565b60006114bf826115fb565b91506114ca836115fb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156114ff576114fe611638565b5b828201905092915050565b6000611515826115fb565b9150611520836115fb565b9250826115305761152f611667565b5b828204905092915050565b6000611546826115fb565b9150611551836115fb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561158a57611589611638565b5b828202905092915050565b60006115a0826115fb565b91506115ab836115fb565b9250828210156115be576115bd611638565b5b828203905092915050565b60006115d4826115db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611623578082015181840152602081019050611608565b83811115611632576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f596f75277265206e6f742061204d424344207368617265686f6c646572210000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6117b4816115c9565b81146117bf57600080fd5b50565b6117cb816115fb565b81146117d657600080fd5b5056fea26469706673582212205e14cd85aa1ea3a6dd16a0675bdd689da0031f45976d4ed033d8a085d5b2b53b64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106102345760003560e01c80636b5caec41161012e578063bf56b371116100ab578063f0fc6bca1161006f578063f0fc6bca14610884578063f2fde38b1461089b578063f4293890146108c4578063f708a64f146108db578063f887ea40146109045761023b565b8063bf56b371146107b1578063bfe10928146107dc578063c9567bf914610807578063dd62ed3e1461081e578063f0f442601461085b5761023b565b80638ecc37fb116100f25780638ecc37fb146106b857806395d89b41146106f5578063a8aa1b3114610720578063a9059cbb1461074b578063b89402a0146107885761023b565b80636b5caec4146105d157806370a08231146105fa578063736a83a11461063757806375f0a87414610662578063893d20e81461068d5761023b565b8063350fcdf9116101bc5780635d098b38116101805780635d098b381461050057806361d027b314610529578063658d4b7f1461055457806367ee5f091461057d57806369fe0e2d146105a85761023b565b8063350fcdf9146104095780633e07ce5b14610432578063416501c814610449578063571ac8b0146104865780635cc33f74146104c35761023b565b806323b635851161020357806323b63585146102fc57806323b872dd146103395780632b112e49146103765780632f54bf6e146103a1578063313ce567146103de5761023b565b806306fdde0314610240578063095ea7b31461026b57806315f7e05e146102a857806318160ddd146102d15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561092f565b604051610262919061386f565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d919061345e565b61096c565b60405161029f919061381e565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190613331565b610a5e565b005b3480156102dd57600080fd5b506102e6610b36565b6040516102f39190613971565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e91906134e7565b610b40565b604051610330919061381e565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b91906133cb565b610bbe565b60405161036d919061381e565b60405180910390f35b34801561038257600080fd5b5061038b610dbe565b6040516103989190613971565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c39190613331565b610e40565b6040516103d5919061381e565b60405180910390f35b3480156103ea57600080fd5b506103f3610e99565b60405161040091906139e6565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b919061349e565b610ea2565b005b34801561043e57600080fd5b50610447610fa4565b005b34801561045557600080fd5b50610470600480360381019061046b9190613331565b611009565b60405161047d919061381e565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190613331565b6110a7565b6040516104ba919061381e565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190613331565b6110da565b6040516104f79190613971565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190613331565b61118e565b005b34801561053557600080fd5b5061053e61121a565b60405161054b91906137b1565b60405180910390f35b34801561056057600080fd5b5061057b6004803603810190610576919061341e565b611240565b005b34801561058957600080fd5b506105926112e3565b60405161059f9190613971565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca91906134e7565b61138a565b005b3480156105dd57600080fd5b506105f860048036038101906105f39190613331565b611420565b005b34801561060657600080fd5b50610621600480360381019061061c9190613331565b6114ce565b60405161062e9190613971565b60405180910390f35b34801561064357600080fd5b5061064c611517565b6040516106599190613971565b60405180910390f35b34801561066e57600080fd5b506106776115be565b60405161068491906137b1565b60405180910390f35b34801561069957600080fd5b506106a26115e4565b6040516106af919061377b565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da9190613331565b61160d565b6040516106ec9190613971565b60405180910390f35b34801561070157600080fd5b5061070a6116c1565b604051610717919061386f565b60405180910390f35b34801561072c57600080fd5b506107356116fe565b604051610742919061377b565b60405180910390f35b34801561075757600080fd5b50610772600480360381019061076d919061345e565b611724565b60405161077f919061381e565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa919061349e565b611739565b005b3480156107bd57600080fd5b506107c661183b565b6040516107d39190613971565b60405180910390f35b3480156107e857600080fd5b506107f1611841565b6040516107fe9190613839565b60405180910390f35b34801561081357600080fd5b5061081c611867565b005b34801561082a57600080fd5b506108456004803603810190610840919061338b565b6118d3565b6040516108529190613971565b60405180910390f35b34801561086757600080fd5b50610882600480360381019061087d9190613331565b61195a565b005b34801561089057600080fd5b50610899611a73565b005b3480156108a757600080fd5b506108c260048036038101906108bd919061335e565b611b02565b005b3480156108d057600080fd5b506108d9611bc4565b005b3480156108e757600080fd5b5061090260048036038101906108fd919061341e565b611c7d565b005b34801561091057600080fd5b50610919611cd3565b6040516109269190613854565b60405180910390f35b60606040518060400160405280601a81526020017f4d63446f6e616c6420427261696e204361706974616c2044414f000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a4c9190613971565b60405180910390a36001905092915050565b610a6733610e40565b610aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9d90613891565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610b01919061377b565b600060405180830381600087803b158015610b1b57600080fd5b505af1158015610b2f573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610b4b33610e40565b610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8190613891565b60405180910390fd5b610bb730600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cf9565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610daa57610d29826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ecc9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610db5848484611f30565b90509392505050565b6000610e3b610dee600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114ce565b610e2d610e1c600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114ce565b60045461287490919063ffffffff16565b61287490919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610eab33610e40565b610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190613891565b60405180910390fd5b60005b8151811015610fa0576000600a6000848481518110610f0f57610f0e613d9a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f8d828281518110610f7e57610f7d613d9a565b5b602002602001015160006128be565b8080610f9890613cf3565b915050610eed565b5050565b610fad33610e40565b610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe390613891565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b600061101433610e40565b611053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104a90613891565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006110d3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61096c565b9050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b8152600401611137919061377b565b60206040518083038186803b15801561114f57600080fd5b505afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111879190613514565b9050919050565b61119733610e40565b6111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd90613891565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61124933610e40565b611288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127f90613891565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b15801561134d57600080fd5b505afa158015611361573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113859190613514565b905090565b61139333610e40565b6113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990613891565b60405180910390fd5b600e811115611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d906138b1565b60405180910390fd5b80600b8190555050565b61142933610e40565b611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90613891565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506114cb8160016128be565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b815260040160206040518083038186803b15801561158157600080fd5b505afa158015611595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b99190613514565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b815260040161166a919061377b565b60206040518083038186803b15801561168257600080fd5b505afa158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190613514565b9050919050565b60606040518060400160405280600481526020017f4d42434400000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611731338484611f30565b905092915050565b61174233610e40565b611781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177890613891565b60405180910390fd5b60005b8151811015611837576001600a60008484815181106117a6576117a5613d9a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061182482828151811061181557611814613d9a565b5b602002602001015160016128be565b808061182f90613cf3565b915050611784565b5050565b60115481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61187033610e40565b6118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690613891565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61196333610e40565b6119a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199990613891565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f44260826040518263ffffffff1660e01b8152600401611a3e919061377b565b600060405180830381600087803b158015611a5857600080fd5b505af1158015611a6c573d6000803e3d6000fd5b5050505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401611ace919061377b565b600060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b50505050565b611b0b33610e40565b611b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4190613891565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611bb99190613796565b60405180910390a150565b611bcd33610e40565b611c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0390613891565b60405180910390fd5b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c79573d6000803e3d6000fd5b5050565b611c8633610e40565b611cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbc90613891565b60405180910390fd5b611ccf82826128be565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d84826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ecc9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1982600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb99190613971565b60405180910390a3600190509392505050565b6000838311158290611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b919061386f565b60405180910390fd5b5060008385611f239190613b88565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fdb575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561203057601260009054906101000a900460ff1661202f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202690613951565b60405180910390fd5b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120d45750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a906138d1565b60405180910390fd5b601260019054906101000a900460ff161561221c5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121d0575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561221b5760135482111561221a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221190613911565b60405180910390fd5b5b5b600160115461222b9190613aa7565b43116122e2576001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60148054906101000a900460ff161561230757612300848484611cf9565b905061286d565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561236e5750600061236c306114ce565b115b9050801561237f5761237e612b74565b5b612408836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ecc9092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006124578686612e61565b612461578361246c565b61246b8685612fbe565b5b90506124c081600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156125ab5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268257601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161264c9291906137f5565b600060405180830381600087803b15801561266657600080fd5b505af1925050508015612677575060015b61268057612681565b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561272a5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561280157601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016127cb9291906137f5565b600060405180830381600087803b1580156127e557600080fd5b505af19250505080156127f6575060015b6127ff57612800565b5b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161285e9190613971565b60405180910390a36001925050505b9392505050565b60006128b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ecc565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156129485750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61295157600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612a4357601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612a0c9291906137cc565b600060405180830381600087803b158015612a2657600080fd5b505af1158015612a3a573d6000803e3d6000fd5b50505050612b12565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612adf9291906137f5565b600060405180830381600087803b158015612af957600080fd5b505af1158015612b0d573d6000803e3d6000fd5b505050505b5050565b6000808284612b259190613aa7565b905083811015612b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b61906138f1565b60405180910390fd5b8091505092915050565b60016014806101000a81548160ff0219169083151502179055506000612b99306114ce565b90506000600267ffffffffffffffff811115612bb857612bb7613dc9565b5b604051908082528060200260200182016040528015612be65781602001602082028036833780820191505090505b5090503081600081518110612bfe57612bfd613d9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612c6f57612c6e613d9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d0d95949392919061398c565b600060405180830381600087803b158015612d2757600080fd5b505af1158015612d3b573d6000803e3d6000fd5b505050506000612d5560024761310290919063ffffffff16565b90506000612d6d60024761310290919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612dd7573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612e40573d6000803e3d6000fd5b505050505060006014806101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f045750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612fb65750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612fb55750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612fea600c54612fdc600b548661314c90919063ffffffff16565b61310290919063ffffffff16565b905061303e81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130de9190613971565b60405180910390a36130f9818461287490919063ffffffff16565b91505092915050565b600061314483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131c7565b905092915050565b60008083141561315f57600090506131c1565b6000828461316d9190613b2e565b905082848261317c9190613afd565b146131bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b390613931565b60405180910390fd5b809150505b92915050565b6000808311829061320e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613205919061386f565b60405180910390fd5b506000838561321d9190613afd565b9050809150509392505050565b600061323d61323884613a26565b613a01565b905080838252602082019050828560208602820111156132605761325f613dfd565b5b60005b858110156132905781613276888261329a565b845260208401935060208301925050600181019050613263565b5050509392505050565b6000813590506132a981613f62565b92915050565b6000813590506132be81613f79565b92915050565b600082601f8301126132d9576132d8613df8565b5b81356132e984826020860161322a565b91505092915050565b60008135905061330181613f90565b92915050565b60008135905061331681613fa7565b92915050565b60008151905061332b81613fa7565b92915050565b60006020828403121561334757613346613e07565b5b60006133558482850161329a565b91505092915050565b60006020828403121561337457613373613e07565b5b6000613382848285016132af565b91505092915050565b600080604083850312156133a2576133a1613e07565b5b60006133b08582860161329a565b92505060206133c18582860161329a565b9150509250929050565b6000806000606084860312156133e4576133e3613e07565b5b60006133f28682870161329a565b93505060206134038682870161329a565b925050604061341486828701613307565b9150509250925092565b6000806040838503121561343557613434613e07565b5b60006134438582860161329a565b9250506020613454858286016132f2565b9150509250929050565b6000806040838503121561347557613474613e07565b5b60006134838582860161329a565b925050602061349485828601613307565b9150509250929050565b6000602082840312156134b4576134b3613e07565b5b600082013567ffffffffffffffff8111156134d2576134d1613e02565b5b6134de848285016132c4565b91505092915050565b6000602082840312156134fd576134fc613e07565b5b600061350b84828501613307565b91505092915050565b60006020828403121561352a57613529613e07565b5b60006135388482850161331c565b91505092915050565b600061354d8383613577565b60208301905092915050565b61356281613c23565b82525050565b61357181613bce565b82525050565b61358081613bbc565b82525050565b61358f81613bbc565b82525050565b60006135a082613a62565b6135aa8185613a85565b93506135b583613a52565b8060005b838110156135e65781516135cd8882613541565b97506135d883613a78565b9250506001810190506135b9565b5085935050505092915050565b6135fc81613be0565b82525050565b61360b81613c35565b82525050565b61361a81613c47565b82525050565b61362981613c59565b82525050565b600061363a82613a6d565b6136448185613a96565b9350613654818560208601613c8f565b61365d81613e0c565b840191505092915050565b6000613675600683613a96565b915061368082613e1d565b602082019050919050565b6000613698601483613a96565b91506136a382613e46565b602082019050919050565b60006136bb600883613a96565b91506136c682613e6f565b602082019050919050565b60006136de601b83613a96565b91506136e982613e98565b602082019050919050565b6000613701600c83613a96565b915061370c82613ec1565b602082019050919050565b6000613724602183613a96565b915061372f82613eea565b604082019050919050565b6000613747601883613a96565b915061375282613f39565b602082019050919050565b61376681613c0c565b82525050565b61377581613c16565b82525050565b60006020820190506137906000830184613586565b92915050565b60006020820190506137ab6000830184613559565b92915050565b60006020820190506137c66000830184613568565b92915050565b60006040820190506137e16000830185613586565b6137ee6020830184613620565b9392505050565b600060408201905061380a6000830185613586565b613817602083018461375d565b9392505050565b600060208201905061383360008301846135f3565b92915050565b600060208201905061384e6000830184613602565b92915050565b60006020820190506138696000830184613611565b92915050565b60006020820190508181036000830152613889818461362f565b905092915050565b600060208201905081810360008301526138aa81613668565b9050919050565b600060208201905081810360008301526138ca8161368b565b9050919050565b600060208201905081810360008301526138ea816136ae565b9050919050565b6000602082019050818103600083015261390a816136d1565b9050919050565b6000602082019050818103600083015261392a816136f4565b9050919050565b6000602082019050818103600083015261394a81613717565b9050919050565b6000602082019050818103600083015261396a8161373a565b9050919050565b6000602082019050613986600083018461375d565b92915050565b600060a0820190506139a1600083018861375d565b6139ae6020830187613620565b81810360408301526139c08186613595565b90506139cf6060830185613586565b6139dc608083018461375d565b9695505050505050565b60006020820190506139fb600083018461376c565b92915050565b6000613a0b613a1c565b9050613a178282613cc2565b919050565b6000604051905090565b600067ffffffffffffffff821115613a4157613a40613dc9565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613ab282613c0c565b9150613abd83613c0c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613af257613af1613d3c565b5b828201905092915050565b6000613b0882613c0c565b9150613b1383613c0c565b925082613b2357613b22613d6b565b5b828204905092915050565b6000613b3982613c0c565b9150613b4483613c0c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b7d57613b7c613d3c565b5b828202905092915050565b6000613b9382613c0c565b9150613b9e83613c0c565b925082821015613bb157613bb0613d3c565b5b828203905092915050565b6000613bc782613bec565b9050919050565b6000613bd982613bec565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613c2e82613c6b565b9050919050565b6000613c4082613c6b565b9050919050565b6000613c5282613c6b565b9050919050565b6000613c6482613c0c565b9050919050565b6000613c7682613c7d565b9050919050565b6000613c8882613bec565b9050919050565b60005b83811015613cad578082015181840152602081019050613c92565b83811115613cbc576000848401525b50505050565b613ccb82613e0c565b810181811067ffffffffffffffff82111715613cea57613ce9613dc9565b5b80604052505050565b6000613cfe82613c0c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d3157613d30613d3c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b7f4665652063616e27742065786365656420313425000000000000000000000000600082015250565b7f4e69636520747279000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b613f6b81613bbc565b8114613f7657600080fd5b50565b613f8281613bce565b8114613f8d57600080fd5b50565b613f9981613be0565b8114613fa457600080fd5b50565b613fb081613c0c565b8114613fbb57600080fd5b5056fea26469706673582212209f977c3aacf8a8d1081adad688660d27c05e683413e6f5bd89e1b1b7e57f4a9464736f6c63430008070033
Deployed Bytecode Sourcemap
9607:10446:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12326:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12748:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18664:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12056:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18954:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13266:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19105:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2988:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12150:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17264:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19970:80;;;;;;;;;;;;;:::i;:::-;;17490:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12972:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19805:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19255:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10639:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18102:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19558:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18229:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16885:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12496:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19685:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10540:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12412:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18786:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12236:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10764:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13102:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17038:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10792:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10954:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16750:115;;;;;;;;;;;;;:::i;:::-;;12607:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19398:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18562:90;;;;;;;;;;;;;:::i;:::-;;3216:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18380:174;;;;;;;;;;;;;:::i;:::-;;17962:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10733:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12326:80;12374:13;12398:5;;;;;;;;;;;;;;;;;12391:12;;12326:80;:::o;12748:216::-;12823:4;12875:6;12840:11;:23;12852:10;12840:23;;;;;;;;;;;;;;;:32;12864:7;12840:32;;;;;;;;;;;;;;;:41;;;;12918:7;12897:37;;12906:10;12897:37;;;12927:6;12897:37;;;;;;:::i;:::-;;;;;;;;12952:4;12945:11;;12748:216;;;;:::o;18664:110::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18733:11:::1;;;;;;;;;;;:25;;;18759:6;18733:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18664:110:::0;:::o;12056:88::-;12111:7;12129:12;;12122:19;;12056:88;:::o;18954:139::-;19018:4;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19042:43:::1;19065:4;19072;;;;;;;;;;;19078:6;19042:14;:43::i;:::-;19035:50;;18954:139:::0;;;:::o;13266:370::-;13366:4;13421:17;13386:11;:19;13398:6;13386:19;;;;;;;;;;;;;;;:31;13406:10;13386:31;;;;;;;;;;;;;;;;:52;13383:186;;13488:69;13524:6;13488:69;;;;;;;;;;;;;;;;;:11;:19;13500:6;13488:19;;;;;;;;;;;;;;;:31;13508:10;13488:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;13454:11;:19;13466:6;13454:19;;;;;;;;;;;;;;;:31;13474:10;13454:31;;;;;;;;;;;;;;;:103;;;;13383:186;13588:40;13602:6;13610:9;13621:6;13588:13;:40::i;:::-;13581:47;;13266:370;;;;;:::o;19105:142::-;19158:7;19185:54;19223:15;19233:4;;;;;;;;;;;19223:9;:15::i;:::-;19185:33;19202:15;19212:4;;;;;;;;;;;19202:9;:15::i;:::-;19185:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;19178:61;;19105:142;:::o;2988:103::-;3043:4;3078:5;;;;;;;;;;;3067:16;;:7;:16;;;3060:23;;2988:103;;;:::o;12150:80::-;12202:5;10021:1;12211:16;;12150:80;:::o;17264:218::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17344:6:::1;17339:136;17360:5;:12;17356:1;:16;17339:136;;;17408:5;17390;:15;17396:5;17402:1;17396:8;;;;;;;;:::i;:::-;;;;;;;;17390:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17424:37;17445:5;17451:1;17445:8;;;;;;;;:::i;:::-;;;;;;;;17455:5;17424:20;:37::i;:::-;17374:3;;;;;:::i;:::-;;;;17339:136;;;;17264:218:::0;:::o;19970:80::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20037:5:::1;20026:8;;:16;;;;;;;;;;;;;;;;;;19970:80::o:0;17490:115::-;17558:4;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17582:5:::1;:15;17588:8;17582:15;;;;;;;;;;;;;;;;;;;;;;;;;17575:22;;17490:115:::0;;;:::o;12972:122::-;13027:4;13051:35;13059:7;13068:17;13051:7;:35::i;:::-;13044:42;;12972:122;;;:::o;19805:157::-;19881:7;19908:11;;;;;;;;;;;:33;;;19942:11;19908:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19901:53;;19805:157;;;:::o;19255:135::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19365:16:::1;19339:15;;:43;;;;;;;;;;;;;;;;;;19255:135:::0;:::o;10639:85::-;;;;;;;;;;;;;:::o;18102:119::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18207:6:::1;18185:11;:19;18197:6;18185:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18102:119:::0;;:::o;19558:115::-;19610:7;19637:11;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19630:35;;19558:115;:::o;18229:139::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18307:2:::1;18299:4;:10;;18290:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;18356:4;18345:8;:15;;;;18229:139:::0;:::o;16885:141::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16967:4:::1;16949:5;:15;16955:8;16949:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;16982:36;17003:8;17013:4;16982:20;:36::i;:::-;16885:141:::0;:::o;12496:105::-;12562:7;12580:9;:18;12590:7;12580:18;;;;;;;;;;;;;;;;12573:25;;12496:105;;;:::o;19685:111::-;19735:7;19762:11;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19755:33;;19685:111;:::o;10540:92::-;;;;;;;;;;;;;:::o;12412:78::-;12464:7;12482:5;;;;;;;;;;;12475:12;;12412:78;:::o;18786:156::-;18860:7;18887:11;;;;;;;;;;;:34;;;18922:11;18887:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18880:54;;18786:156;;;:::o;12236:84::-;12286:13;12310:7;;;;;;;;;;;;;;;;;12303:14;;12236:84;:::o;10764:19::-;;;;;;;;;;;;;:::o;13102:156::-;13182:4;13206:44;13220:10;13232:9;13243:6;13206:13;:44::i;:::-;13199:51;;13102:156;;;;:::o;17038:216::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17118:6:::1;17113:134;17134:5;:12;17130:1;:16;17113:134;;;17182:4;17164:5;:15;17170:5;17176:1;17170:8;;;;;;;;:::i;:::-;;;;;;;;17164:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;17197:36;17218:5;17224:1;17218:8;;;;;;;;:::i;:::-;;;;;;;;17228:4;17197:20;:36::i;:::-;17148:3;;;;;:::i;:::-;;;;17113:134;;;;17038:216:::0;:::o;10792:25::-;;;;:::o;10954:38::-;;;;;;;;;;;;;:::o;16750:115::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16816:12:::1;16803:10;:25;;;;16853:4;16839:11;;:18;;;;;;;;;;;;;;;;;;16750:115::o:0;12607:133::-;12691:7;12709:11;:19;12721:6;12709:19;;;;;;;;;;;;;;;:28;12729:7;12709:28;;;;;;;;;;;;;;;;12702:35;;12607:133;;;;:::o;19398:152::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19487:9:::1;19468:8;;:29;;;;;;;;;;;;;;;;;;19508:11;;;;;;;;;;;:23;;;19532:9;19508:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19398:152:::0;:::o;18562:90::-;18607:11;;;;;;;;;;;:25;;;18633:10;18607:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18562:90::o;3216:136::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3300:3:::1;3292:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3319:25;3340:3;3319:25;;;;;;:::i;:::-;;;;;;;;3216:136:::0;:::o;18380:174::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18432:26:::1;18461:21;18432:50;;18501:15;;;;;;;;;;;18493:33;;:53;18527:18;18493:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18421:133;18380:174::o:0;17962:132::-;2887:19;2895:10;2887:7;:19::i;:::-;2879:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18050:36:::1;18071:6;18079;18050:20;:36::i;:::-;17962:132:::0;;:::o;10733:24::-;;;;;;;;;;;;;:::o;15113:330::-;15206:4;15243:53;15265:6;15243:53;;;;;;;;;;;;;;;;;:9;:17;15253:6;15243:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15223:9;:17;15233:6;15223:17;;;;;;;;;;;;;;;:73;;;;15330:32;15355:6;15330:9;:20;15340:9;15330:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15307:9;:20;15317:9;15307:20;;;;;;;;;;;;;;;:55;;;;15395:9;15378:35;;15387:6;15378:35;;;15406:6;15378:35;;;;;;:::i;:::-;;;;;;;;15431:4;15424:11;;15113:330;;;;;:::o;650:192::-;736:7;769:1;764;:6;;772:12;756:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;796:9;812:1;808;:5;;;;:::i;:::-;796:17;;833:1;826:8;;;650:192;;;;;:::o;13644:1457::-;13736:4;13766:5;;;;;;;;;;;13757:14;;:6;:14;;;;:35;;;;;13787:5;;;;;;;;;;13775:17;;:9;:17;;;;13757:35;13753:89;;;13802:11;;;;;;;;;;;13794:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13753:89;13903:5;:13;13909:6;13903:13;;;;;;;;;;;;;;;;;;;;;;;;;13902:14;:35;;;;;13921:5;:16;13927:9;13921:16;;;;;;;;;;;;;;;;;;;;;;;;;13920:17;13902:35;13893:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13965:8;;;;;;;;;;;13961:130;;;14003:5;;;;;;;;;;13995:13;;:6;:13;;;;:34;;;;;14024:5;;;;;;;;;;14012:17;;:9;:17;;;;13995:34;13991:80;;;14048:6;;14040;:14;;14031:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;13991:80;13961:130;14135:1;14122:10;;:14;;;;:::i;:::-;14105:12;:32;14101:139;;14174:4;14155:5;:16;14161:9;14155:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14223:4;14193:16;:27;14210:9;14193:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14101:139;14262:6;;;;;;;;;;14259:63;;;14278:41;14293:6;14301:9;14312:6;14278:14;:41::i;:::-;14271:48;;;;14259:63;14344:19;14393:4;;;;;;;;;;;14382:15;;:9;:15;;;:47;;;;;14428:1;14401:24;14419:4;14401:9;:24::i;:::-;:28;14382:47;14344:86;;14444:14;14441:33;;;14461:10;:8;:10::i;:::-;14441:33;14506:53;14528:6;14506:53;;;;;;;;;;;;;;;;;:9;:17;14516:6;14506:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14486:9;:17;14496:6;14486:17;;;;;;;;;;;;;;;:73;;;;14572:22;14597:32;14611:6;14619:9;14597:13;:32::i;:::-;:67;;14658:6;14597:67;;;14632:23;14640:6;14648;14632:7;:23::i;:::-;14597:67;14572:92;;14708:40;14733:14;14708:9;:20;14718:9;14708:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;14685:9;:20;14695:9;14685:20;;;;;;;;;;;;;;;:63;;;;14774:4;;;;;;;;;;;14764:14;;:6;:14;;;;:43;;;;;14783:16;:24;14800:6;14783:24;;;;;;;;;;;;;;;;;;;;;;;;;14782:25;14764:43;14761:114;;;14814:11;;;;;;;;;;;:20;;;14835:6;14843:9;:17;14853:6;14843:17;;;;;;;;;;;;;;;;14814:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14810:63;;;;;;14761:114;14901:4;;;;;;;;;;;14888:17;;:9;:17;;;;:49;;;;;14910:16;:27;14927:9;14910:27;;;;;;;;;;;;;;;;;;;;;;;;;14909:28;14888:49;14885:126;;;14944:11;;;;;;;;;;;:20;;;14965:9;14976;:20;14986:9;14976:20;;;;;;;;;;;;;;;;14944:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14940:69;;;;;;14885:126;15045:9;15028:43;;15037:6;15028:43;;;15056:14;15028:43;;;;;;:::i;:::-;;;;;;;;15089:4;15082:11;;;;13644:1457;;;;;;:::o;508:136::-;566:7;593:43;597:1;600;593:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;586:50;;508:136;;;;:::o;17617:337::-;17722:4;17704:23;;:6;:23;;;;:41;;;;;17741:4;;;;;;;;;;;17731:14;;:6;:14;;;;17704:41;17696:50;;;;;;17784:6;17757:16;:24;17774:6;17757:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17804:6;17801:146;;;17826:11;;;;;;;;;;;:20;;;17847:6;17855:1;17826:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17801:146;;;17888:11;;;;;;;;;;;:20;;;17909:6;17917:9;:17;17927:6;17917:17;;;;;;;;;;;;;;;;17888:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17801:146;17617:337;;:::o;321:181::-;379:7;399:9;415:1;411;:5;;;;:::i;:::-;399:17;;440:1;435;:6;;427:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;493:1;486:8;;;321:181;;;;:::o;16035:701::-;11076:4;11067:6;;:13;;;;;;;;;;;;;;;;;;16084:20:::1;16107:24;16125:4;16107:9;:24::i;:::-;16084:47;;16144:21;16182:1;16168:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16144:40;;16213:4;16195;16200:1;16195:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;16239:4;;;;;;;;;;;16229;16234:1;16229:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;16266:6;;;;;;;;;;;:57;;;16338:12;16365:1;16381:4;16408;16428:15;16266:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16475:22;16500:30;16528:1;16501:21;16500:27;;:30;;;;:::i;:::-;16475:55;;16541:23;16567:30;16595:1;16568:21;16567:27;;:30;;;;:::i;:::-;16541:56;;16633:15;;;;;;;;;;;16625:33;;:50;16659:15;16625:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16694:8;;;;;;;;;;;16686:26;;:42;16713:14;16686:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16073:663;;;;11094:5:::0;11085:6;;:14;;;;;;;;;;;;;;;;;;16035:701::o;15454:206::-;15535:4;15563:11;:19;15575:6;15563:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;15586:11;:22;15598:9;15586:22;;;;;;;;;;;;;;;;;;;;;;;;;15563:45;15561:48;:90;;;;;15625:4;;;;;;;;;;;15615:14;;:6;:14;;;:35;;;;15646:4;;;;;;;;;;;15633:17;;:9;:17;;;15615:35;15561:90;15552:101;;15454:206;;;;:::o;15668:354::-;15735:7;15755:17;15795:40;15820:14;;15795:20;15806:8;;15795:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;15783:52;;15873:39;15902:9;15873;:24;15891:4;15873:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15846:9;:24;15864:4;15846:24;;;;;;;;;;;;;;;:66;;;;15953:4;15928:42;;15937:6;15928:42;;;15960:9;15928:42;;;;;;:::i;:::-;;;;;;;;15993:21;16004:9;15993:6;:10;;:21;;;;:::i;:::-;15986:28;;;15668:354;;;;:::o;1104:132::-;1162:7;1189:39;1193:1;1196;1189:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1182:46;;1104:132;;;;:::o;848:250::-;906:7;935:1;930;:6;926:47;;;960:1;953:8;;;;926:47;985:9;1001:1;997;:5;;;;:::i;:::-;985:17;;1030:1;1025;1021;:5;;;;:::i;:::-;:10;1013:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1089:1;1082:8;;;848:250;;;;;:::o;1242:345::-;1328:7;1427:1;1423;:5;1430:12;1415:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1454:9;1470:1;1466;:5;;;;:::i;:::-;1454:17;;1578:1;1571:8;;;1242:345;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:155::-;951:5;989:6;976:20;967:29;;1005:41;1040:5;1005:41;:::i;:::-;897:155;;;;:::o;1075:370::-;1146:5;1195:3;1188:4;1180:6;1176:17;1172:27;1162:122;;1203:79;;:::i;:::-;1162:122;1320:6;1307:20;1345:94;1435:3;1427:6;1420:4;1412:6;1408:17;1345:94;:::i;:::-;1336:103;;1152:293;1075:370;;;;:::o;1451:133::-;1494:5;1532:6;1519:20;1510:29;;1548:30;1572:5;1548:30;:::i;:::-;1451:133;;;;:::o;1590:139::-;1636:5;1674:6;1661:20;1652:29;;1690:33;1717:5;1690:33;:::i;:::-;1590:139;;;;:::o;1735:143::-;1792:5;1823:6;1817:13;1808:22;;1839:33;1866:5;1839:33;:::i;:::-;1735:143;;;;:::o;1884:329::-;1943:6;1992:2;1980:9;1971:7;1967:23;1963:32;1960:119;;;1998:79;;:::i;:::-;1960:119;2118:1;2143:53;2188:7;2179:6;2168:9;2164:22;2143:53;:::i;:::-;2133:63;;2089:117;1884:329;;;;:::o;2219:345::-;2286:6;2335:2;2323:9;2314:7;2310:23;2306:32;2303:119;;;2341:79;;:::i;:::-;2303:119;2461:1;2486:61;2539:7;2530:6;2519:9;2515:22;2486:61;:::i;:::-;2476:71;;2432:125;2219:345;;;;:::o;2570:474::-;2638:6;2646;2695:2;2683:9;2674:7;2670:23;2666:32;2663:119;;;2701:79;;:::i;:::-;2663:119;2821:1;2846:53;2891:7;2882:6;2871:9;2867:22;2846:53;:::i;:::-;2836:63;;2792:117;2948:2;2974:53;3019:7;3010:6;2999:9;2995:22;2974:53;:::i;:::-;2964:63;;2919:118;2570:474;;;;;:::o;3050:619::-;3127:6;3135;3143;3192:2;3180:9;3171:7;3167:23;3163:32;3160:119;;;3198:79;;:::i;:::-;3160:119;3318:1;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3289:117;3445:2;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3416:118;3573:2;3599:53;3644:7;3635:6;3624:9;3620:22;3599:53;:::i;:::-;3589:63;;3544:118;3050:619;;;;;:::o;3675:468::-;3740:6;3748;3797:2;3785:9;3776:7;3772:23;3768:32;3765:119;;;3803:79;;:::i;:::-;3765:119;3923:1;3948:53;3993:7;3984:6;3973:9;3969:22;3948:53;:::i;:::-;3938:63;;3894:117;4050:2;4076:50;4118:7;4109:6;4098:9;4094:22;4076:50;:::i;:::-;4066:60;;4021:115;3675:468;;;;;:::o;4149:474::-;4217:6;4225;4274:2;4262:9;4253:7;4249:23;4245:32;4242:119;;;4280:79;;:::i;:::-;4242:119;4400:1;4425:53;4470:7;4461:6;4450:9;4446:22;4425:53;:::i;:::-;4415:63;;4371:117;4527:2;4553:53;4598:7;4589:6;4578:9;4574:22;4553:53;:::i;:::-;4543:63;;4498:118;4149:474;;;;;:::o;4629:539::-;4713:6;4762:2;4750:9;4741:7;4737:23;4733:32;4730:119;;;4768:79;;:::i;:::-;4730:119;4916:1;4905:9;4901:17;4888:31;4946:18;4938:6;4935:30;4932:117;;;4968:79;;:::i;:::-;4932:117;5073:78;5143:7;5134:6;5123:9;5119:22;5073:78;:::i;:::-;5063:88;;4859:302;4629:539;;;;:::o;5174:329::-;5233:6;5282:2;5270:9;5261:7;5257:23;5253:32;5250:119;;;5288:79;;:::i;:::-;5250:119;5408:1;5433:53;5478:7;5469:6;5458:9;5454:22;5433:53;:::i;:::-;5423:63;;5379:117;5174:329;;;;:::o;5509:351::-;5579:6;5628:2;5616:9;5607:7;5603:23;5599:32;5596:119;;;5634:79;;:::i;:::-;5596:119;5754:1;5779:64;5835:7;5826:6;5815:9;5811:22;5779:64;:::i;:::-;5769:74;;5725:128;5509:351;;;;:::o;5866:179::-;5935:10;5956:46;5998:3;5990:6;5956:46;:::i;:::-;6034:4;6029:3;6025:14;6011:28;;5866:179;;;;:::o;6051:147::-;6146:45;6185:5;6146:45;:::i;:::-;6141:3;6134:58;6051:147;;:::o;6204:142::-;6307:32;6333:5;6307:32;:::i;:::-;6302:3;6295:45;6204:142;;:::o;6352:108::-;6429:24;6447:5;6429:24;:::i;:::-;6424:3;6417:37;6352:108;;:::o;6466:118::-;6553:24;6571:5;6553:24;:::i;:::-;6548:3;6541:37;6466:118;;:::o;6620:732::-;6739:3;6768:54;6816:5;6768:54;:::i;:::-;6838:86;6917:6;6912:3;6838:86;:::i;:::-;6831:93;;6948:56;6998:5;6948:56;:::i;:::-;7027:7;7058:1;7043:284;7068:6;7065:1;7062:13;7043:284;;;7144:6;7138:13;7171:63;7230:3;7215:13;7171:63;:::i;:::-;7164:70;;7257:60;7310:6;7257:60;:::i;:::-;7247:70;;7103:224;7090:1;7087;7083:9;7078:14;;7043:284;;;7047:14;7343:3;7336:10;;6744:608;;;6620:732;;;;:::o;7358:109::-;7439:21;7454:5;7439:21;:::i;:::-;7434:3;7427:34;7358:109;;:::o;7473:185::-;7587:64;7645:5;7587:64;:::i;:::-;7582:3;7575:77;7473:185;;:::o;7664:167::-;7769:55;7818:5;7769:55;:::i;:::-;7764:3;7757:68;7664:167;;:::o;7837:147::-;7932:45;7971:5;7932:45;:::i;:::-;7927:3;7920:58;7837:147;;:::o;7990:364::-;8078:3;8106:39;8139:5;8106:39;:::i;:::-;8161:71;8225:6;8220:3;8161:71;:::i;:::-;8154:78;;8241:52;8286:6;8281:3;8274:4;8267:5;8263:16;8241:52;:::i;:::-;8318:29;8340:6;8318:29;:::i;:::-;8313:3;8309:39;8302:46;;8082:272;7990:364;;;;:::o;8360:365::-;8502:3;8523:66;8587:1;8582:3;8523:66;:::i;:::-;8516:73;;8598:93;8687:3;8598:93;:::i;:::-;8716:2;8711:3;8707:12;8700:19;;8360:365;;;:::o;8731:366::-;8873:3;8894:67;8958:2;8953:3;8894:67;:::i;:::-;8887:74;;8970:93;9059:3;8970:93;:::i;:::-;9088:2;9083:3;9079:12;9072:19;;8731:366;;;:::o;9103:365::-;9245:3;9266:66;9330:1;9325:3;9266:66;:::i;:::-;9259:73;;9341:93;9430:3;9341:93;:::i;:::-;9459:2;9454:3;9450:12;9443:19;;9103:365;;;:::o;9474:366::-;9616:3;9637:67;9701:2;9696:3;9637:67;:::i;:::-;9630:74;;9713:93;9802:3;9713:93;:::i;:::-;9831:2;9826:3;9822:12;9815:19;;9474:366;;;:::o;9846:::-;9988:3;10009:67;10073:2;10068:3;10009:67;:::i;:::-;10002:74;;10085:93;10174:3;10085:93;:::i;:::-;10203:2;10198:3;10194:12;10187:19;;9846:366;;;:::o;10218:::-;10360:3;10381:67;10445:2;10440:3;10381:67;:::i;:::-;10374:74;;10457:93;10546:3;10457:93;:::i;:::-;10575:2;10570:3;10566:12;10559:19;;10218:366;;;:::o;10590:::-;10732:3;10753:67;10817:2;10812:3;10753:67;:::i;:::-;10746:74;;10829:93;10918:3;10829:93;:::i;:::-;10947:2;10942:3;10938:12;10931:19;;10590:366;;;:::o;10962:118::-;11049:24;11067:5;11049:24;:::i;:::-;11044:3;11037:37;10962:118;;:::o;11086:112::-;11169:22;11185:5;11169:22;:::i;:::-;11164:3;11157:35;11086:112;;:::o;11204:222::-;11297:4;11335:2;11324:9;11320:18;11312:26;;11348:71;11416:1;11405:9;11401:17;11392:6;11348:71;:::i;:::-;11204:222;;;;:::o;11432:238::-;11533:4;11571:2;11560:9;11556:18;11548:26;;11584:79;11660:1;11649:9;11645:17;11636:6;11584:79;:::i;:::-;11432:238;;;;:::o;11676:254::-;11785:4;11823:2;11812:9;11808:18;11800:26;;11836:87;11920:1;11909:9;11905:17;11896:6;11836:87;:::i;:::-;11676:254;;;;:::o;11936:348::-;12065:4;12103:2;12092:9;12088:18;12080:26;;12116:71;12184:1;12173:9;12169:17;12160:6;12116:71;:::i;:::-;12197:80;12273:2;12262:9;12258:18;12249:6;12197:80;:::i;:::-;11936:348;;;;;:::o;12290:332::-;12411:4;12449:2;12438:9;12434:18;12426:26;;12462:71;12530:1;12519:9;12515:17;12506:6;12462:71;:::i;:::-;12543:72;12611:2;12600:9;12596:18;12587:6;12543:72;:::i;:::-;12290:332;;;;;:::o;12628:210::-;12715:4;12753:2;12742:9;12738:18;12730:26;;12766:65;12828:1;12817:9;12813:17;12804:6;12766:65;:::i;:::-;12628:210;;;;:::o;12844:276::-;12964:4;13002:2;12991:9;12987:18;12979:26;;13015:98;13110:1;13099:9;13095:17;13086:6;13015:98;:::i;:::-;12844:276;;;;:::o;13126:258::-;13237:4;13275:2;13264:9;13260:18;13252:26;;13288:89;13374:1;13363:9;13359:17;13350:6;13288:89;:::i;:::-;13126:258;;;;:::o;13390:313::-;13503:4;13541:2;13530:9;13526:18;13518:26;;13590:9;13584:4;13580:20;13576:1;13565:9;13561:17;13554:47;13618:78;13691:4;13682:6;13618:78;:::i;:::-;13610:86;;13390:313;;;;:::o;13709:419::-;13875:4;13913:2;13902:9;13898:18;13890:26;;13962:9;13956:4;13952:20;13948:1;13937:9;13933:17;13926:47;13990:131;14116:4;13990:131;:::i;:::-;13982:139;;13709:419;;;:::o;14134:::-;14300:4;14338:2;14327:9;14323:18;14315:26;;14387:9;14381:4;14377:20;14373:1;14362:9;14358:17;14351:47;14415:131;14541:4;14415:131;:::i;:::-;14407:139;;14134:419;;;:::o;14559:::-;14725:4;14763:2;14752:9;14748:18;14740:26;;14812:9;14806:4;14802:20;14798:1;14787:9;14783:17;14776:47;14840:131;14966:4;14840:131;:::i;:::-;14832:139;;14559:419;;;:::o;14984:::-;15150:4;15188:2;15177:9;15173:18;15165:26;;15237:9;15231:4;15227:20;15223:1;15212:9;15208:17;15201:47;15265:131;15391:4;15265:131;:::i;:::-;15257:139;;14984:419;;;:::o;15409:::-;15575:4;15613:2;15602:9;15598:18;15590:26;;15662:9;15656:4;15652:20;15648:1;15637:9;15633:17;15626:47;15690:131;15816:4;15690:131;:::i;:::-;15682:139;;15409:419;;;:::o;15834:::-;16000:4;16038:2;16027:9;16023:18;16015:26;;16087:9;16081:4;16077:20;16073:1;16062:9;16058:17;16051:47;16115:131;16241:4;16115:131;:::i;:::-;16107:139;;15834:419;;;:::o;16259:::-;16425:4;16463:2;16452:9;16448:18;16440:26;;16512:9;16506:4;16502:20;16498:1;16487:9;16483:17;16476:47;16540:131;16666:4;16540:131;:::i;:::-;16532:139;;16259:419;;;:::o;16684:222::-;16777:4;16815:2;16804:9;16800:18;16792:26;;16828:71;16896:1;16885:9;16881:17;16872:6;16828:71;:::i;:::-;16684:222;;;;:::o;16912:831::-;17175:4;17213:3;17202:9;17198:19;17190:27;;17227:71;17295:1;17284:9;17280:17;17271:6;17227:71;:::i;:::-;17308:80;17384:2;17373:9;17369:18;17360:6;17308:80;:::i;:::-;17435:9;17429:4;17425:20;17420:2;17409:9;17405:18;17398:48;17463:108;17566:4;17557:6;17463:108;:::i;:::-;17455:116;;17581:72;17649:2;17638:9;17634:18;17625:6;17581:72;:::i;:::-;17663:73;17731:3;17720:9;17716:19;17707:6;17663:73;:::i;:::-;16912:831;;;;;;;;:::o;17749:214::-;17838:4;17876:2;17865:9;17861:18;17853:26;;17889:67;17953:1;17942:9;17938:17;17929:6;17889:67;:::i;:::-;17749:214;;;;:::o;17969:129::-;18003:6;18030:20;;:::i;:::-;18020:30;;18059:33;18087:4;18079:6;18059:33;:::i;:::-;17969:129;;;:::o;18104:75::-;18137:6;18170:2;18164:9;18154:19;;18104:75;:::o;18185:311::-;18262:4;18352:18;18344:6;18341:30;18338:56;;;18374:18;;:::i;:::-;18338:56;18424:4;18416:6;18412:17;18404:25;;18484:4;18478;18474:15;18466:23;;18185:311;;;:::o;18502:132::-;18569:4;18592:3;18584:11;;18622:4;18617:3;18613:14;18605:22;;18502:132;;;:::o;18640:114::-;18707:6;18741:5;18735:12;18725:22;;18640:114;;;:::o;18760:99::-;18812:6;18846:5;18840:12;18830:22;;18760:99;;;:::o;18865:113::-;18935:4;18967;18962:3;18958:14;18950:22;;18865:113;;;:::o;18984:184::-;19083:11;19117:6;19112:3;19105:19;19157:4;19152:3;19148:14;19133:29;;18984:184;;;;:::o;19174:169::-;19258:11;19292:6;19287:3;19280:19;19332:4;19327:3;19323:14;19308:29;;19174:169;;;;:::o;19349:305::-;19389:3;19408:20;19426:1;19408:20;:::i;:::-;19403:25;;19442:20;19460:1;19442:20;:::i;:::-;19437:25;;19596:1;19528:66;19524:74;19521:1;19518:81;19515:107;;;19602:18;;:::i;:::-;19515:107;19646:1;19643;19639:9;19632:16;;19349:305;;;;:::o;19660:185::-;19700:1;19717:20;19735:1;19717:20;:::i;:::-;19712:25;;19751:20;19769:1;19751:20;:::i;:::-;19746:25;;19790:1;19780:35;;19795:18;;:::i;:::-;19780:35;19837:1;19834;19830:9;19825:14;;19660:185;;;;:::o;19851:348::-;19891:7;19914:20;19932:1;19914:20;:::i;:::-;19909:25;;19948:20;19966:1;19948:20;:::i;:::-;19943:25;;20136:1;20068:66;20064:74;20061:1;20058:81;20053:1;20046:9;20039:17;20035:105;20032:131;;;20143:18;;:::i;:::-;20032:131;20191:1;20188;20184:9;20173:20;;19851:348;;;;:::o;20205:191::-;20245:4;20265:20;20283:1;20265:20;:::i;:::-;20260:25;;20299:20;20317:1;20299:20;:::i;:::-;20294:25;;20338:1;20335;20332:8;20329:34;;;20343:18;;:::i;:::-;20329:34;20388:1;20385;20381:9;20373:17;;20205:191;;;;:::o;20402:96::-;20439:7;20468:24;20486:5;20468:24;:::i;:::-;20457:35;;20402:96;;;:::o;20504:104::-;20549:7;20578:24;20596:5;20578:24;:::i;:::-;20567:35;;20504:104;;;:::o;20614:90::-;20648:7;20691:5;20684:13;20677:21;20666:32;;20614:90;;;:::o;20710:126::-;20747:7;20787:42;20780:5;20776:54;20765:65;;20710:126;;;:::o;20842:77::-;20879:7;20908:5;20897:16;;20842:77;;;:::o;20925:86::-;20960:7;21000:4;20993:5;20989:16;20978:27;;20925:86;;;:::o;21017:134::-;21075:9;21108:37;21139:5;21108:37;:::i;:::-;21095:50;;21017:134;;;:::o;21157:153::-;21234:9;21267:37;21298:5;21267:37;:::i;:::-;21254:50;;21157:153;;;:::o;21316:144::-;21384:9;21417:37;21448:5;21417:37;:::i;:::-;21404:50;;21316:144;;;:::o;21466:121::-;21524:9;21557:24;21575:5;21557:24;:::i;:::-;21544:37;;21466:121;;;:::o;21593:126::-;21643:9;21676:37;21707:5;21676:37;:::i;:::-;21663:50;;21593:126;;;:::o;21725:113::-;21775:9;21808:24;21826:5;21808:24;:::i;:::-;21795:37;;21725:113;;;:::o;21844:307::-;21912:1;21922:113;21936:6;21933:1;21930:13;21922:113;;;22021:1;22016:3;22012:11;22006:18;22002:1;21997:3;21993:11;21986:39;21958:2;21955:1;21951:10;21946:15;;21922:113;;;22053:6;22050:1;22047:13;22044:101;;;22133:1;22124:6;22119:3;22115:16;22108:27;22044:101;21893:258;21844:307;;;:::o;22157:281::-;22240:27;22262:4;22240:27;:::i;:::-;22232:6;22228:40;22370:6;22358:10;22355:22;22334:18;22322:10;22319:34;22316:62;22313:88;;;22381:18;;:::i;:::-;22313:88;22421:10;22417:2;22410:22;22200:238;22157:281;;:::o;22444:233::-;22483:3;22506:24;22524:5;22506:24;:::i;:::-;22497:33;;22552:66;22545:5;22542:77;22539:103;;;22622:18;;:::i;:::-;22539:103;22669:1;22662:5;22658:13;22651:20;;22444:233;;;:::o;22683:180::-;22731:77;22728:1;22721:88;22828:4;22825:1;22818:15;22852:4;22849:1;22842:15;22869:180;22917:77;22914:1;22907:88;23014:4;23011:1;23004:15;23038:4;23035:1;23028:15;23055:180;23103:77;23100:1;23093:88;23200:4;23197:1;23190:15;23224:4;23221:1;23214:15;23241:180;23289:77;23286:1;23279:88;23386:4;23383:1;23376:15;23410:4;23407:1;23400:15;23427:117;23536:1;23533;23526:12;23550:117;23659:1;23656;23649:12;23673:117;23782:1;23779;23772:12;23796:117;23905:1;23902;23895:12;23919:102;23960:6;24011:2;24007:7;24002:2;23995:5;23991:14;23987:28;23977:38;;23919:102;;;:::o;24027:156::-;24167:8;24163:1;24155:6;24151:14;24144:32;24027:156;:::o;24189:170::-;24329:22;24325:1;24317:6;24313:14;24306:46;24189:170;:::o;24365:158::-;24505:10;24501:1;24493:6;24489:14;24482:34;24365:158;:::o;24529:177::-;24669:29;24665:1;24657:6;24653:14;24646:53;24529:177;:::o;24712:162::-;24852:14;24848:1;24840:6;24836:14;24829:38;24712:162;:::o;24880:220::-;25020:34;25016:1;25008:6;25004:14;24997:58;25089:3;25084:2;25076:6;25072:15;25065:28;24880:220;:::o;25106:174::-;25246:26;25242:1;25234:6;25230:14;25223:50;25106:174;:::o;25286:122::-;25359:24;25377:5;25359:24;:::i;:::-;25352:5;25349:35;25339:63;;25398:1;25395;25388:12;25339:63;25286:122;:::o;25414:138::-;25495:32;25521:5;25495:32;:::i;:::-;25488:5;25485:43;25475:71;;25542:1;25539;25532:12;25475:71;25414:138;:::o;25558:116::-;25628:21;25643:5;25628:21;:::i;:::-;25621:5;25618:32;25608:60;;25664:1;25661;25654:12;25608:60;25558:116;:::o;25680:122::-;25753:24;25771:5;25753:24;:::i;:::-;25746:5;25743:35;25733:63;;25792:1;25789;25782:12;25733:63;25680:122;:::o
Swarm Source
ipfs://5e14cd85aa1ea3a6dd16a0675bdd689da0031f45976d4ed033d8a085d5b2b53b
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.