ERC-20
Overview
Max Total Supply
1,000,000,000,000 Kori
Holders
10
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
4,300,000,000 KoriValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KoriInu
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-14 */ /** *Submitted for verification at Etherscan.io on 2021-12-14 */ /** */ //Telegram: https://t.me/KoriInuOfficial //Website: https://www.KoriInu.io //Building on foundations of the Ethereum Layer 1 network, Kori Inu seeks to revolutionize the modern gaming landscape with it’s flagship game “Legends of Kori”: a play to earn model shooter/adventure game introducing the world’s first Exodata NFTs: the evolution of NFTs. these XNFTs expand the power of NFT’s, allowing them to evolve and devolve based on the journey of your character in the Koriverse. // SPDX-License-Identifier: Unlicensed 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 KoriInu shareholder!"); return shares[shareholder].totalClaimed; } } contract KoriInu is IBEP20, Auth { using SafeMath for uint256; address private WETH; address private DEAD = 0x000000000000000000000000000000000000dEaD; address private ZERO = 0x0000000000000000000000000000000000000000; string private constant _name = "KoriInu"; string private constant _symbol = "Kori"; 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(0x923d80EA5e3d55a6BD3C1B4b2eF95bfBbCfDF1c4); address payable public treasury = payable(0x923d80EA5e3d55a6BD3C1B4b2eF95bfBbCfDF1c4); IDEXRouter public router; address public pair; uint256 public launchedAt; bool private tradingOpen; bool private buyLimit = true; uint256 private maxBuy = 5000000000 * (10 ** _decimals); DividendDistributor private distributor; bool private inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor ( ) Auth(0x923d80EA5e3d55a6BD3C1B4b2eF95bfBbCfDF1c4) { address _owner = 0x923d80EA5e3d55a6BD3C1B4b2eF95bfBbCfDF1c4; 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] = false; isDividendExempt[recipient] = false; } 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":"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
608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000b01565b64e8d4a51000620000ab919062000c3e565b600455600454600555600e600b556064600c5573923d80ea5e3d55a6bd3c1b4b2ef95bfbbcfdf1c4600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073923d80ea5e3d55a6bd3c1b4b2ef95bfbbcfdf1c4600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260016101000a81548160ff0219169083151502179055506009600a62000193919062000b01565b64012a05f200620001a5919062000c3e565b601355348015620001b557600080fd5b5073923d80ea5e3d55a6bd3c1b4b2ef95bfbbcfdf1c4806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600073923d80ea5e3d55a6bd3c1b4b2ef95bfbbcfdf1c49050737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002e357600080fd5b505afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e9190620009ca565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c757600080fd5b505afa158015620003dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004029190620009ca565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200046092919062000a2f565b602060405180830381600087803b1580156200047b57600080fd5b505af115801562000490573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b69190620009ca565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005eb90620009a5565b620005f892919062000a5c565b604051809103906000f08015801562000615573d6000803e3d6000fd5b50601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000996919062000a89565b60405180910390a35062000d81565b611a0a8062004ced83390190565b600081519050620009c48162000d67565b92915050565b600060208284031215620009e357620009e262000d55565b5b6000620009f384828501620009b3565b91505092915050565b62000a078162000cea565b82525050565b62000a188162000c9f565b82525050565b62000a298162000cd3565b82525050565b600060408201905062000a46600083018562000a0d565b62000a55602083018462000a0d565b9392505050565b600060408201905062000a73600083018562000a0d565b62000a826020830184620009fc565b9392505050565b600060208201905062000aa0600083018462000a1e565b92915050565b6000808291508390505b600185111562000af85780860481111562000ad05762000acf62000d26565b5b600185161562000ae05780820291505b808102905062000af08562000d5a565b945062000ab0565b94509492505050565b600062000b0e8262000cd3565b915062000b1b8362000cdd565b925062000b4a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b52565b905092915050565b60008262000b64576001905062000c37565b8162000b74576000905062000c37565b816001811462000b8d576002811462000b985762000bce565b600191505062000c37565b60ff84111562000bad5762000bac62000d26565b5b8360020a91508482111562000bc75762000bc662000d26565b5b5062000c37565b5060208310610133831016604e8410600b841016171562000c085782820a90508381111562000c025762000c0162000d26565b5b62000c37565b62000c17848484600162000aa6565b9250905081840481111562000c315762000c3062000d26565b5b81810290505b9392505050565b600062000c4b8262000cd3565b915062000c588362000cd3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c945762000c9362000d26565b5b828202905092915050565b600062000cac8262000cb3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600062000cf78262000cfe565b9050919050565b600062000d0b8262000d12565b9050919050565b600062000d1f8262000cb3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b60008160011c9050919050565b62000d728162000c9f565b811462000d7e57600080fd5b50565b613f5c8062000d916000396000f3fe6080604052600436106102295760003560e01c80636b5caec411610123578063b89402a0116100ab578063f0fc6bca1161006f578063f0fc6bca1461084e578063f2fde38b14610865578063f42938901461088e578063f708a64f146108a5578063f887ea40146108ce57610230565b8063b89402a01461077d578063bf56b371146107a6578063c9567bf9146107d1578063dd62ed3e146107e8578063f0f442601461082557610230565b8063893d20e8116100f2578063893d20e8146106825780638ecc37fb146106ad57806395d89b41146106ea578063a8aa1b3114610715578063a9059cbb1461074057610230565b80636b5caec4146105c657806370a08231146105ef578063736a83a11461062c57806375f0a8741461065757610230565b8063350fcdf9116101b15780635d098b38116101755780635d098b38146104f557806361d027b31461051e578063658d4b7f1461054957806367ee5f091461057257806369fe0e2d1461059d57610230565b8063350fcdf9146103fe5780633e07ce5b14610427578063416501c81461043e578063571ac8b01461047b5780635cc33f74146104b857610230565b806323b63585116101f857806323b63585146102f157806323b872dd1461032e5780632b112e491461036b5780632f54bf6e14610396578063313ce567146103d357610230565b806306fdde0314610235578063095ea7b31461026057806315f7e05e1461029d57806318160ddd146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108f9565b60405161025791906137e9565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190613402565b610936565b60405161029491906137b3565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906132d5565b610a28565b005b3480156102d257600080fd5b506102db610b00565b6040516102e891906138eb565b60405180910390f35b3480156102fd57600080fd5b506103186004803603810190610313919061348b565b610b0a565b60405161032591906137b3565b60405180910390f35b34801561033a57600080fd5b506103556004803603810190610350919061336f565b610b88565b60405161036291906137b3565b60405180910390f35b34801561037757600080fd5b50610380610d88565b60405161038d91906138eb565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b891906132d5565b610e0a565b6040516103ca91906137b3565b60405180910390f35b3480156103df57600080fd5b506103e8610e63565b6040516103f59190613960565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613442565b610e6c565b005b34801561043357600080fd5b5061043c610f6e565b005b34801561044a57600080fd5b50610465600480360381019061046091906132d5565b610fd3565b60405161047291906137b3565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d91906132d5565b611071565b6040516104af91906137b3565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da91906132d5565b6110a4565b6040516104ec91906138eb565b60405180910390f35b34801561050157600080fd5b5061051c600480360381019061051791906132d5565b611158565b005b34801561052a57600080fd5b506105336111e4565b6040516105409190613746565b60405180910390f35b34801561055557600080fd5b50610570600480360381019061056b91906133c2565b61120a565b005b34801561057e57600080fd5b506105876112ad565b60405161059491906138eb565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf919061348b565b611354565b005b3480156105d257600080fd5b506105ed60048036038101906105e891906132d5565b6113ea565b005b3480156105fb57600080fd5b50610616600480360381019061061191906132d5565b611498565b60405161062391906138eb565b60405180910390f35b34801561063857600080fd5b506106416114e1565b60405161064e91906138eb565b60405180910390f35b34801561066357600080fd5b5061066c611588565b6040516106799190613746565b60405180910390f35b34801561068e57600080fd5b506106976115ae565b6040516106a49190613710565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf91906132d5565b6115d7565b6040516106e191906138eb565b60405180910390f35b3480156106f657600080fd5b506106ff61168b565b60405161070c91906137e9565b60405180910390f35b34801561072157600080fd5b5061072a6116c8565b6040516107379190613710565b60405180910390f35b34801561074c57600080fd5b5061076760048036038101906107629190613402565b6116ee565b60405161077491906137b3565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f9190613442565b611703565b005b3480156107b257600080fd5b506107bb611805565b6040516107c891906138eb565b60405180910390f35b3480156107dd57600080fd5b506107e661180b565b005b3480156107f457600080fd5b5061080f600480360381019061080a919061332f565b611877565b60405161081c91906138eb565b60405180910390f35b34801561083157600080fd5b5061084c600480360381019061084791906132d5565b6118fe565b005b34801561085a57600080fd5b50610863611a17565b005b34801561087157600080fd5b5061088c60048036038101906108879190613302565b611aa6565b005b34801561089a57600080fd5b506108a3611b68565b005b3480156108b157600080fd5b506108cc60048036038101906108c791906133c2565b611c21565b005b3480156108da57600080fd5b506108e3611c77565b6040516108f091906137ce565b60405180910390f35b60606040518060400160405280600781526020017f4b6f7269496e7500000000000000000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a1691906138eb565b60405180910390a36001905092915050565b610a3133610e0a565b610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a679061380b565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610acb9190613710565b600060405180830381600087803b158015610ae557600080fd5b505af1158015610af9573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610b1533610e0a565b610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b9061380b565b60405180910390fd5b610b8130600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c9d565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d7457610cf3826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e709092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d7f848484611ed4565b90509392505050565b6000610e05610db8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611498565b610df7610de6600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611498565b60045461281890919063ffffffff16565b61281890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610e7533610e0a565b610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab9061380b565b60405180910390fd5b60005b8151811015610f6a576000600a6000848481518110610ed957610ed8613d02565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f57828281518110610f4857610f47613d02565b5b60200260200101516000612862565b8080610f6290613c5b565b915050610eb7565b5050565b610f7733610e0a565b610fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fad9061380b565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b6000610fde33610e0a565b61101d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110149061380b565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061109d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610936565b9050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b81526004016111019190613710565b60206040518083038186803b15801561111957600080fd5b505afa15801561112d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115191906134b8565b9050919050565b61116133610e0a565b6111a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111979061380b565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61121333610e0a565b611252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112499061380b565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b15801561131757600080fd5b505afa15801561132b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134f91906134b8565b905090565b61135d33610e0a565b61139c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113939061380b565b60405180910390fd5b600e8111156113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d79061382b565b60405180910390fd5b80600b8190555050565b6113f333610e0a565b611432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114299061380b565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611495816001612862565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b815260040160206040518083038186803b15801561154b57600080fd5b505afa15801561155f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158391906134b8565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016116349190613710565b60206040518083038186803b15801561164c57600080fd5b505afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168491906134b8565b9050919050565b60606040518060400160405280600481526020017f4b6f726900000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116fb338484611ed4565b905092915050565b61170c33610e0a565b61174b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117429061380b565b60405180910390fd5b60005b8151811015611801576001600a60008484815181106117705761176f613d02565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117ee8282815181106117df576117de613d02565b5b60200260200101516001612862565b80806117f990613c5b565b91505061174e565b5050565b60115481565b61181433610e0a565b611853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184a9061380b565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61190733610e0a565b611946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193d9061380b565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f44260826040518263ffffffff1660e01b81526004016119e29190613710565b600060405180830381600087803b1580156119fc57600080fd5b505af1158015611a10573d6000803e3d6000fd5b5050505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401611a729190613710565b600060405180830381600087803b158015611a8c57600080fd5b505af1158015611aa0573d6000803e3d6000fd5b50505050565b611aaf33610e0a565b611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae59061380b565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611b5d919061372b565b60405180910390a150565b611b7133610e0a565b611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba79061380b565b60405180910390fd5b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c1d573d6000803e3d6000fd5b5050565b611c2a33610e0a565b611c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c609061380b565b60405180910390fd5b611c738282612862565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d28826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e709092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dbd82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aba90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e5d91906138eb565b60405180910390a3600190509392505050565b6000838311158290611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf91906137e9565b60405180910390fd5b5060008385611ec79190613b02565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f7f575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fd457601260009054906101000a900460ff16611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca906138cb565b60405180910390fd5b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120785750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6120b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ae9061384b565b60405180910390fd5b601260019054906101000a900460ff16156121c05760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612174575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121bf576013548211156121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b59061388b565b60405180910390fd5b5b5b60016011546121cf9190613a21565b4311612286576000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60148054906101000a900460ff16156122ab576122a4848484611c9d565b9050612811565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156123125750600061231030611498565b115b9050801561232357612322612b18565b5b6123ac836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e709092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006123fb8686612e05565b6124055783612410565b61240f8685612f62565b5b905061246481600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aba90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561254f5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561262657601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016125f092919061378a565b600060405180830381600087803b15801561260a57600080fd5b505af192505050801561261b575060015b61262457612625565b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156126ce5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127a557601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161276f92919061378a565b600060405180830381600087803b15801561278957600080fd5b505af192505050801561279a575060015b6127a3576127a4565b5b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161280291906138eb565b60405180910390a36001925050505b9392505050565b600061285a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e70565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156128ec5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6128f557600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156129e757601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016129b0929190613761565b600060405180830381600087803b1580156129ca57600080fd5b505af11580156129de573d6000803e3d6000fd5b50505050612ab6565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612a8392919061378a565b600060405180830381600087803b158015612a9d57600080fd5b505af1158015612ab1573d6000803e3d6000fd5b505050505b5050565b6000808284612ac99190613a21565b905083811015612b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b059061386b565b60405180910390fd5b8091505092915050565b60016014806101000a81548160ff0219169083151502179055506000612b3d30611498565b90506000600267ffffffffffffffff811115612b5c57612b5b613d31565b5b604051908082528060200260200182016040528015612b8a5781602001602082028036833780820191505090505b5090503081600081518110612ba257612ba1613d02565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612c1357612c12613d02565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cb1959493929190613906565b600060405180830381600087803b158015612ccb57600080fd5b505af1158015612cdf573d6000803e3d6000fd5b505050506000612cf96002476130a690919063ffffffff16565b90506000612d116002476130a690919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d7b573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612de4573d6000803e3d6000fd5b505050505060006014806101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ea85750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612f5a5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612f595750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612f8e600c54612f80600b54866130f090919063ffffffff16565b6130a690919063ffffffff16565b9050612fe281600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aba90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161308291906138eb565b60405180910390a361309d818461281890919063ffffffff16565b91505092915050565b60006130e883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061316b565b905092915050565b6000808314156131035760009050613165565b600082846131119190613aa8565b90508284826131209190613a77565b14613160576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613157906138ab565b60405180910390fd5b809150505b92915050565b600080831182906131b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a991906137e9565b60405180910390fd5b50600083856131c19190613a77565b9050809150509392505050565b60006131e16131dc846139a0565b61397b565b9050808382526020820190508285602086028201111561320457613203613d65565b5b60005b85811015613234578161321a888261323e565b845260208401935060208301925050600181019050613207565b5050509392505050565b60008135905061324d81613eca565b92915050565b60008135905061326281613ee1565b92915050565b600082601f83011261327d5761327c613d60565b5b813561328d8482602086016131ce565b91505092915050565b6000813590506132a581613ef8565b92915050565b6000813590506132ba81613f0f565b92915050565b6000815190506132cf81613f0f565b92915050565b6000602082840312156132eb576132ea613d6f565b5b60006132f98482850161323e565b91505092915050565b60006020828403121561331857613317613d6f565b5b600061332684828501613253565b91505092915050565b6000806040838503121561334657613345613d6f565b5b60006133548582860161323e565b92505060206133658582860161323e565b9150509250929050565b60008060006060848603121561338857613387613d6f565b5b60006133968682870161323e565b93505060206133a78682870161323e565b92505060406133b8868287016132ab565b9150509250925092565b600080604083850312156133d9576133d8613d6f565b5b60006133e78582860161323e565b92505060206133f885828601613296565b9150509250929050565b6000806040838503121561341957613418613d6f565b5b60006134278582860161323e565b9250506020613438858286016132ab565b9150509250929050565b60006020828403121561345857613457613d6f565b5b600082013567ffffffffffffffff81111561347657613475613d6a565b5b61348284828501613268565b91505092915050565b6000602082840312156134a1576134a0613d6f565b5b60006134af848285016132ab565b91505092915050565b6000602082840312156134ce576134cd613d6f565b5b60006134dc848285016132c0565b91505092915050565b60006134f1838361351b565b60208301905092915050565b61350681613b9d565b82525050565b61351581613b48565b82525050565b61352481613b36565b82525050565b61353381613b36565b82525050565b6000613544826139dc565b61354e81856139ff565b9350613559836139cc565b8060005b8381101561358a57815161357188826134e5565b975061357c836139f2565b92505060018101905061355d565b5085935050505092915050565b6135a081613b5a565b82525050565b6135af81613baf565b82525050565b6135be81613bc1565b82525050565b60006135cf826139e7565b6135d98185613a10565b93506135e9818560208601613bf7565b6135f281613d74565b840191505092915050565b600061360a600683613a10565b915061361582613d85565b602082019050919050565b600061362d601483613a10565b915061363882613dae565b602082019050919050565b6000613650600883613a10565b915061365b82613dd7565b602082019050919050565b6000613673601b83613a10565b915061367e82613e00565b602082019050919050565b6000613696600c83613a10565b91506136a182613e29565b602082019050919050565b60006136b9602183613a10565b91506136c482613e52565b604082019050919050565b60006136dc601883613a10565b91506136e782613ea1565b602082019050919050565b6136fb81613b86565b82525050565b61370a81613b90565b82525050565b6000602082019050613725600083018461352a565b92915050565b600060208201905061374060008301846134fd565b92915050565b600060208201905061375b600083018461350c565b92915050565b6000604082019050613776600083018561352a565b61378360208301846135b5565b9392505050565b600060408201905061379f600083018561352a565b6137ac60208301846136f2565b9392505050565b60006020820190506137c86000830184613597565b92915050565b60006020820190506137e360008301846135a6565b92915050565b6000602082019050818103600083015261380381846135c4565b905092915050565b60006020820190508181036000830152613824816135fd565b9050919050565b6000602082019050818103600083015261384481613620565b9050919050565b6000602082019050818103600083015261386481613643565b9050919050565b6000602082019050818103600083015261388481613666565b9050919050565b600060208201905081810360008301526138a481613689565b9050919050565b600060208201905081810360008301526138c4816136ac565b9050919050565b600060208201905081810360008301526138e4816136cf565b9050919050565b600060208201905061390060008301846136f2565b92915050565b600060a08201905061391b60008301886136f2565b61392860208301876135b5565b818103604083015261393a8186613539565b9050613949606083018561352a565b61395660808301846136f2565b9695505050505050565b60006020820190506139756000830184613701565b92915050565b6000613985613996565b90506139918282613c2a565b919050565b6000604051905090565b600067ffffffffffffffff8211156139bb576139ba613d31565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a2c82613b86565b9150613a3783613b86565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a6c57613a6b613ca4565b5b828201905092915050565b6000613a8282613b86565b9150613a8d83613b86565b925082613a9d57613a9c613cd3565b5b828204905092915050565b6000613ab382613b86565b9150613abe83613b86565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613af757613af6613ca4565b5b828202905092915050565b6000613b0d82613b86565b9150613b1883613b86565b925082821015613b2b57613b2a613ca4565b5b828203905092915050565b6000613b4182613b66565b9050919050565b6000613b5382613b66565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613ba882613bd3565b9050919050565b6000613bba82613bd3565b9050919050565b6000613bcc82613b86565b9050919050565b6000613bde82613be5565b9050919050565b6000613bf082613b66565b9050919050565b60005b83811015613c15578082015181840152602081019050613bfa565b83811115613c24576000848401525b50505050565b613c3382613d74565b810181811067ffffffffffffffff82111715613c5257613c51613d31565b5b80604052505050565b6000613c6682613b86565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c9957613c98613ca4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b7f4665652063616e27742065786365656420313425000000000000000000000000600082015250565b7f4e69636520747279000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b613ed381613b36565b8114613ede57600080fd5b50565b613eea81613b48565b8114613ef557600080fd5b50565b613f0181613b5a565b8114613f0c57600080fd5b50565b613f1881613b86565b8114613f2357600080fd5b5056fea264697066735822122079fb482403ec1557da83068a86da9bc203bebe783d7c28ebfabd8ebc4764a53c64736f6c6343000807003360806040526ec097ce7bc90715b34b9f1000000000600a553480156200002457600080fd5b5060405162001a0a38038062001a0a83398181016040528101906200004a91906200012b565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620001c5565b6000815190506200012581620001ab565b92915050565b60008060408385031215620001455762000144620001a6565b5b6000620001558582860162000114565b9250506020620001688582860162000114565b9150509250929050565b60006200017f8262000186565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001b68162000172565b8114620001c257600080fd5b50565b61183580620001d56000396000f3fe6080604052600436106100e85760003560e01c8063b2bdfa7b1161008a578063e2d2e21911610059578063e2d2e219146102d7578063e319a3d914610302578063ecd0c0c31461032d578063f0f4426014610358576100e8565b8063b2bdfa7b14610238578063ce7c2ac214610263578063d0e30db0146102a2578063d54ad2a1146102ac576100e8565b80633a98ef39116100c65780633a98ef39146101685780635cc33f74146101935780638ecc37fb146101d0578063997664d71461020d576100e8565b80631014edf5146100ed57806314b6ca961461011657806315f7e05e1461013f575b600080fd5b3480156100f957600080fd5b50610114600480360381019061010f91906112a9565b610381565b005b34801561012257600080fd5b5061013d60048036038101906101389190611269565b61043b565b005b34801561014b57600080fd5b506101666004803603810190610161919061123c565b6106fa565b005b34801561017457600080fd5b5061017d61075e565b60405161018a9190611446565b60405180910390f35b34801561019f57600080fd5b506101ba60048036038101906101b5919061123c565b610764565b6040516101c79190611446565b60405180910390f35b3480156101dc57600080fd5b506101f760048036038101906101f2919061123c565b610834565b6040516102049190611446565b60405180910390f35b34801561021957600080fd5b5061022261094e565b60405161022f9190611446565b60405180910390f35b34801561024457600080fd5b5061024d610954565b60405161025a91906113a9565b60405180910390f35b34801561026f57600080fd5b5061028a6004803603810190610285919061123c565b61097a565b60405161029993929190611461565b60405180910390f35b6102aa6109a4565b005b3480156102b857600080fd5b506102c1610a0a565b6040516102ce9190611446565b60405180910390f35b3480156102e357600080fd5b506102ec610a10565b6040516102f99190611446565b60405180910390f35b34801561030e57600080fd5b50610317610a16565b60405161032491906113a9565b60405180910390f35b34801561033957600080fd5b50610342610a3c565b60405161034f91906113a9565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a919061123c565b610a60565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103db57600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60008511610408578261040a565b845b9081150290604051600060405180830381858888f19350505050158015610435573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049357600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104e8576104e782610afc565b5b60008111801561053a57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561054d5761054882610cf6565b6105af565b60008114801561059f57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156105ae576105ad82610da5565b5b5b6106188161060a600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600654610fac90919063ffffffff16565b610ff690919063ffffffff16565b60068190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106b0600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075257600080fd5b61075b81610afc565b50565b60065481565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154116107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190611406565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156108895760009050610949565b60006108d6600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b90506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161093157600092505050610949565b6109448183610fac90919063ffffffff16565b925050505b919050565b60075481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915090508060000154908060010154908060020154905083565b60003490506109be81600754610ff690919063ffffffff16565b600781905550610a016109f06006546109e284600a5461108690919063ffffffff16565b61110190919063ffffffff16565b600954610ff690919063ffffffff16565b60098190555050565b60085481565b60095481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab857600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610b4c57610cf3565b6000610b5782610834565b90506000811115610cf157610b7781600854610ff690919063ffffffff16565b600881905550610bd281600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610ff690919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610c63600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cef573d6000803e3d6000fd5b505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60036001600380549050610db99190611595565b81548110610dca57610dc96116c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610e4857610e476116c5565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600060036001600380549050610ee89190611595565b81548110610ef957610ef86116c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003805480610f7457610f73611696565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000610fee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061114b565b905092915050565b600080828461100591906114b4565b90508381101561104a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611041906113e6565b60405180910390fd5b8091505092915050565b600061107f600a546110716009548561108690919063ffffffff16565b61110190919063ffffffff16565b9050919050565b60008083141561109957600090506110fb565b600082846110a7919061153b565b90508284826110b6919061150a565b146110f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ed90611426565b60405180910390fd5b809150505b92915050565b600061114383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111af565b905092915050565b6000838311158290611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118a91906113c4565b60405180910390fd5b50600083856111a29190611595565b9050809150509392505050565b600080831182906111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed91906113c4565b60405180910390fd5b5060008385611205919061150a565b9050809150509392505050565b600081359050611221816117d1565b92915050565b600081359050611236816117e8565b92915050565b600060208284031215611252576112516116f4565b5b600061126084828501611212565b91505092915050565b600080604083850312156112805761127f6116f4565b5b600061128e85828601611212565b925050602061129f85828601611227565b9150509250929050565b600080604083850312156112c0576112bf6116f4565b5b60006112ce85828601611227565b92505060206112df85828601611212565b9150509250929050565b6112f2816115c9565b82525050565b600061130382611498565b61130d81856114a3565b935061131d818560208601611605565b611326816116f9565b840191505092915050565b600061133e601b836114a3565b91506113498261170a565b602082019050919050565b60006113616021836114a3565b915061136c82611733565b604082019050919050565b60006113846021836114a3565b915061138f82611782565b604082019050919050565b6113a3816115fb565b82525050565b60006020820190506113be60008301846112e9565b92915050565b600060208201905081810360008301526113de81846112f8565b905092915050565b600060208201905081810360008301526113ff81611331565b9050919050565b6000602082019050818103600083015261141f81611354565b9050919050565b6000602082019050818103600083015261143f81611377565b9050919050565b600060208201905061145b600083018461139a565b92915050565b6000606082019050611476600083018661139a565b611483602083018561139a565b611490604083018461139a565b949350505050565b600081519050919050565b600082825260208201905092915050565b60006114bf826115fb565b91506114ca836115fb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156114ff576114fe611638565b5b828201905092915050565b6000611515826115fb565b9150611520836115fb565b9250826115305761152f611667565b5b828204905092915050565b6000611546826115fb565b9150611551836115fb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561158a57611589611638565b5b828202905092915050565b60006115a0826115fb565b91506115ab836115fb565b9250828210156115be576115bd611638565b5b828203905092915050565b60006115d4826115db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611623578082015181840152602081019050611608565b83811115611632576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f596f75277265206e6f742061204b6f7269496e75207368617265686f6c64657260008201527f2100000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6117da816115c9565b81146117e557600080fd5b50565b6117f1816115fb565b81146117fc57600080fd5b5056fea26469706673582212209deb81a4b1e3f91606de1fa84450fadbe03b2125a4b86c7a4992f363b68f0fee64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106102295760003560e01c80636b5caec411610123578063b89402a0116100ab578063f0fc6bca1161006f578063f0fc6bca1461084e578063f2fde38b14610865578063f42938901461088e578063f708a64f146108a5578063f887ea40146108ce57610230565b8063b89402a01461077d578063bf56b371146107a6578063c9567bf9146107d1578063dd62ed3e146107e8578063f0f442601461082557610230565b8063893d20e8116100f2578063893d20e8146106825780638ecc37fb146106ad57806395d89b41146106ea578063a8aa1b3114610715578063a9059cbb1461074057610230565b80636b5caec4146105c657806370a08231146105ef578063736a83a11461062c57806375f0a8741461065757610230565b8063350fcdf9116101b15780635d098b38116101755780635d098b38146104f557806361d027b31461051e578063658d4b7f1461054957806367ee5f091461057257806369fe0e2d1461059d57610230565b8063350fcdf9146103fe5780633e07ce5b14610427578063416501c81461043e578063571ac8b01461047b5780635cc33f74146104b857610230565b806323b63585116101f857806323b63585146102f157806323b872dd1461032e5780632b112e491461036b5780632f54bf6e14610396578063313ce567146103d357610230565b806306fdde0314610235578063095ea7b31461026057806315f7e05e1461029d57806318160ddd146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108f9565b60405161025791906137e9565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190613402565b610936565b60405161029491906137b3565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906132d5565b610a28565b005b3480156102d257600080fd5b506102db610b00565b6040516102e891906138eb565b60405180910390f35b3480156102fd57600080fd5b506103186004803603810190610313919061348b565b610b0a565b60405161032591906137b3565b60405180910390f35b34801561033a57600080fd5b506103556004803603810190610350919061336f565b610b88565b60405161036291906137b3565b60405180910390f35b34801561037757600080fd5b50610380610d88565b60405161038d91906138eb565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b891906132d5565b610e0a565b6040516103ca91906137b3565b60405180910390f35b3480156103df57600080fd5b506103e8610e63565b6040516103f59190613960565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613442565b610e6c565b005b34801561043357600080fd5b5061043c610f6e565b005b34801561044a57600080fd5b50610465600480360381019061046091906132d5565b610fd3565b60405161047291906137b3565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d91906132d5565b611071565b6040516104af91906137b3565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da91906132d5565b6110a4565b6040516104ec91906138eb565b60405180910390f35b34801561050157600080fd5b5061051c600480360381019061051791906132d5565b611158565b005b34801561052a57600080fd5b506105336111e4565b6040516105409190613746565b60405180910390f35b34801561055557600080fd5b50610570600480360381019061056b91906133c2565b61120a565b005b34801561057e57600080fd5b506105876112ad565b60405161059491906138eb565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf919061348b565b611354565b005b3480156105d257600080fd5b506105ed60048036038101906105e891906132d5565b6113ea565b005b3480156105fb57600080fd5b50610616600480360381019061061191906132d5565b611498565b60405161062391906138eb565b60405180910390f35b34801561063857600080fd5b506106416114e1565b60405161064e91906138eb565b60405180910390f35b34801561066357600080fd5b5061066c611588565b6040516106799190613746565b60405180910390f35b34801561068e57600080fd5b506106976115ae565b6040516106a49190613710565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf91906132d5565b6115d7565b6040516106e191906138eb565b60405180910390f35b3480156106f657600080fd5b506106ff61168b565b60405161070c91906137e9565b60405180910390f35b34801561072157600080fd5b5061072a6116c8565b6040516107379190613710565b60405180910390f35b34801561074c57600080fd5b5061076760048036038101906107629190613402565b6116ee565b60405161077491906137b3565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f9190613442565b611703565b005b3480156107b257600080fd5b506107bb611805565b6040516107c891906138eb565b60405180910390f35b3480156107dd57600080fd5b506107e661180b565b005b3480156107f457600080fd5b5061080f600480360381019061080a919061332f565b611877565b60405161081c91906138eb565b60405180910390f35b34801561083157600080fd5b5061084c600480360381019061084791906132d5565b6118fe565b005b34801561085a57600080fd5b50610863611a17565b005b34801561087157600080fd5b5061088c60048036038101906108879190613302565b611aa6565b005b34801561089a57600080fd5b506108a3611b68565b005b3480156108b157600080fd5b506108cc60048036038101906108c791906133c2565b611c21565b005b3480156108da57600080fd5b506108e3611c77565b6040516108f091906137ce565b60405180910390f35b60606040518060400160405280600781526020017f4b6f7269496e7500000000000000000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a1691906138eb565b60405180910390a36001905092915050565b610a3133610e0a565b610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a679061380b565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610acb9190613710565b600060405180830381600087803b158015610ae557600080fd5b505af1158015610af9573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610b1533610e0a565b610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b9061380b565b60405180910390fd5b610b8130600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c9d565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d7457610cf3826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e709092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d7f848484611ed4565b90509392505050565b6000610e05610db8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611498565b610df7610de6600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611498565b60045461281890919063ffffffff16565b61281890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610e7533610e0a565b610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab9061380b565b60405180910390fd5b60005b8151811015610f6a576000600a6000848481518110610ed957610ed8613d02565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f57828281518110610f4857610f47613d02565b5b60200260200101516000612862565b8080610f6290613c5b565b915050610eb7565b5050565b610f7733610e0a565b610fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fad9061380b565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b6000610fde33610e0a565b61101d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110149061380b565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061109d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610936565b9050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b81526004016111019190613710565b60206040518083038186803b15801561111957600080fd5b505afa15801561112d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115191906134b8565b9050919050565b61116133610e0a565b6111a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111979061380b565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61121333610e0a565b611252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112499061380b565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b15801561131757600080fd5b505afa15801561132b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134f91906134b8565b905090565b61135d33610e0a565b61139c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113939061380b565b60405180910390fd5b600e8111156113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d79061382b565b60405180910390fd5b80600b8190555050565b6113f333610e0a565b611432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114299061380b565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611495816001612862565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b815260040160206040518083038186803b15801561154b57600080fd5b505afa15801561155f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158391906134b8565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016116349190613710565b60206040518083038186803b15801561164c57600080fd5b505afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168491906134b8565b9050919050565b60606040518060400160405280600481526020017f4b6f726900000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116fb338484611ed4565b905092915050565b61170c33610e0a565b61174b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117429061380b565b60405180910390fd5b60005b8151811015611801576001600a60008484815181106117705761176f613d02565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117ee8282815181106117df576117de613d02565b5b60200260200101516001612862565b80806117f990613c5b565b91505061174e565b5050565b60115481565b61181433610e0a565b611853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184a9061380b565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61190733610e0a565b611946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193d9061380b565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f44260826040518263ffffffff1660e01b81526004016119e29190613710565b600060405180830381600087803b1580156119fc57600080fd5b505af1158015611a10573d6000803e3d6000fd5b5050505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401611a729190613710565b600060405180830381600087803b158015611a8c57600080fd5b505af1158015611aa0573d6000803e3d6000fd5b50505050565b611aaf33610e0a565b611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae59061380b565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611b5d919061372b565b60405180910390a150565b611b7133610e0a565b611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba79061380b565b60405180910390fd5b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c1d573d6000803e3d6000fd5b5050565b611c2a33610e0a565b611c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c609061380b565b60405180910390fd5b611c738282612862565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d28826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e709092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dbd82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aba90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e5d91906138eb565b60405180910390a3600190509392505050565b6000838311158290611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf91906137e9565b60405180910390fd5b5060008385611ec79190613b02565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f7f575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fd457601260009054906101000a900460ff16611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca906138cb565b60405180910390fd5b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120785750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6120b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ae9061384b565b60405180910390fd5b601260019054906101000a900460ff16156121c05760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612174575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121bf576013548211156121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b59061388b565b60405180910390fd5b5b5b60016011546121cf9190613a21565b4311612286576000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60148054906101000a900460ff16156122ab576122a4848484611c9d565b9050612811565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156123125750600061231030611498565b115b9050801561232357612322612b18565b5b6123ac836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e709092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006123fb8686612e05565b6124055783612410565b61240f8685612f62565b5b905061246481600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aba90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561254f5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561262657601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016125f092919061378a565b600060405180830381600087803b15801561260a57600080fd5b505af192505050801561261b575060015b61262457612625565b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156126ce5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127a557601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161276f92919061378a565b600060405180830381600087803b15801561278957600080fd5b505af192505050801561279a575060015b6127a3576127a4565b5b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161280291906138eb565b60405180910390a36001925050505b9392505050565b600061285a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e70565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156128ec5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6128f557600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156129e757601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016129b0929190613761565b600060405180830381600087803b1580156129ca57600080fd5b505af11580156129de573d6000803e3d6000fd5b50505050612ab6565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612a8392919061378a565b600060405180830381600087803b158015612a9d57600080fd5b505af1158015612ab1573d6000803e3d6000fd5b505050505b5050565b6000808284612ac99190613a21565b905083811015612b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b059061386b565b60405180910390fd5b8091505092915050565b60016014806101000a81548160ff0219169083151502179055506000612b3d30611498565b90506000600267ffffffffffffffff811115612b5c57612b5b613d31565b5b604051908082528060200260200182016040528015612b8a5781602001602082028036833780820191505090505b5090503081600081518110612ba257612ba1613d02565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612c1357612c12613d02565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cb1959493929190613906565b600060405180830381600087803b158015612ccb57600080fd5b505af1158015612cdf573d6000803e3d6000fd5b505050506000612cf96002476130a690919063ffffffff16565b90506000612d116002476130a690919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d7b573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612de4573d6000803e3d6000fd5b505050505060006014806101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ea85750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612f5a5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612f595750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612f8e600c54612f80600b54866130f090919063ffffffff16565b6130a690919063ffffffff16565b9050612fe281600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aba90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161308291906138eb565b60405180910390a361309d818461281890919063ffffffff16565b91505092915050565b60006130e883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061316b565b905092915050565b6000808314156131035760009050613165565b600082846131119190613aa8565b90508284826131209190613a77565b14613160576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613157906138ab565b60405180910390fd5b809150505b92915050565b600080831182906131b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a991906137e9565b60405180910390fd5b50600083856131c19190613a77565b9050809150509392505050565b60006131e16131dc846139a0565b61397b565b9050808382526020820190508285602086028201111561320457613203613d65565b5b60005b85811015613234578161321a888261323e565b845260208401935060208301925050600181019050613207565b5050509392505050565b60008135905061324d81613eca565b92915050565b60008135905061326281613ee1565b92915050565b600082601f83011261327d5761327c613d60565b5b813561328d8482602086016131ce565b91505092915050565b6000813590506132a581613ef8565b92915050565b6000813590506132ba81613f0f565b92915050565b6000815190506132cf81613f0f565b92915050565b6000602082840312156132eb576132ea613d6f565b5b60006132f98482850161323e565b91505092915050565b60006020828403121561331857613317613d6f565b5b600061332684828501613253565b91505092915050565b6000806040838503121561334657613345613d6f565b5b60006133548582860161323e565b92505060206133658582860161323e565b9150509250929050565b60008060006060848603121561338857613387613d6f565b5b60006133968682870161323e565b93505060206133a78682870161323e565b92505060406133b8868287016132ab565b9150509250925092565b600080604083850312156133d9576133d8613d6f565b5b60006133e78582860161323e565b92505060206133f885828601613296565b9150509250929050565b6000806040838503121561341957613418613d6f565b5b60006134278582860161323e565b9250506020613438858286016132ab565b9150509250929050565b60006020828403121561345857613457613d6f565b5b600082013567ffffffffffffffff81111561347657613475613d6a565b5b61348284828501613268565b91505092915050565b6000602082840312156134a1576134a0613d6f565b5b60006134af848285016132ab565b91505092915050565b6000602082840312156134ce576134cd613d6f565b5b60006134dc848285016132c0565b91505092915050565b60006134f1838361351b565b60208301905092915050565b61350681613b9d565b82525050565b61351581613b48565b82525050565b61352481613b36565b82525050565b61353381613b36565b82525050565b6000613544826139dc565b61354e81856139ff565b9350613559836139cc565b8060005b8381101561358a57815161357188826134e5565b975061357c836139f2565b92505060018101905061355d565b5085935050505092915050565b6135a081613b5a565b82525050565b6135af81613baf565b82525050565b6135be81613bc1565b82525050565b60006135cf826139e7565b6135d98185613a10565b93506135e9818560208601613bf7565b6135f281613d74565b840191505092915050565b600061360a600683613a10565b915061361582613d85565b602082019050919050565b600061362d601483613a10565b915061363882613dae565b602082019050919050565b6000613650600883613a10565b915061365b82613dd7565b602082019050919050565b6000613673601b83613a10565b915061367e82613e00565b602082019050919050565b6000613696600c83613a10565b91506136a182613e29565b602082019050919050565b60006136b9602183613a10565b91506136c482613e52565b604082019050919050565b60006136dc601883613a10565b91506136e782613ea1565b602082019050919050565b6136fb81613b86565b82525050565b61370a81613b90565b82525050565b6000602082019050613725600083018461352a565b92915050565b600060208201905061374060008301846134fd565b92915050565b600060208201905061375b600083018461350c565b92915050565b6000604082019050613776600083018561352a565b61378360208301846135b5565b9392505050565b600060408201905061379f600083018561352a565b6137ac60208301846136f2565b9392505050565b60006020820190506137c86000830184613597565b92915050565b60006020820190506137e360008301846135a6565b92915050565b6000602082019050818103600083015261380381846135c4565b905092915050565b60006020820190508181036000830152613824816135fd565b9050919050565b6000602082019050818103600083015261384481613620565b9050919050565b6000602082019050818103600083015261386481613643565b9050919050565b6000602082019050818103600083015261388481613666565b9050919050565b600060208201905081810360008301526138a481613689565b9050919050565b600060208201905081810360008301526138c4816136ac565b9050919050565b600060208201905081810360008301526138e4816136cf565b9050919050565b600060208201905061390060008301846136f2565b92915050565b600060a08201905061391b60008301886136f2565b61392860208301876135b5565b818103604083015261393a8186613539565b9050613949606083018561352a565b61395660808301846136f2565b9695505050505050565b60006020820190506139756000830184613701565b92915050565b6000613985613996565b90506139918282613c2a565b919050565b6000604051905090565b600067ffffffffffffffff8211156139bb576139ba613d31565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a2c82613b86565b9150613a3783613b86565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a6c57613a6b613ca4565b5b828201905092915050565b6000613a8282613b86565b9150613a8d83613b86565b925082613a9d57613a9c613cd3565b5b828204905092915050565b6000613ab382613b86565b9150613abe83613b86565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613af757613af6613ca4565b5b828202905092915050565b6000613b0d82613b86565b9150613b1883613b86565b925082821015613b2b57613b2a613ca4565b5b828203905092915050565b6000613b4182613b66565b9050919050565b6000613b5382613b66565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613ba882613bd3565b9050919050565b6000613bba82613bd3565b9050919050565b6000613bcc82613b86565b9050919050565b6000613bde82613be5565b9050919050565b6000613bf082613b66565b9050919050565b60005b83811015613c15578082015181840152602081019050613bfa565b83811115613c24576000848401525b50505050565b613c3382613d74565b810181811067ffffffffffffffff82111715613c5257613c51613d31565b5b80604052505050565b6000613c6682613b86565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c9957613c98613ca4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b7f4665652063616e27742065786365656420313425000000000000000000000000600082015250565b7f4e69636520747279000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b613ed381613b36565b8114613ede57600080fd5b50565b613eea81613b48565b8114613ef557600080fd5b50565b613f0181613b5a565b8114613f0c57600080fd5b50565b613f1881613b86565b8114613f2357600080fd5b5056fea264697066735822122079fb482403ec1557da83068a86da9bc203bebe783d7c28ebfabd8ebc4764a53c64736f6c63430008070033
Deployed Bytecode Sourcemap
10038:10422:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12731:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13153:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19071:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12461:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19361:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13671:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19512:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3416:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12555:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17671:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20377:80;;;;;;;;;;;;;:::i;:::-;;17897:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13377:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20212:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19662:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11043:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18509:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19965:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18636:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17292:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12901:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20092:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10944:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12817:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19193:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12641:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11168:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13507:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17445:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11196:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17157:115;;;;;;;;;;;;;:::i;:::-;;13012:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19805:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18969:90;;;;;;;;;;;;;:::i;:::-;;3644:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18787:174;;;;;;;;;;;;;:::i;:::-;;18369:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11137:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12731:80;12779:13;12803:5;;;;;;;;;;;;;;;;;12796:12;;12731:80;:::o;13153:216::-;13228:4;13280:6;13245:11;:23;13257:10;13245:23;;;;;;;;;;;;;;;:32;13269:7;13245:32;;;;;;;;;;;;;;;:41;;;;13323:7;13302:37;;13311:10;13302:37;;;13332:6;13302:37;;;;;;:::i;:::-;;;;;;;;13357:4;13350:11;;13153:216;;;;:::o;19071:110::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19140:11:::1;;;;;;;;;;;:25;;;19166:6;19140:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19071:110:::0;:::o;12461:88::-;12516:7;12534:12;;12527:19;;12461:88;:::o;19361:139::-;19425:4;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19449:43:::1;19472:4;19479;;;;;;;;;;;19485:6;19449:14;:43::i;:::-;19442:50;;19361:139:::0;;;:::o;13671:370::-;13771:4;13826:17;13791:11;:19;13803:6;13791:19;;;;;;;;;;;;;;;:31;13811:10;13791:31;;;;;;;;;;;;;;;;:52;13788:186;;13893:69;13929:6;13893:69;;;;;;;;;;;;;;;;;:11;:19;13905:6;13893:19;;;;;;;;;;;;;;;:31;13913:10;13893:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;13859:11;:19;13871:6;13859:19;;;;;;;;;;;;;;;:31;13879:10;13859:31;;;;;;;;;;;;;;;:103;;;;13788:186;13993:40;14007:6;14015:9;14026:6;13993:13;:40::i;:::-;13986:47;;13671:370;;;;;:::o;19512:142::-;19565:7;19592:54;19630:15;19640:4;;;;;;;;;;;19630:9;:15::i;:::-;19592:33;19609:15;19619:4;;;;;;;;;;;19609:9;:15::i;:::-;19592:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;19585:61;;19512:142;:::o;3416:103::-;3471:4;3506:5;;;;;;;;;;;3495:16;;:7;:16;;;3488:23;;3416:103;;;:::o;12555:80::-;12607:5;10417:1;12616:16;;12555:80;:::o;17671:218::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17751:6:::1;17746:136;17767:5;:12;17763:1;:16;17746:136;;;17815:5;17797;:15;17803:5;17809:1;17803:8;;;;;;;;:::i;:::-;;;;;;;;17797:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17831:37;17852:5;17858:1;17852:8;;;;;;;;:::i;:::-;;;;;;;;17862:5;17831:20;:37::i;:::-;17781:3;;;;;:::i;:::-;;;;17746:136;;;;17671:218:::0;:::o;20377:80::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20444:5:::1;20433:8;;:16;;;;;;;;;;;;;;;;;;20377:80::o:0;17897:115::-;17965:4;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17989:5:::1;:15;17995:8;17989:15;;;;;;;;;;;;;;;;;;;;;;;;;17982:22;;17897:115:::0;;;:::o;13377:122::-;13432:4;13456:35;13464:7;13473:17;13456:7;:35::i;:::-;13449:42;;13377:122;;;:::o;20212:157::-;20288:7;20315:11;;;;;;;;;;;:33;;;20349:11;20315:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20308:53;;20212:157;;;:::o;19662:135::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19772:16:::1;19746:15;;:43;;;;;;;;;;;;;;;;;;19662:135:::0;:::o;11043:85::-;;;;;;;;;;;;;:::o;18509:119::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18614:6:::1;18592:11;:19;18604:6;18592:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18509:119:::0;;:::o;19965:115::-;20017:7;20044:11;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20037:35;;19965:115;:::o;18636:139::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18714:2:::1;18706:4;:10;;18697:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;18763:4;18752:8;:15;;;;18636:139:::0;:::o;17292:141::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17374:4:::1;17356:5;:15;17362:8;17356:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;17389:36;17410:8;17420:4;17389:20;:36::i;:::-;17292:141:::0;:::o;12901:105::-;12967:7;12985:9;:18;12995:7;12985:18;;;;;;;;;;;;;;;;12978:25;;12901:105;;;:::o;20092:111::-;20142:7;20169:11;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20162:33;;20092:111;:::o;10944:92::-;;;;;;;;;;;;;:::o;12817:78::-;12869:7;12887:5;;;;;;;;;;;12880:12;;12817:78;:::o;19193:156::-;19267:7;19294:11;;;;;;;;;;;:34;;;19329:11;19294:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19287:54;;19193:156;;;:::o;12641:84::-;12691:13;12715:7;;;;;;;;;;;;;;;;;12708:14;;12641:84;:::o;11168:19::-;;;;;;;;;;;;;:::o;13507:156::-;13587:4;13611:44;13625:10;13637:9;13648:6;13611:13;:44::i;:::-;13604:51;;13507:156;;;;:::o;17445:216::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17525:6:::1;17520:134;17541:5;:12;17537:1;:16;17520:134;;;17589:4;17571:5;:15;17577:5;17583:1;17577:8;;;;;;;;:::i;:::-;;;;;;;;17571:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;17604:36;17625:5;17631:1;17625:8;;;;;;;;:::i;:::-;;;;;;;;17635:4;17604:20;:36::i;:::-;17555:3;;;;;:::i;:::-;;;;17520:134;;;;17445:216:::0;:::o;11196:25::-;;;;:::o;17157:115::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17223:12:::1;17210:10;:25;;;;17260:4;17246:11;;:18;;;;;;;;;;;;;;;;;;17157:115::o:0;13012:133::-;13096:7;13114:11;:19;13126:6;13114:19;;;;;;;;;;;;;;;:28;13134:7;13114:28;;;;;;;;;;;;;;;;13107:35;;13012:133;;;;:::o;19805:152::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19894:9:::1;19875:8;;:29;;;;;;;;;;;;;;;;;;19915:11;;;;;;;;;;;:23;;;19939:9;19915:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19805:152:::0;:::o;18969:90::-;19014:11;;;;;;;;;;;:25;;;19040:10;19014:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18969:90::o;3644:136::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3728:3:::1;3720:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3747:25;3768:3;3747:25;;;;;;:::i;:::-;;;;;;;;3644:136:::0;:::o;18787:174::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18839:26:::1;18868:21;18839:50;;18908:15;;;;;;;;;;;18900:33;;:53;18934:18;18900:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18828:133;18787:174::o:0;18369:132::-;3315:19;3323:10;3315:7;:19::i;:::-;3307:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18457:36:::1;18478:6;18486;18457:20;:36::i;:::-;18369:132:::0;;:::o;11137:24::-;;;;;;;;;;;;;:::o;15520:330::-;15613:4;15650:53;15672:6;15650:53;;;;;;;;;;;;;;;;;:9;:17;15660:6;15650:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15630:9;:17;15640:6;15630:17;;;;;;;;;;;;;;;:73;;;;15737:32;15762:6;15737:9;:20;15747:9;15737:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15714:9;:20;15724:9;15714:20;;;;;;;;;;;;;;;:55;;;;15802:9;15785:35;;15794:6;15785:35;;;15813:6;15785:35;;;;;;:::i;:::-;;;;;;;;15838:4;15831:11;;15520:330;;;;;:::o;1078:192::-;1164:7;1197:1;1192;:6;;1200:12;1184:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1224:9;1240:1;1236;:5;;;;:::i;:::-;1224:17;;1261:1;1254:8;;;1078:192;;;;;:::o;14049:1459::-;14141:4;14171:5;;;;;;;;;;;14162:14;;:6;:14;;;;:35;;;;;14192:5;;;;;;;;;;14180:17;;:9;:17;;;;14162:35;14158:89;;;14207:11;;;;;;;;;;;14199:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14158:89;14308:5;:13;14314:6;14308:13;;;;;;;;;;;;;;;;;;;;;;;;;14307:14;:35;;;;;14326:5;:16;14332:9;14326:16;;;;;;;;;;;;;;;;;;;;;;;;;14325:17;14307:35;14298:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14370:8;;;;;;;;;;;14366:130;;;14408:5;;;;;;;;;;14400:13;;:6;:13;;;;:34;;;;;14429:5;;;;;;;;;;14417:17;;:9;:17;;;;14400:34;14396:80;;;14453:6;;14445;:14;;14436:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;14396:80;14366:130;14540:1;14527:10;;:14;;;;:::i;:::-;14510:12;:32;14506:141;;14579:5;14560;:16;14566:9;14560:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;14629:5;14599:16;:27;14616:9;14599:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;14506:141;14669:6;;;;;;;;;;14666:63;;;14685:41;14700:6;14708:9;14719:6;14685:14;:41::i;:::-;14678:48;;;;14666:63;14751:19;14800:4;;;;;;;;;;;14789:15;;:9;:15;;;:47;;;;;14835:1;14808:24;14826:4;14808:9;:24::i;:::-;:28;14789:47;14751:86;;14851:14;14848:33;;;14868:10;:8;:10::i;:::-;14848:33;14913:53;14935:6;14913:53;;;;;;;;;;;;;;;;;:9;:17;14923:6;14913:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14893:9;:17;14903:6;14893:17;;;;;;;;;;;;;;;:73;;;;14979:22;15004:32;15018:6;15026:9;15004:13;:32::i;:::-;:67;;15065:6;15004:67;;;15039:23;15047:6;15055;15039:7;:23::i;:::-;15004:67;14979:92;;15115:40;15140:14;15115:9;:20;15125:9;15115:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;15092:9;:20;15102:9;15092:20;;;;;;;;;;;;;;;:63;;;;15181:4;;;;;;;;;;;15171:14;;:6;:14;;;;:43;;;;;15190:16;:24;15207:6;15190:24;;;;;;;;;;;;;;;;;;;;;;;;;15189:25;15171:43;15168:114;;;15221:11;;;;;;;;;;;:20;;;15242:6;15250:9;:17;15260:6;15250:17;;;;;;;;;;;;;;;;15221:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15217:63;;;;;;15168:114;15308:4;;;;;;;;;;;15295:17;;:9;:17;;;;:49;;;;;15317:16;:27;15334:9;15317:27;;;;;;;;;;;;;;;;;;;;;;;;;15316:28;15295:49;15292:126;;;15351:11;;;;;;;;;;;:20;;;15372:9;15383;:20;15393:9;15383:20;;;;;;;;;;;;;;;;15351:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15347:69;;;;;;15292:126;15452:9;15435:43;;15444:6;15435:43;;;15463:14;15435:43;;;;;;:::i;:::-;;;;;;;;15496:4;15489:11;;;;14049:1459;;;;;;:::o;936:136::-;994:7;1021:43;1025:1;1028;1021:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1014:50;;936:136;;;;:::o;18024:337::-;18129:4;18111:23;;:6;:23;;;;:41;;;;;18148:4;;;;;;;;;;;18138:14;;:6;:14;;;;18111:41;18103:50;;;;;;18191:6;18164:16;:24;18181:6;18164:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18211:6;18208:146;;;18233:11;;;;;;;;;;;:20;;;18254:6;18262:1;18233:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18208:146;;;18295:11;;;;;;;;;;;:20;;;18316:6;18324:9;:17;18334:6;18324:17;;;;;;;;;;;;;;;;18295:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18208:146;18024:337;;:::o;749:181::-;807:7;827:9;843:1;839;:5;;;;:::i;:::-;827:17;;868:1;863;:6;;855:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;921:1;914:8;;;749:181;;;;:::o;16442:701::-;11481:4;11472:6;;:13;;;;;;;;;;;;;;;;;;16491:20:::1;16514:24;16532:4;16514:9;:24::i;:::-;16491:47;;16551:21;16589:1;16575:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16551:40;;16620:4;16602;16607:1;16602:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;16646:4;;;;;;;;;;;16636;16641:1;16636:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;16673:6;;;;;;;;;;;:57;;;16745:12;16772:1;16788:4;16815;16835:15;16673:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16882:22;16907:30;16935:1;16908:21;16907:27;;:30;;;;:::i;:::-;16882:55;;16948:23;16974:30;17002:1;16975:21;16974:27;;:30;;;;:::i;:::-;16948:56;;17040:15;;;;;;;;;;;17032:33;;:50;17066:15;17032:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17101:8;;;;;;;;;;;17093:26;;:42;17120:14;17093:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16480:663;;;;11499:5:::0;11490:6;;:14;;;;;;;;;;;;;;;;;;16442:701::o;15861:206::-;15942:4;15970:11;:19;15982:6;15970:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;15993:11;:22;16005:9;15993:22;;;;;;;;;;;;;;;;;;;;;;;;;15970:45;15968:48;:90;;;;;16032:4;;;;;;;;;;;16022:14;;:6;:14;;;:35;;;;16053:4;;;;;;;;;;;16040:17;;:9;:17;;;16022:35;15968:90;15959:101;;15861:206;;;;:::o;16075:354::-;16142:7;16162:17;16202:40;16227:14;;16202:20;16213:8;;16202:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;16190:52;;16280:39;16309:9;16280;:24;16298:4;16280:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16253:9;:24;16271:4;16253:24;;;;;;;;;;;;;;;:66;;;;16360:4;16335:42;;16344:6;16335:42;;;16367:9;16335:42;;;;;;:::i;:::-;;;;;;;;16400:21;16411:9;16400:6;:10;;:21;;;;:::i;:::-;16393:28;;;16075:354;;;;:::o;1532:132::-;1590:7;1617:39;1621:1;1624;1617:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1610:46;;1532:132;;;;:::o;1276:250::-;1334:7;1363:1;1358;:6;1354:47;;;1388:1;1381:8;;;;1354:47;1413:9;1429:1;1425;:5;;;;:::i;:::-;1413:17;;1458:1;1453;1449;:5;;;;:::i;:::-;:10;1441:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1517:1;1510:8;;;1276:250;;;;;:::o;1670:345::-;1756:7;1855:1;1851;:5;1858:12;1843:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1882:9;1898:1;1894;:5;;;;:::i;:::-;1882:17;;2006:1;1999:8;;;1670: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:167::-;7578:55;7627:5;7578:55;:::i;:::-;7573:3;7566:68;7473:167;;:::o;7646:147::-;7741:45;7780:5;7741:45;:::i;:::-;7736:3;7729:58;7646:147;;:::o;7799:364::-;7887:3;7915:39;7948:5;7915:39;:::i;:::-;7970:71;8034:6;8029:3;7970:71;:::i;:::-;7963:78;;8050:52;8095:6;8090:3;8083:4;8076:5;8072:16;8050:52;:::i;:::-;8127:29;8149:6;8127:29;:::i;:::-;8122:3;8118:39;8111:46;;7891:272;7799:364;;;;:::o;8169:365::-;8311:3;8332:66;8396:1;8391:3;8332:66;:::i;:::-;8325:73;;8407:93;8496:3;8407:93;:::i;:::-;8525:2;8520:3;8516:12;8509:19;;8169:365;;;:::o;8540:366::-;8682:3;8703:67;8767:2;8762:3;8703:67;:::i;:::-;8696:74;;8779:93;8868:3;8779:93;:::i;:::-;8897:2;8892:3;8888:12;8881:19;;8540:366;;;:::o;8912:365::-;9054:3;9075:66;9139:1;9134:3;9075:66;:::i;:::-;9068:73;;9150:93;9239:3;9150:93;:::i;:::-;9268:2;9263:3;9259:12;9252:19;;8912:365;;;:::o;9283:366::-;9425:3;9446:67;9510:2;9505:3;9446:67;:::i;:::-;9439:74;;9522:93;9611:3;9522:93;:::i;:::-;9640:2;9635:3;9631:12;9624:19;;9283:366;;;:::o;9655:::-;9797:3;9818:67;9882:2;9877:3;9818:67;:::i;:::-;9811:74;;9894:93;9983:3;9894:93;:::i;:::-;10012:2;10007:3;10003:12;9996:19;;9655:366;;;:::o;10027:::-;10169:3;10190:67;10254:2;10249:3;10190:67;:::i;:::-;10183:74;;10266:93;10355:3;10266:93;:::i;:::-;10384:2;10379:3;10375:12;10368:19;;10027:366;;;:::o;10399:::-;10541:3;10562:67;10626:2;10621:3;10562:67;:::i;:::-;10555:74;;10638:93;10727:3;10638:93;:::i;:::-;10756:2;10751:3;10747:12;10740:19;;10399:366;;;:::o;10771:118::-;10858:24;10876:5;10858:24;:::i;:::-;10853:3;10846:37;10771:118;;:::o;10895:112::-;10978:22;10994:5;10978:22;:::i;:::-;10973:3;10966:35;10895:112;;:::o;11013:222::-;11106:4;11144:2;11133:9;11129:18;11121:26;;11157:71;11225:1;11214:9;11210:17;11201:6;11157:71;:::i;:::-;11013:222;;;;:::o;11241:238::-;11342:4;11380:2;11369:9;11365:18;11357:26;;11393:79;11469:1;11458:9;11454:17;11445:6;11393:79;:::i;:::-;11241:238;;;;:::o;11485:254::-;11594:4;11632:2;11621:9;11617:18;11609:26;;11645:87;11729:1;11718:9;11714:17;11705:6;11645:87;:::i;:::-;11485:254;;;;:::o;11745:348::-;11874:4;11912:2;11901:9;11897:18;11889:26;;11925:71;11993:1;11982:9;11978:17;11969:6;11925:71;:::i;:::-;12006:80;12082:2;12071:9;12067:18;12058:6;12006:80;:::i;:::-;11745:348;;;;;:::o;12099:332::-;12220:4;12258:2;12247:9;12243:18;12235:26;;12271:71;12339:1;12328:9;12324:17;12315:6;12271:71;:::i;:::-;12352:72;12420:2;12409:9;12405:18;12396:6;12352:72;:::i;:::-;12099:332;;;;;:::o;12437:210::-;12524:4;12562:2;12551:9;12547:18;12539:26;;12575:65;12637:1;12626:9;12622:17;12613:6;12575:65;:::i;:::-;12437:210;;;;:::o;12653:258::-;12764:4;12802:2;12791:9;12787:18;12779:26;;12815:89;12901:1;12890:9;12886:17;12877:6;12815:89;:::i;:::-;12653:258;;;;:::o;12917:313::-;13030:4;13068:2;13057:9;13053:18;13045:26;;13117:9;13111:4;13107:20;13103:1;13092:9;13088:17;13081:47;13145:78;13218:4;13209:6;13145:78;:::i;:::-;13137:86;;12917:313;;;;:::o;13236:419::-;13402:4;13440:2;13429:9;13425:18;13417:26;;13489:9;13483:4;13479:20;13475:1;13464:9;13460:17;13453:47;13517:131;13643:4;13517:131;:::i;:::-;13509:139;;13236:419;;;:::o;13661:::-;13827:4;13865:2;13854:9;13850:18;13842:26;;13914:9;13908:4;13904:20;13900:1;13889:9;13885:17;13878:47;13942:131;14068:4;13942:131;:::i;:::-;13934:139;;13661:419;;;:::o;14086:::-;14252:4;14290:2;14279:9;14275:18;14267:26;;14339:9;14333:4;14329:20;14325:1;14314:9;14310:17;14303:47;14367:131;14493:4;14367:131;:::i;:::-;14359:139;;14086:419;;;:::o;14511:::-;14677:4;14715:2;14704:9;14700:18;14692:26;;14764:9;14758:4;14754:20;14750:1;14739:9;14735:17;14728:47;14792:131;14918:4;14792:131;:::i;:::-;14784:139;;14511:419;;;:::o;14936:::-;15102:4;15140:2;15129:9;15125:18;15117:26;;15189:9;15183:4;15179:20;15175:1;15164:9;15160:17;15153:47;15217:131;15343:4;15217:131;:::i;:::-;15209:139;;14936:419;;;:::o;15361:::-;15527:4;15565:2;15554:9;15550:18;15542:26;;15614:9;15608:4;15604:20;15600:1;15589:9;15585:17;15578:47;15642:131;15768:4;15642:131;:::i;:::-;15634:139;;15361:419;;;:::o;15786:::-;15952:4;15990:2;15979:9;15975:18;15967:26;;16039:9;16033:4;16029:20;16025:1;16014:9;16010:17;16003:47;16067:131;16193:4;16067:131;:::i;:::-;16059:139;;15786:419;;;:::o;16211:222::-;16304:4;16342:2;16331:9;16327:18;16319:26;;16355:71;16423:1;16412:9;16408:17;16399:6;16355:71;:::i;:::-;16211:222;;;;:::o;16439:831::-;16702:4;16740:3;16729:9;16725:19;16717:27;;16754:71;16822:1;16811:9;16807:17;16798:6;16754:71;:::i;:::-;16835:80;16911:2;16900:9;16896:18;16887:6;16835:80;:::i;:::-;16962:9;16956:4;16952:20;16947:2;16936:9;16932:18;16925:48;16990:108;17093:4;17084:6;16990:108;:::i;:::-;16982:116;;17108:72;17176:2;17165:9;17161:18;17152:6;17108:72;:::i;:::-;17190:73;17258:3;17247:9;17243:19;17234:6;17190:73;:::i;:::-;16439:831;;;;;;;;:::o;17276:214::-;17365:4;17403:2;17392:9;17388:18;17380:26;;17416:67;17480:1;17469:9;17465:17;17456:6;17416:67;:::i;:::-;17276:214;;;;:::o;17496:129::-;17530:6;17557:20;;:::i;:::-;17547:30;;17586:33;17614:4;17606:6;17586:33;:::i;:::-;17496:129;;;:::o;17631:75::-;17664:6;17697:2;17691:9;17681:19;;17631:75;:::o;17712:311::-;17789:4;17879:18;17871:6;17868:30;17865:56;;;17901:18;;:::i;:::-;17865:56;17951:4;17943:6;17939:17;17931:25;;18011:4;18005;18001:15;17993:23;;17712:311;;;:::o;18029:132::-;18096:4;18119:3;18111:11;;18149:4;18144:3;18140:14;18132:22;;18029:132;;;:::o;18167:114::-;18234:6;18268:5;18262:12;18252:22;;18167:114;;;:::o;18287:99::-;18339:6;18373:5;18367:12;18357:22;;18287:99;;;:::o;18392:113::-;18462:4;18494;18489:3;18485:14;18477:22;;18392:113;;;:::o;18511:184::-;18610:11;18644:6;18639:3;18632:19;18684:4;18679:3;18675:14;18660:29;;18511:184;;;;:::o;18701:169::-;18785:11;18819:6;18814:3;18807:19;18859:4;18854:3;18850:14;18835:29;;18701:169;;;;:::o;18876:305::-;18916:3;18935:20;18953:1;18935:20;:::i;:::-;18930:25;;18969:20;18987:1;18969:20;:::i;:::-;18964:25;;19123:1;19055:66;19051:74;19048:1;19045:81;19042:107;;;19129:18;;:::i;:::-;19042:107;19173:1;19170;19166:9;19159:16;;18876:305;;;;:::o;19187:185::-;19227:1;19244:20;19262:1;19244:20;:::i;:::-;19239:25;;19278:20;19296:1;19278:20;:::i;:::-;19273:25;;19317:1;19307:35;;19322:18;;:::i;:::-;19307:35;19364:1;19361;19357:9;19352:14;;19187:185;;;;:::o;19378:348::-;19418:7;19441:20;19459:1;19441:20;:::i;:::-;19436:25;;19475:20;19493:1;19475:20;:::i;:::-;19470:25;;19663:1;19595:66;19591:74;19588:1;19585:81;19580:1;19573:9;19566:17;19562:105;19559:131;;;19670:18;;:::i;:::-;19559:131;19718:1;19715;19711:9;19700:20;;19378:348;;;;:::o;19732:191::-;19772:4;19792:20;19810:1;19792:20;:::i;:::-;19787:25;;19826:20;19844:1;19826:20;:::i;:::-;19821:25;;19865:1;19862;19859:8;19856:34;;;19870:18;;:::i;:::-;19856:34;19915:1;19912;19908:9;19900:17;;19732:191;;;;:::o;19929:96::-;19966:7;19995:24;20013:5;19995:24;:::i;:::-;19984:35;;19929:96;;;:::o;20031:104::-;20076:7;20105:24;20123:5;20105:24;:::i;:::-;20094:35;;20031:104;;;:::o;20141:90::-;20175:7;20218:5;20211:13;20204:21;20193:32;;20141:90;;;:::o;20237:126::-;20274:7;20314:42;20307:5;20303:54;20292:65;;20237:126;;;:::o;20369:77::-;20406:7;20435:5;20424:16;;20369:77;;;:::o;20452:86::-;20487:7;20527:4;20520:5;20516:16;20505:27;;20452:86;;;:::o;20544:134::-;20602:9;20635:37;20666:5;20635:37;:::i;:::-;20622:50;;20544:134;;;:::o;20684:144::-;20752:9;20785:37;20816:5;20785:37;:::i;:::-;20772:50;;20684:144;;;:::o;20834:121::-;20892:9;20925:24;20943:5;20925:24;:::i;:::-;20912:37;;20834:121;;;:::o;20961:126::-;21011:9;21044:37;21075:5;21044:37;:::i;:::-;21031:50;;20961:126;;;:::o;21093:113::-;21143:9;21176:24;21194:5;21176:24;:::i;:::-;21163:37;;21093:113;;;:::o;21212:307::-;21280:1;21290:113;21304:6;21301:1;21298:13;21290:113;;;21389:1;21384:3;21380:11;21374:18;21370:1;21365:3;21361:11;21354:39;21326:2;21323:1;21319:10;21314:15;;21290:113;;;21421:6;21418:1;21415:13;21412:101;;;21501:1;21492:6;21487:3;21483:16;21476:27;21412:101;21261:258;21212:307;;;:::o;21525:281::-;21608:27;21630:4;21608:27;:::i;:::-;21600:6;21596:40;21738:6;21726:10;21723:22;21702:18;21690:10;21687:34;21684:62;21681:88;;;21749:18;;:::i;:::-;21681:88;21789:10;21785:2;21778:22;21568:238;21525:281;;:::o;21812:233::-;21851:3;21874:24;21892:5;21874:24;:::i;:::-;21865:33;;21920:66;21913:5;21910:77;21907:103;;;21990:18;;:::i;:::-;21907:103;22037:1;22030:5;22026:13;22019:20;;21812:233;;;:::o;22051:180::-;22099:77;22096:1;22089:88;22196:4;22193:1;22186:15;22220:4;22217:1;22210:15;22237:180;22285:77;22282:1;22275:88;22382:4;22379:1;22372:15;22406:4;22403:1;22396:15;22423:180;22471:77;22468:1;22461:88;22568:4;22565:1;22558:15;22592:4;22589:1;22582:15;22609:180;22657:77;22654:1;22647:88;22754:4;22751:1;22744:15;22778:4;22775:1;22768:15;22795:117;22904:1;22901;22894:12;22918:117;23027:1;23024;23017:12;23041:117;23150:1;23147;23140:12;23164:117;23273:1;23270;23263:12;23287:102;23328:6;23379:2;23375:7;23370:2;23363:5;23359:14;23355:28;23345:38;;23287:102;;;:::o;23395:156::-;23535:8;23531:1;23523:6;23519:14;23512:32;23395:156;:::o;23557:170::-;23697:22;23693:1;23685:6;23681:14;23674:46;23557:170;:::o;23733:158::-;23873:10;23869:1;23861:6;23857:14;23850:34;23733:158;:::o;23897:177::-;24037:29;24033:1;24025:6;24021:14;24014:53;23897:177;:::o;24080:162::-;24220:14;24216:1;24208:6;24204:14;24197:38;24080:162;:::o;24248:220::-;24388:34;24384:1;24376:6;24372:14;24365:58;24457:3;24452:2;24444:6;24440:15;24433:28;24248:220;:::o;24474:174::-;24614:26;24610:1;24602:6;24598:14;24591:50;24474:174;:::o;24654:122::-;24727:24;24745:5;24727:24;:::i;:::-;24720:5;24717:35;24707:63;;24766:1;24763;24756:12;24707:63;24654:122;:::o;24782:138::-;24863:32;24889:5;24863:32;:::i;:::-;24856:5;24853:43;24843:71;;24910:1;24907;24900:12;24843:71;24782:138;:::o;24926:116::-;24996:21;25011:5;24996:21;:::i;:::-;24989:5;24986:32;24976:60;;25032:1;25029;25022:12;24976:60;24926:116;:::o;25048:122::-;25121:24;25139:5;25121:24;:::i;:::-;25114:5;25111:35;25101:63;;25160:1;25157;25150:12;25101:63;25048:122;:::o
Swarm Source
ipfs://9deb81a4b1e3f91606de1fa84450fadbe03b2125a4b86c7a4992f363b68f0fee
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.