ERC-20
Overview
Max Total Supply
1,000,000,000,000 BLC
Holders
183
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
600,091,659.14 BLCValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BrainLetCapitalDAO
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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 BLC shareholder!"); return shares[shareholder].totalClaimed; } } contract BrainLetCapitalDAO is IBEP20, Auth { using SafeMath for uint256; address private WETH; address private DEAD = 0x000000000000000000000000000000000000dEaD; address private ZERO = 0x0000000000000000000000000000000000000000; string private constant _name = "BrainLet Capital DAO"; string private constant _symbol = "BLC"; 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(0x3F57D830060B255167c64790C09c286c18036654); address payable public treasury = payable(0x46A3963D8e8d6CE20d06550e82439ba2f5130f16); 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 ( address _owner ) Auth(_owner) { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; distributor = new DividendDistributor(_owner, treasury); isFeeExempt[_owner] = true; isFeeExempt[marketingWallet] = true; isFeeExempt[treasury] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; _balances[_owner] = _totalSupply; emit Transfer(address(0), _owner, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if (sender!= owner && recipient!= owner) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading require (!isBot[sender] && !isBot[recipient], "Nice try"); if (buyLimit) { if (sender!=owner && recipient!= owner) require (amount<=maxBuy, "Too much sir"); } if (block.number <= (launchedAt + 1)) { isBot[recipient] = true; isDividendExempt[recipient] = true; } if(inSwap){ return _basicTransfer(sender, recipient, amount); } bool shouldSwapBack = /*!inSwap &&*/ (recipient==pair && balanceOf(address(this)) > 0); if(shouldSwapBack){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); if(sender != pair && !isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} } if(recipient != pair && !isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} } emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return ( !(isFeeExempt[sender] || isFeeExempt[recipient]) && (sender == pair || recipient == pair) ); } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount; feeAmount = amount.mul(totalFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function swapBack() internal swapping { uint256 amountToSwap = balanceOf(address(this)); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountTreasury = (address(this).balance).div(2); uint256 amountMarketing = (address(this).balance).div(2); payable(marketingWallet).transfer(amountMarketing); payable(treasury).transfer(amountTreasury); } function openTrading() external onlyOwner { launchedAt = block.number; tradingOpen = true; } function setBot(address _address, bool toggle) external onlyOwner { isBot[_address] = toggle; _setIsDividendExempt(_address, toggle); } 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; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"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":[],"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"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setBot","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
608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000af9565b64e8d4a51000620000ab919062000c36565b600455600454600555600e600b556064600c55733f57d830060b255167c64790c09c286c18036654600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507346a3963d8e8d6ce20d06550e82439ba2f5130f16600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260016101000a81548160ff0219169083151502179055506009600a62000193919062000af9565b64012a05f200620001a5919062000c36565b601355348015620001b557600080fd5b506040516200629b3803806200629b8339818101604052810190620001db9190620009c2565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002db57600080fd5b505afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003169190620009c2565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003bf57600080fd5b505afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa9190620009c2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200045892919062000a27565b602060405180830381600087803b1580156200047357600080fd5b505af115801562000488573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ae9190620009c2565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005e3906200099d565b620005f092919062000a54565b604051809103906000f0801580156200060d573d6000803e3d6000fd5b50601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200098e919062000a81565b60405180910390a35062000d79565b6119e480620048b783390190565b600081519050620009bc8162000d5f565b92915050565b600060208284031215620009db57620009da62000d4d565b5b6000620009eb84828501620009ab565b91505092915050565b620009ff8162000ce2565b82525050565b62000a108162000c97565b82525050565b62000a218162000ccb565b82525050565b600060408201905062000a3e600083018562000a05565b62000a4d602083018462000a05565b9392505050565b600060408201905062000a6b600083018562000a05565b62000a7a6020830184620009f4565b9392505050565b600060208201905062000a98600083018462000a16565b92915050565b6000808291508390505b600185111562000af05780860481111562000ac85762000ac762000d1e565b5b600185161562000ad85780820291505b808102905062000ae88562000d52565b945062000aa8565b94509492505050565b600062000b068262000ccb565b915062000b138362000cd5565b925062000b427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b4a565b905092915050565b60008262000b5c576001905062000c2f565b8162000b6c576000905062000c2f565b816001811462000b85576002811462000b905762000bc6565b600191505062000c2f565b60ff84111562000ba55762000ba462000d1e565b5b8360020a91508482111562000bbf5762000bbe62000d1e565b5b5062000c2f565b5060208310610133831016604e8410600b841016171562000c005782820a90508381111562000bfa5762000bf962000d1e565b5b62000c2f565b62000c0f848484600162000a9e565b9250905081840481111562000c295762000c2862000d1e565b5b81810290505b9392505050565b600062000c438262000ccb565b915062000c508362000ccb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c8c5762000c8b62000d1e565b5b828202905092915050565b600062000ca48262000cab565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600062000cef8262000cf6565b9050919050565b600062000d038262000d0a565b9050919050565b600062000d178262000cab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b60008160011c9050919050565b62000d6a8162000c97565b811462000d7657600080fd5b50565b613b2e8062000d896000396000f3fe6080604052600436106102135760003560e01c806369fe0e2d11610118578063bf56b371116100a0578063f0fc6bca1161006f578063f0fc6bca146107e6578063f2fde38b146107fd578063f429389014610826578063f708a64f1461083d578063f887ea40146108665761021a565b8063bf56b3711461073e578063c9567bf914610769578063dd62ed3e14610780578063f0f44260146107bd5761021a565b8063893d20e8116100e7578063893d20e8146106435780638ecc37fb1461066e57806395d89b41146106ab578063a8aa1b31146106d6578063a9059cbb146107015761021a565b806369fe0e2d1461058757806370a08231146105b0578063736a83a1146105ed57806375f0a874146106185761021a565b8063342aa8b51161019b5780635cc33f741161016a5780635cc33f74146104a25780635d098b38146104df57806361d027b314610508578063658d4b7f1461053357806367ee5f091461055c5761021a565b8063342aa8b5146103e85780633e07ce5b14610411578063416501c814610428578063571ac8b0146104655761021a565b806323b63585116101e257806323b63585146102db57806323b872dd146103185780632b112e49146103555780632f54bf6e14610380578063313ce567146103bd5761021a565b806306fdde031461021f578063095ea7b31461024a57806315f7e05e1461028757806318160ddd146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610891565b6040516102419190613495565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c91906130f7565b6108ce565b60405161027e919061345f565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190612fca565b6109c0565b005b3480156102bc57600080fd5b506102c5610a98565b6040516102d29190613597565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190613137565b610aa2565b60405161030f919061345f565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190613064565b610b20565b60405161034c919061345f565b60405180910390f35b34801561036157600080fd5b5061036a610d20565b6040516103779190613597565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612fca565b610da2565b6040516103b4919061345f565b60405180910390f35b3480156103c957600080fd5b506103d2610dfb565b6040516103df919061360c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a91906130b7565b610e04565b005b34801561041d57600080fd5b50610426610eb1565b005b34801561043457600080fd5b5061044f600480360381019061044a9190612fca565b610f16565b60405161045c919061345f565b60405180910390f35b34801561047157600080fd5b5061048c60048036038101906104879190612fca565b610fb4565b604051610499919061345f565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190612fca565b610fe7565b6040516104d69190613597565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190612fca565b61109b565b005b34801561051457600080fd5b5061051d611127565b60405161052a91906133f2565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906130b7565b61114d565b005b34801561056857600080fd5b506105716111f0565b60405161057e9190613597565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190613137565b611297565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190612fca565b61132d565b6040516105e49190613597565b60405180910390f35b3480156105f957600080fd5b50610602611376565b60405161060f9190613597565b60405180910390f35b34801561062457600080fd5b5061062d61141d565b60405161063a91906133f2565b60405180910390f35b34801561064f57600080fd5b50610658611443565b60405161066591906133bc565b60405180910390f35b34801561067a57600080fd5b5061069560048036038101906106909190612fca565b61146c565b6040516106a29190613597565b60405180910390f35b3480156106b757600080fd5b506106c0611520565b6040516106cd9190613495565b60405180910390f35b3480156106e257600080fd5b506106eb61155d565b6040516106f891906133bc565b60405180910390f35b34801561070d57600080fd5b50610728600480360381019061072391906130f7565b611583565b604051610735919061345f565b60405180910390f35b34801561074a57600080fd5b50610753611598565b6040516107609190613597565b60405180910390f35b34801561077557600080fd5b5061077e61159e565b005b34801561078c57600080fd5b506107a760048036038101906107a29190613024565b61160a565b6040516107b49190613597565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190612fca565b611691565b005b3480156107f257600080fd5b506107fb6117aa565b005b34801561080957600080fd5b50610824600480360381019061081f9190612ff7565b611839565b005b34801561083257600080fd5b5061083b6118fb565b005b34801561084957600080fd5b50610864600480360381019061085f91906130b7565b6119b4565b005b34801561087257600080fd5b5061087b611a0a565b604051610888919061347a565b60405180910390f35b60606040518060400160405280601481526020017f427261696e4c6574204361706974616c2044414f000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109ae9190613597565b60405180910390a36001905092915050565b6109c933610da2565b610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff906134b7565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610a6391906133bc565b600060405180830381600087803b158015610a7d57600080fd5b505af1158015610a91573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610aad33610da2565b610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae3906134b7565b60405180910390fd5b610b1930600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a30565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d0c57610c8b826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c039092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d17848484611c67565b90509392505050565b6000610d9d610d50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661132d565b610d8f610d7e600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661132d565b6004546125ab90919063ffffffff16565b6125ab90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610e0d33610da2565b610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e43906134b7565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610ead82826125f5565b5050565b610eba33610da2565b610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef0906134b7565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b6000610f2133610da2565b610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f57906134b7565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610fe0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ce565b9050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b815260040161104491906133bc565b60206040518083038186803b15801561105c57600080fd5b505afa158015611070573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110949190613164565b9050919050565b6110a433610da2565b6110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da906134b7565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61115633610da2565b611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c906134b7565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b15801561125a57600080fd5b505afa15801561126e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112929190613164565b905090565b6112a033610da2565b6112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d6906134b7565b60405180910390fd5b600e811115611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a906134d7565b60405180910390fd5b80600b8190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e057600080fd5b505afa1580156113f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114189190613164565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016114c991906133bc565b60206040518083038186803b1580156114e157600080fd5b505afa1580156114f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115199190613164565b9050919050565b60606040518060400160405280600381526020017f424c430000000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611590338484611c67565b905092915050565b60115481565b6115a733610da2565b6115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd906134b7565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61169a33610da2565b6116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d0906134b7565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f44260826040518263ffffffff1660e01b815260040161177591906133bc565b600060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b5050505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b815260040161180591906133bc565b600060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b50505050565b61184233610da2565b611881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611878906134b7565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118f091906133d7565b60405180910390a150565b61190433610da2565b611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a906134b7565b60405180910390fd5b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119b0573d6000803e3d6000fd5b5050565b6119bd33610da2565b6119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f3906134b7565b60405180910390fd5b611a0682826125f5565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611abb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c039092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5082600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284d90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bf09190613597565b60405180910390a3600190509392505050565b6000838311158290611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c429190613495565b60405180910390fd5b5060008385611c5a919061375d565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d12575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d6757601260009054906101000a900460ff16611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d90613577565b60405180910390fd5b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e0b5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e41906134f7565b60405180910390fd5b601260019054906101000a900460ff1615611f535760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f07575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5257601354821115611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4890613537565b60405180910390fd5b5b5b6001601154611f62919061367c565b4311612019576001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60148054906101000a900460ff161561203e57612037848484611a30565b90506125a4565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120a5575060006120a33061132d565b115b905080156120b6576120b56128ab565b5b61213f836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c039092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061218e8686612b98565b61219857836121a3565b6121a28685612cf5565b5b90506121f781600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284d90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156122e25750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123b957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612383929190613436565b600060405180830381600087803b15801561239d57600080fd5b505af19250505080156123ae575060015b6123b7576123b8565b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156124615750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561253857601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612502929190613436565b600060405180830381600087803b15801561251c57600080fd5b505af192505050801561252d575060015b61253657612537565b5b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125959190613597565b60405180910390a36001925050505b9392505050565b60006125ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c03565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561267f5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61268857600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561277a57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161274392919061340d565b600060405180830381600087803b15801561275d57600080fd5b505af1158015612771573d6000803e3d6000fd5b50505050612849565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612816929190613436565b600060405180830381600087803b15801561283057600080fd5b505af1158015612844573d6000803e3d6000fd5b505050505b5050565b600080828461285c919061367c565b9050838110156128a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289890613517565b60405180910390fd5b8091505092915050565b60016014806101000a81548160ff02191690831515021790555060006128d03061132d565b90506000600267ffffffffffffffff8111156128ef576128ee613912565b5b60405190808252806020026020018201604052801561291d5781602001602082028036833780820191505090505b5090503081600081518110612935576129346138e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106129a6576129a56138e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a449594939291906135b2565b600060405180830381600087803b158015612a5e57600080fd5b505af1158015612a72573d6000803e3d6000fd5b505050506000612a8c600247612e3990919063ffffffff16565b90506000612aa4600247612e3990919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b0e573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612b77573d6000803e3d6000fd5b505050505060006014806101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c3b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612ced5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612cec5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612d21600c54612d13600b5486612e8390919063ffffffff16565b612e3990919063ffffffff16565b9050612d7581600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284d90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e159190613597565b60405180910390a3612e3081846125ab90919063ffffffff16565b91505092915050565b6000612e7b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612efe565b905092915050565b600080831415612e965760009050612ef8565b60008284612ea49190613703565b9050828482612eb391906136d2565b14612ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eea90613557565b60405180910390fd5b809150505b92915050565b60008083118290612f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3c9190613495565b60405180910390fd5b5060008385612f5491906136d2565b9050809150509392505050565b600081359050612f7081613a9c565b92915050565b600081359050612f8581613ab3565b92915050565b600081359050612f9a81613aca565b92915050565b600081359050612faf81613ae1565b92915050565b600081519050612fc481613ae1565b92915050565b600060208284031215612fe057612fdf613941565b5b6000612fee84828501612f61565b91505092915050565b60006020828403121561300d5761300c613941565b5b600061301b84828501612f76565b91505092915050565b6000806040838503121561303b5761303a613941565b5b600061304985828601612f61565b925050602061305a85828601612f61565b9150509250929050565b60008060006060848603121561307d5761307c613941565b5b600061308b86828701612f61565b935050602061309c86828701612f61565b92505060406130ad86828701612fa0565b9150509250925092565b600080604083850312156130ce576130cd613941565b5b60006130dc85828601612f61565b92505060206130ed85828601612f8b565b9150509250929050565b6000806040838503121561310e5761310d613941565b5b600061311c85828601612f61565b925050602061312d85828601612fa0565b9150509250929050565b60006020828403121561314d5761314c613941565b5b600061315b84828501612fa0565b91505092915050565b60006020828403121561317a57613179613941565b5b600061318884828501612fb5565b91505092915050565b600061319d83836131c7565b60208301905092915050565b6131b2816137f8565b82525050565b6131c1816137a3565b82525050565b6131d081613791565b82525050565b6131df81613791565b82525050565b60006131f082613637565b6131fa818561365a565b935061320583613627565b8060005b8381101561323657815161321d8882613191565b97506132288361364d565b925050600181019050613209565b5085935050505092915050565b61324c816137b5565b82525050565b61325b8161380a565b82525050565b61326a8161381c565b82525050565b600061327b82613642565b613285818561366b565b9350613295818560208601613852565b61329e81613946565b840191505092915050565b60006132b660068361366b565b91506132c182613957565b602082019050919050565b60006132d960148361366b565b91506132e482613980565b602082019050919050565b60006132fc60088361366b565b9150613307826139a9565b602082019050919050565b600061331f601b8361366b565b915061332a826139d2565b602082019050919050565b6000613342600c8361366b565b915061334d826139fb565b602082019050919050565b600061336560218361366b565b915061337082613a24565b604082019050919050565b600061338860188361366b565b915061339382613a73565b602082019050919050565b6133a7816137e1565b82525050565b6133b6816137eb565b82525050565b60006020820190506133d160008301846131d6565b92915050565b60006020820190506133ec60008301846131a9565b92915050565b600060208201905061340760008301846131b8565b92915050565b600060408201905061342260008301856131d6565b61342f6020830184613261565b9392505050565b600060408201905061344b60008301856131d6565b613458602083018461339e565b9392505050565b60006020820190506134746000830184613243565b92915050565b600060208201905061348f6000830184613252565b92915050565b600060208201905081810360008301526134af8184613270565b905092915050565b600060208201905081810360008301526134d0816132a9565b9050919050565b600060208201905081810360008301526134f0816132cc565b9050919050565b60006020820190508181036000830152613510816132ef565b9050919050565b6000602082019050818103600083015261353081613312565b9050919050565b6000602082019050818103600083015261355081613335565b9050919050565b6000602082019050818103600083015261357081613358565b9050919050565b600060208201905081810360008301526135908161337b565b9050919050565b60006020820190506135ac600083018461339e565b92915050565b600060a0820190506135c7600083018861339e565b6135d46020830187613261565b81810360408301526135e681866131e5565b90506135f560608301856131d6565b613602608083018461339e565b9695505050505050565b600060208201905061362160008301846133ad565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613687826137e1565b9150613692836137e1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136c7576136c6613885565b5b828201905092915050565b60006136dd826137e1565b91506136e8836137e1565b9250826136f8576136f76138b4565b5b828204905092915050565b600061370e826137e1565b9150613719836137e1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561375257613751613885565b5b828202905092915050565b6000613768826137e1565b9150613773836137e1565b92508282101561378657613785613885565b5b828203905092915050565b600061379c826137c1565b9050919050565b60006137ae826137c1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006138038261382e565b9050919050565b60006138158261382e565b9050919050565b6000613827826137e1565b9050919050565b600061383982613840565b9050919050565b600061384b826137c1565b9050919050565b60005b83811015613870578082015181840152602081019050613855565b8381111561387f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b7f4665652063616e27742065786365656420313425000000000000000000000000600082015250565b7f4e69636520747279000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b613aa581613791565b8114613ab057600080fd5b50565b613abc816137a3565b8114613ac757600080fd5b50565b613ad3816137b5565b8114613ade57600080fd5b50565b613aea816137e1565b8114613af557600080fd5b5056fea264697066735822122087a9b78b5b8533fa8aaccf7295216db1a5eaf248ada2979658668ba4338a9bb064736f6c6343000807003360806040526ec097ce7bc90715b34b9f1000000000600a553480156200002457600080fd5b50604051620019e4380380620019e483398181016040528101906200004a91906200012b565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620001c5565b6000815190506200012581620001ab565b92915050565b60008060408385031215620001455762000144620001a6565b5b6000620001558582860162000114565b9250506020620001688582860162000114565b9150509250929050565b60006200017f8262000186565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001b68162000172565b8114620001c257600080fd5b50565b61180f80620001d56000396000f3fe6080604052600436106100e85760003560e01c8063b2bdfa7b1161008a578063e2d2e21911610059578063e2d2e219146102d7578063e319a3d914610302578063ecd0c0c31461032d578063f0f4426014610358576100e8565b8063b2bdfa7b14610238578063ce7c2ac214610263578063d0e30db0146102a2578063d54ad2a1146102ac576100e8565b80633a98ef39116100c65780633a98ef39146101685780635cc33f74146101935780638ecc37fb146101d0578063997664d71461020d576100e8565b80631014edf5146100ed57806314b6ca961461011657806315f7e05e1461013f575b600080fd5b3480156100f957600080fd5b50610114600480360381019061010f91906112a9565b610381565b005b34801561012257600080fd5b5061013d60048036038101906101389190611269565b61043b565b005b34801561014b57600080fd5b506101666004803603810190610161919061123c565b6106fa565b005b34801561017457600080fd5b5061017d61075e565b60405161018a9190611446565b60405180910390f35b34801561019f57600080fd5b506101ba60048036038101906101b5919061123c565b610764565b6040516101c79190611446565b60405180910390f35b3480156101dc57600080fd5b506101f760048036038101906101f2919061123c565b610834565b6040516102049190611446565b60405180910390f35b34801561021957600080fd5b5061022261094e565b60405161022f9190611446565b60405180910390f35b34801561024457600080fd5b5061024d610954565b60405161025a91906113a9565b60405180910390f35b34801561026f57600080fd5b5061028a6004803603810190610285919061123c565b61097a565b60405161029993929190611461565b60405180910390f35b6102aa6109a4565b005b3480156102b857600080fd5b506102c1610a0a565b6040516102ce9190611446565b60405180910390f35b3480156102e357600080fd5b506102ec610a10565b6040516102f99190611446565b60405180910390f35b34801561030e57600080fd5b50610317610a16565b60405161032491906113a9565b60405180910390f35b34801561033957600080fd5b50610342610a3c565b60405161034f91906113a9565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a919061123c565b610a60565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103db57600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60008511610408578261040a565b845b9081150290604051600060405180830381858888f19350505050158015610435573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049357600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104e8576104e782610afc565b5b60008111801561053a57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561054d5761054882610cf6565b6105af565b60008114801561059f57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156105ae576105ad82610da5565b5b5b6106188161060a600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600654610fac90919063ffffffff16565b610ff690919063ffffffff16565b60068190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106b0600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075257600080fd5b61075b81610afc565b50565b60065481565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154116107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190611406565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156108895760009050610949565b60006108d6600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b90506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161093157600092505050610949565b6109448183610fac90919063ffffffff16565b925050505b919050565b60075481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915090508060000154908060010154908060020154905083565b60003490506109be81600754610ff690919063ffffffff16565b600781905550610a016109f06006546109e284600a5461108690919063ffffffff16565b61110190919063ffffffff16565b600954610ff690919063ffffffff16565b60098190555050565b60085481565b60095481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab857600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610b4c57610cf3565b6000610b5782610834565b90506000811115610cf157610b7781600854610ff690919063ffffffff16565b600881905550610bd281600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610ff690919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610c63600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cef573d6000803e3d6000fd5b505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60036001600380549050610db99190611595565b81548110610dca57610dc96116c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610e4857610e476116c5565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600060036001600380549050610ee89190611595565b81548110610ef957610ef86116c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003805480610f7457610f73611696565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000610fee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061114b565b905092915050565b600080828461100591906114b4565b90508381101561104a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611041906113e6565b60405180910390fd5b8091505092915050565b600061107f600a546110716009548561108690919063ffffffff16565b61110190919063ffffffff16565b9050919050565b60008083141561109957600090506110fb565b600082846110a7919061153b565b90508284826110b6919061150a565b146110f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ed90611426565b60405180910390fd5b809150505b92915050565b600061114383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111af565b905092915050565b6000838311158290611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118a91906113c4565b60405180910390fd5b50600083856111a29190611595565b9050809150509392505050565b600080831182906111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed91906113c4565b60405180910390fd5b5060008385611205919061150a565b9050809150509392505050565b600081359050611221816117ab565b92915050565b600081359050611236816117c2565b92915050565b600060208284031215611252576112516116f4565b5b600061126084828501611212565b91505092915050565b600080604083850312156112805761127f6116f4565b5b600061128e85828601611212565b925050602061129f85828601611227565b9150509250929050565b600080604083850312156112c0576112bf6116f4565b5b60006112ce85828601611227565b92505060206112df85828601611212565b9150509250929050565b6112f2816115c9565b82525050565b600061130382611498565b61130d81856114a3565b935061131d818560208601611605565b611326816116f9565b840191505092915050565b600061133e601b836114a3565b91506113498261170a565b602082019050919050565b6000611361601d836114a3565b915061136c82611733565b602082019050919050565b60006113846021836114a3565b915061138f8261175c565b604082019050919050565b6113a3816115fb565b82525050565b60006020820190506113be60008301846112e9565b92915050565b600060208201905081810360008301526113de81846112f8565b905092915050565b600060208201905081810360008301526113ff81611331565b9050919050565b6000602082019050818103600083015261141f81611354565b9050919050565b6000602082019050818103600083015261143f81611377565b9050919050565b600060208201905061145b600083018461139a565b92915050565b6000606082019050611476600083018661139a565b611483602083018561139a565b611490604083018461139a565b949350505050565b600081519050919050565b600082825260208201905092915050565b60006114bf826115fb565b91506114ca836115fb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156114ff576114fe611638565b5b828201905092915050565b6000611515826115fb565b9150611520836115fb565b9250826115305761152f611667565b5b828204905092915050565b6000611546826115fb565b9150611551836115fb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561158a57611589611638565b5b828202905092915050565b60006115a0826115fb565b91506115ab836115fb565b9250828210156115be576115bd611638565b5b828203905092915050565b60006115d4826115db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611623578082015181840152602081019050611608565b83811115611632576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f596f75277265206e6f74206120424c43207368617265686f6c64657221000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6117b4816115c9565b81146117bf57600080fd5b50565b6117cb816115fb565b81146117d657600080fd5b5056fea2646970667358221220b656844dba4de70d67a61ba39ec9cc1dd215eee8c1277801bb26109c9a6dfcb564736f6c6343000807003300000000000000000000000021b53cd3768994de237bf77d97b40c939eb465d6
Deployed Bytecode
0x6080604052600436106102135760003560e01c806369fe0e2d11610118578063bf56b371116100a0578063f0fc6bca1161006f578063f0fc6bca146107e6578063f2fde38b146107fd578063f429389014610826578063f708a64f1461083d578063f887ea40146108665761021a565b8063bf56b3711461073e578063c9567bf914610769578063dd62ed3e14610780578063f0f44260146107bd5761021a565b8063893d20e8116100e7578063893d20e8146106435780638ecc37fb1461066e57806395d89b41146106ab578063a8aa1b31146106d6578063a9059cbb146107015761021a565b806369fe0e2d1461058757806370a08231146105b0578063736a83a1146105ed57806375f0a874146106185761021a565b8063342aa8b51161019b5780635cc33f741161016a5780635cc33f74146104a25780635d098b38146104df57806361d027b314610508578063658d4b7f1461053357806367ee5f091461055c5761021a565b8063342aa8b5146103e85780633e07ce5b14610411578063416501c814610428578063571ac8b0146104655761021a565b806323b63585116101e257806323b63585146102db57806323b872dd146103185780632b112e49146103555780632f54bf6e14610380578063313ce567146103bd5761021a565b806306fdde031461021f578063095ea7b31461024a57806315f7e05e1461028757806318160ddd146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610891565b6040516102419190613495565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c91906130f7565b6108ce565b60405161027e919061345f565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190612fca565b6109c0565b005b3480156102bc57600080fd5b506102c5610a98565b6040516102d29190613597565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190613137565b610aa2565b60405161030f919061345f565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190613064565b610b20565b60405161034c919061345f565b60405180910390f35b34801561036157600080fd5b5061036a610d20565b6040516103779190613597565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612fca565b610da2565b6040516103b4919061345f565b60405180910390f35b3480156103c957600080fd5b506103d2610dfb565b6040516103df919061360c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a91906130b7565b610e04565b005b34801561041d57600080fd5b50610426610eb1565b005b34801561043457600080fd5b5061044f600480360381019061044a9190612fca565b610f16565b60405161045c919061345f565b60405180910390f35b34801561047157600080fd5b5061048c60048036038101906104879190612fca565b610fb4565b604051610499919061345f565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190612fca565b610fe7565b6040516104d69190613597565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190612fca565b61109b565b005b34801561051457600080fd5b5061051d611127565b60405161052a91906133f2565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906130b7565b61114d565b005b34801561056857600080fd5b506105716111f0565b60405161057e9190613597565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190613137565b611297565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190612fca565b61132d565b6040516105e49190613597565b60405180910390f35b3480156105f957600080fd5b50610602611376565b60405161060f9190613597565b60405180910390f35b34801561062457600080fd5b5061062d61141d565b60405161063a91906133f2565b60405180910390f35b34801561064f57600080fd5b50610658611443565b60405161066591906133bc565b60405180910390f35b34801561067a57600080fd5b5061069560048036038101906106909190612fca565b61146c565b6040516106a29190613597565b60405180910390f35b3480156106b757600080fd5b506106c0611520565b6040516106cd9190613495565b60405180910390f35b3480156106e257600080fd5b506106eb61155d565b6040516106f891906133bc565b60405180910390f35b34801561070d57600080fd5b50610728600480360381019061072391906130f7565b611583565b604051610735919061345f565b60405180910390f35b34801561074a57600080fd5b50610753611598565b6040516107609190613597565b60405180910390f35b34801561077557600080fd5b5061077e61159e565b005b34801561078c57600080fd5b506107a760048036038101906107a29190613024565b61160a565b6040516107b49190613597565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190612fca565b611691565b005b3480156107f257600080fd5b506107fb6117aa565b005b34801561080957600080fd5b50610824600480360381019061081f9190612ff7565b611839565b005b34801561083257600080fd5b5061083b6118fb565b005b34801561084957600080fd5b50610864600480360381019061085f91906130b7565b6119b4565b005b34801561087257600080fd5b5061087b611a0a565b604051610888919061347a565b60405180910390f35b60606040518060400160405280601481526020017f427261696e4c6574204361706974616c2044414f000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109ae9190613597565b60405180910390a36001905092915050565b6109c933610da2565b610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff906134b7565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610a6391906133bc565b600060405180830381600087803b158015610a7d57600080fd5b505af1158015610a91573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610aad33610da2565b610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae3906134b7565b60405180910390fd5b610b1930600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a30565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d0c57610c8b826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c039092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d17848484611c67565b90509392505050565b6000610d9d610d50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661132d565b610d8f610d7e600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661132d565b6004546125ab90919063ffffffff16565b6125ab90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610e0d33610da2565b610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e43906134b7565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610ead82826125f5565b5050565b610eba33610da2565b610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef0906134b7565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b6000610f2133610da2565b610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f57906134b7565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610fe0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ce565b9050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b815260040161104491906133bc565b60206040518083038186803b15801561105c57600080fd5b505afa158015611070573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110949190613164565b9050919050565b6110a433610da2565b6110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da906134b7565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61115633610da2565b611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c906134b7565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b15801561125a57600080fd5b505afa15801561126e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112929190613164565b905090565b6112a033610da2565b6112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d6906134b7565b60405180910390fd5b600e811115611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a906134d7565b60405180910390fd5b80600b8190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e057600080fd5b505afa1580156113f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114189190613164565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016114c991906133bc565b60206040518083038186803b1580156114e157600080fd5b505afa1580156114f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115199190613164565b9050919050565b60606040518060400160405280600381526020017f424c430000000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611590338484611c67565b905092915050565b60115481565b6115a733610da2565b6115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd906134b7565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61169a33610da2565b6116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d0906134b7565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f44260826040518263ffffffff1660e01b815260040161177591906133bc565b600060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b5050505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b815260040161180591906133bc565b600060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b50505050565b61184233610da2565b611881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611878906134b7565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118f091906133d7565b60405180910390a150565b61190433610da2565b611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a906134b7565b60405180910390fd5b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119b0573d6000803e3d6000fd5b5050565b6119bd33610da2565b6119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f3906134b7565b60405180910390fd5b611a0682826125f5565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611abb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c039092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5082600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284d90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bf09190613597565b60405180910390a3600190509392505050565b6000838311158290611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c429190613495565b60405180910390fd5b5060008385611c5a919061375d565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d12575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d6757601260009054906101000a900460ff16611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d90613577565b60405180910390fd5b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e0b5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e41906134f7565b60405180910390fd5b601260019054906101000a900460ff1615611f535760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f07575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5257601354821115611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4890613537565b60405180910390fd5b5b5b6001601154611f62919061367c565b4311612019576001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60148054906101000a900460ff161561203e57612037848484611a30565b90506125a4565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120a5575060006120a33061132d565b115b905080156120b6576120b56128ab565b5b61213f836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c039092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061218e8686612b98565b61219857836121a3565b6121a28685612cf5565b5b90506121f781600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284d90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156122e25750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123b957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612383929190613436565b600060405180830381600087803b15801561239d57600080fd5b505af19250505080156123ae575060015b6123b7576123b8565b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156124615750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561253857601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612502929190613436565b600060405180830381600087803b15801561251c57600080fd5b505af192505050801561252d575060015b61253657612537565b5b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125959190613597565b60405180910390a36001925050505b9392505050565b60006125ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c03565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561267f5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61268857600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561277a57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161274392919061340d565b600060405180830381600087803b15801561275d57600080fd5b505af1158015612771573d6000803e3d6000fd5b50505050612849565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612816929190613436565b600060405180830381600087803b15801561283057600080fd5b505af1158015612844573d6000803e3d6000fd5b505050505b5050565b600080828461285c919061367c565b9050838110156128a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289890613517565b60405180910390fd5b8091505092915050565b60016014806101000a81548160ff02191690831515021790555060006128d03061132d565b90506000600267ffffffffffffffff8111156128ef576128ee613912565b5b60405190808252806020026020018201604052801561291d5781602001602082028036833780820191505090505b5090503081600081518110612935576129346138e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106129a6576129a56138e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a449594939291906135b2565b600060405180830381600087803b158015612a5e57600080fd5b505af1158015612a72573d6000803e3d6000fd5b505050506000612a8c600247612e3990919063ffffffff16565b90506000612aa4600247612e3990919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b0e573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612b77573d6000803e3d6000fd5b505050505060006014806101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c3b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612ced5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612cec5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612d21600c54612d13600b5486612e8390919063ffffffff16565b612e3990919063ffffffff16565b9050612d7581600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284d90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e159190613597565b60405180910390a3612e3081846125ab90919063ffffffff16565b91505092915050565b6000612e7b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612efe565b905092915050565b600080831415612e965760009050612ef8565b60008284612ea49190613703565b9050828482612eb391906136d2565b14612ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eea90613557565b60405180910390fd5b809150505b92915050565b60008083118290612f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3c9190613495565b60405180910390fd5b5060008385612f5491906136d2565b9050809150509392505050565b600081359050612f7081613a9c565b92915050565b600081359050612f8581613ab3565b92915050565b600081359050612f9a81613aca565b92915050565b600081359050612faf81613ae1565b92915050565b600081519050612fc481613ae1565b92915050565b600060208284031215612fe057612fdf613941565b5b6000612fee84828501612f61565b91505092915050565b60006020828403121561300d5761300c613941565b5b600061301b84828501612f76565b91505092915050565b6000806040838503121561303b5761303a613941565b5b600061304985828601612f61565b925050602061305a85828601612f61565b9150509250929050565b60008060006060848603121561307d5761307c613941565b5b600061308b86828701612f61565b935050602061309c86828701612f61565b92505060406130ad86828701612fa0565b9150509250925092565b600080604083850312156130ce576130cd613941565b5b60006130dc85828601612f61565b92505060206130ed85828601612f8b565b9150509250929050565b6000806040838503121561310e5761310d613941565b5b600061311c85828601612f61565b925050602061312d85828601612fa0565b9150509250929050565b60006020828403121561314d5761314c613941565b5b600061315b84828501612fa0565b91505092915050565b60006020828403121561317a57613179613941565b5b600061318884828501612fb5565b91505092915050565b600061319d83836131c7565b60208301905092915050565b6131b2816137f8565b82525050565b6131c1816137a3565b82525050565b6131d081613791565b82525050565b6131df81613791565b82525050565b60006131f082613637565b6131fa818561365a565b935061320583613627565b8060005b8381101561323657815161321d8882613191565b97506132288361364d565b925050600181019050613209565b5085935050505092915050565b61324c816137b5565b82525050565b61325b8161380a565b82525050565b61326a8161381c565b82525050565b600061327b82613642565b613285818561366b565b9350613295818560208601613852565b61329e81613946565b840191505092915050565b60006132b660068361366b565b91506132c182613957565b602082019050919050565b60006132d960148361366b565b91506132e482613980565b602082019050919050565b60006132fc60088361366b565b9150613307826139a9565b602082019050919050565b600061331f601b8361366b565b915061332a826139d2565b602082019050919050565b6000613342600c8361366b565b915061334d826139fb565b602082019050919050565b600061336560218361366b565b915061337082613a24565b604082019050919050565b600061338860188361366b565b915061339382613a73565b602082019050919050565b6133a7816137e1565b82525050565b6133b6816137eb565b82525050565b60006020820190506133d160008301846131d6565b92915050565b60006020820190506133ec60008301846131a9565b92915050565b600060208201905061340760008301846131b8565b92915050565b600060408201905061342260008301856131d6565b61342f6020830184613261565b9392505050565b600060408201905061344b60008301856131d6565b613458602083018461339e565b9392505050565b60006020820190506134746000830184613243565b92915050565b600060208201905061348f6000830184613252565b92915050565b600060208201905081810360008301526134af8184613270565b905092915050565b600060208201905081810360008301526134d0816132a9565b9050919050565b600060208201905081810360008301526134f0816132cc565b9050919050565b60006020820190508181036000830152613510816132ef565b9050919050565b6000602082019050818103600083015261353081613312565b9050919050565b6000602082019050818103600083015261355081613335565b9050919050565b6000602082019050818103600083015261357081613358565b9050919050565b600060208201905081810360008301526135908161337b565b9050919050565b60006020820190506135ac600083018461339e565b92915050565b600060a0820190506135c7600083018861339e565b6135d46020830187613261565b81810360408301526135e681866131e5565b90506135f560608301856131d6565b613602608083018461339e565b9695505050505050565b600060208201905061362160008301846133ad565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613687826137e1565b9150613692836137e1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136c7576136c6613885565b5b828201905092915050565b60006136dd826137e1565b91506136e8836137e1565b9250826136f8576136f76138b4565b5b828204905092915050565b600061370e826137e1565b9150613719836137e1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561375257613751613885565b5b828202905092915050565b6000613768826137e1565b9150613773836137e1565b92508282101561378657613785613885565b5b828203905092915050565b600061379c826137c1565b9050919050565b60006137ae826137c1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006138038261382e565b9050919050565b60006138158261382e565b9050919050565b6000613827826137e1565b9050919050565b600061383982613840565b9050919050565b600061384b826137c1565b9050919050565b60005b83811015613870578082015181840152602081019050613855565b8381111561387f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b7f4665652063616e27742065786365656420313425000000000000000000000000600082015250565b7f4e69636520747279000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b613aa581613791565b8114613ab057600080fd5b50565b613abc816137a3565b8114613ac757600080fd5b50565b613ad3816137b5565b8114613ade57600080fd5b50565b613aea816137e1565b8114613af557600080fd5b5056fea264697066735822122087a9b78b5b8533fa8aaccf7295216db1a5eaf248ada2979658668ba4338a9bb064736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000021b53cd3768994de237bf77d97b40c939eb465d6
-----Decoded View---------------
Arg [0] : _owner (address): 0x21b53Cd3768994de237BF77D97B40C939EB465d6
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000021b53cd3768994de237bf77d97b40c939eb465d6
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.