ERC-20
Overview
Max Total Supply
10,000,000 BITBOY
Holders
63
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000000001 BITBOYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
BitBoyLegal
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-20 */ // SPDX-License-Identifier: Unlicensed // BitBoy Legal // https://t.me/BitboylegalPortal pragma solidity ^0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); 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); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract BitBoyLegal is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "BITBOY LEGAL"; string private constant _symbol = "BITBOY"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcludedFromMax; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 10 * 10**6 * 10**9; // 10m tokens uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 1; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 1; uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; address constant _dead = 0x000000000000000000000000000000000000dEaD; address payable private _taxWallet = payable(0x4223D5837939087953164f283Db353e553570abb); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = false; bool private inSwap = false; bool private _swapEnabled = true; uint256 public _maxTxAmount = 300000 * 10**9; // 3% max transaction uint256 public _maxWalletSize = 300000 * 10**9; // 3% max wallet size uint256 public _swapTokensAtAmount = 30000 * 10**9; // 0.03% token swap limit event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = true; _isExcludedFromMax[owner()] = true; _isExcludedFromMax[address(this)] = true; _isExcludedFromMax[_taxWallet] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "approve from the zero address"); require(spender != address(0), "approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "transfer from the zero address"); require(to != address(0), "transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { require(tradingOpen, "Trading is not enabled"); if(to != uniswapV2Pair && !_isExcludedFromMax[to]) { require(amount <= _maxTxAmount, "Max Transaction Limit"); require(balanceOf(to) + amount < _maxWalletSize, "Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _swapTokensAtAmount) { contractTokenBalance = _swapTokensAtAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && _swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } function toggleSwap(bool swapEnabled) public onlyOwner { _swapEnabled = swapEnabled; } function manualswap() public onlyOwner { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() public onlyOwner { uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } // remove limits before renounce function removeLimits() public onlyOwner { _maxTxAmount = 10000000 * 10**9; _maxWalletSize = 10000000 * 10**9; } function openTrading(bool state) public onlyOwner { tradingOpen = state; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052662386f26fc100006000196200001b919062000792565b6000196200002a9190620007f9565b60075560006009556001600a556000600b556001600c55600b54600d55600c54600e55600d54600f55600e54601055734223d5837939087953164f283db353e553570abb601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360146101000a81548160ff0219169083151502179055506000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff021916908315150217905550660110d9316ec000601455660110d9316ec000601555651b48eb57e0006016553480156200012c57600080fd5b5060006200013f6200072860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460026000620001f46200072860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fe91906200089e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000366573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038c91906200089e565b6040518363ffffffff1660e01b8152600401620003ab929190620008e1565b6020604051808303816000875af1158015620003cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f191906200089e565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004476200073060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000620005806200073060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006b36200072860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc100006040516200071991906200091f565b60405180910390a3506200093c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200079f8262000759565b9150620007ac8362000759565b925082620007bf57620007be62000763565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008068262000759565b9150620008138362000759565b92508282039050818111156200082e576200082d620007ca565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008668262000839565b9050919050565b620008788162000859565b81146200088457600080fd5b50565b60008151905062000898816200086d565b92915050565b600060208284031215620008b757620008b662000834565b5b6000620008c78482850162000887565b91505092915050565b620008db8162000859565b82525050565b6000604082019050620008f86000830185620008d0565b620009076020830184620008d0565b9392505050565b620009198162000759565b82525050565b60006020820190506200093660008301846200090e565b92915050565b6132ac806200094c6000396000f3fe60806040526004361061014f5760003560e01c8063715018a6116100b657806398a5c3151161006f57806398a5c31514610457578063a2a957bb14610480578063a9059cbb146104a9578063c3c8cd80146104e6578063dd62ed3e146104fd578063f2fde38b1461053a57610156565b8063715018a61461037d578063751039fc146103945780637d1db4a5146103ab5780638da5cb5b146103d65780638f9a55c01461040157806395d89b411461042c57610156565b80632fd689e3116101085780632fd689e31461027f578063313ce567146102aa57806349bd5a5e146102d55780636d8aa8f8146103005780636fc3eaec1461032957806370a082311461034057610156565b806306fdde031461015b578063095ea7b3146101865780631694505e146101c357806318160ddd146101ee57806323b872dd146102195780632a9b80721461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610563565b60405161017d9190612532565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906125ed565b6105a0565b6040516101ba9190612648565b60405180910390f35b3480156101cf57600080fd5b506101d86105be565b6040516101e591906126c2565b60405180910390f35b3480156101fa57600080fd5b506102036105e4565b60405161021091906126ec565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612707565b6105f3565b60405161024d9190612648565b60405180910390f35b34801561026257600080fd5b5061027d60048036038101906102789190612786565b6106cc565b005b34801561028b57600080fd5b5061029461077e565b6040516102a191906126ec565b60405180910390f35b3480156102b657600080fd5b506102bf610784565b6040516102cc91906127cf565b60405180910390f35b3480156102e157600080fd5b506102ea61078d565b6040516102f791906127f9565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190612786565b6107b3565b005b34801561033557600080fd5b5061033e610865565b005b34801561034c57600080fd5b5061036760048036038101906103629190612814565b61090b565b60405161037491906126ec565b60405180910390f35b34801561038957600080fd5b5061039261095c565b005b3480156103a057600080fd5b506103a9610aaf565b005b3480156103b757600080fd5b506103c0610b62565b6040516103cd91906126ec565b60405180910390f35b3480156103e257600080fd5b506103eb610b68565b6040516103f891906127f9565b60405180910390f35b34801561040d57600080fd5b50610416610b91565b60405161042391906126ec565b60405180910390f35b34801561043857600080fd5b50610441610b97565b60405161044e9190612532565b60405180910390f35b34801561046357600080fd5b5061047e60048036038101906104799190612841565b610bd4565b005b34801561048c57600080fd5b506104a760048036038101906104a2919061286e565b610c73565b005b3480156104b557600080fd5b506104d060048036038101906104cb91906125ed565b610d2a565b6040516104dd9190612648565b60405180910390f35b3480156104f257600080fd5b506104fb610d48565b005b34801561050957600080fd5b50610524600480360381019061051f91906128d5565b610df6565b60405161053191906126ec565b60405180910390f35b34801561054657600080fd5b50610561600480360381019061055c9190612814565b610e7d565b005b60606040518060400160405280600c81526020017f424954424f59204c4547414c0000000000000000000000000000000000000000815250905090565b60006105b46105ad61103e565b8484611046565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b600061060084848461120f565b6106c18461060c61103e565b6106bc8560405180606001604052806021815260200161325660219139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067261103e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119ce9092919063ffffffff16565b611046565b600190509392505050565b6106d461103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075890612961565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107bb61103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f90612961565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b61086d61103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f190612961565b60405180910390fd5b600047905061090881611a32565b50565b6000610955600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9e565b9050919050565b61096461103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e890612961565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ab761103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90612961565b60405180910390fd5b662386f26fc10000601481905550662386f26fc10000601581905550565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600681526020017f424954424f590000000000000000000000000000000000000000000000000000815250905090565b610bdc61103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6090612961565b60405180910390fd5b8060168190555050565b610c7b61103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff90612961565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b6000610d3e610d3761103e565b848461120f565b6001905092915050565b610d5061103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490612961565b60405180910390fd5b6000610de83061090b565b9050610df381611b0c565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e8561103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612961565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f78906129f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90612a5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90612acb565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161120291906126ec565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361127e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127590612b37565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490612ba3565b60405180910390fd5b60008111611330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132790612c35565b60405180910390fd5b611338610b68565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113a65750611376610b68565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156116cd57601360149054906101000a900460ff166113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190612ca1565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156114a25750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611544576014548111156114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390612d0d565b60405180910390fd5b601554816114f98461090b565b6115039190612d5c565b10611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90612ddc565b60405180910390fd5b5b600061154f3061090b565b905060006016548210159050601654821061156a5760165491505b8080156115845750601360159054906101000a900460ff16155b80156115de5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115f65750601360169054906101000a900460ff165b801561164c5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116a25750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116ca576116b082611b0c565b600047905060008111156116c8576116c747611a32565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117745750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118275750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118265750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561183557600090506119bc565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118e05750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118f857600954600d81905550600a54600e819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119a35750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119bb57600b54600d81905550600c54600e819055505b5b6119c884848484611d85565b50505050565b6000838311158290611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9190612532565b60405180910390fd5b5060008385611a259190612dfc565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a9a573d6000803e3d6000fd5b5050565b6000600754821115611ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adc90612ea2565b60405180910390fd5b6000611aef611db2565b9050611b048184611ddd90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b4457611b43612ec2565b5b604051908082528060200260200182016040528015611b725781602001602082028036833780820191505090505b5090503081600081518110611b8a57611b89612ef1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c559190612f35565b81600181518110611c6957611c68612ef1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611cd030601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611046565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d3495949392919061305b565b600060405180830381600087803b158015611d4e57600080fd5b505af1158015611d62573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611d9357611d92611e27565b5b611d9e848484611e64565b80611dac57611dab61202f565b5b50505050565b6000806000611dbf612043565b91509150611dd68183611ddd90919063ffffffff16565b9250505090565b6000611e1f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061209f565b905092915050565b6000600d54148015611e3b57506000600e54145b611e6257600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b600080600080600080611e7687612102565b955095509550955095509550611ed486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461216a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f6985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fb581612212565b611fbf84836122cf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161201c91906126ec565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000662386f26fc100009050612075662386f26fc10000600754611ddd90919063ffffffff16565b82101561209257600754662386f26fc1000093509350505061209b565b81819350935050505b9091565b600080831182906120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd9190612532565b60405180910390fd5b50600083856120f591906130e4565b9050809150509392505050565b600080600080600080600080600061211f8a600d54600e54612309565b925092509250600061212f611db2565b905060008060006121428e87878761239f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006121ac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119ce565b905092915050565b60008082846121c39190612d5c565b905083811015612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90613161565b60405180910390fd5b8091505092915050565b600061221c611db2565b90506000612233828461242890919063ffffffff16565b905061228781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121b490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6122e48260075461216a90919063ffffffff16565b6007819055506122ff816008546121b490919063ffffffff16565b6008819055505050565b6000806000806123356064612327888a61242890919063ffffffff16565b611ddd90919063ffffffff16565b9050600061235f6064612351888b61242890919063ffffffff16565b611ddd90919063ffffffff16565b905060006123888261237a858c61216a90919063ffffffff16565b61216a90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806123b8858961242890919063ffffffff16565b905060006123cf868961242890919063ffffffff16565b905060006123e6878961242890919063ffffffff16565b9050600061240f82612401858761216a90919063ffffffff16565b61216a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361243a576000905061249c565b600082846124489190613181565b905082848261245791906130e4565b14612497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248e90613235565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124dc5780820151818401526020810190506124c1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612504826124a2565b61250e81856124ad565b935061251e8185602086016124be565b612527816124e8565b840191505092915050565b6000602082019050818103600083015261254c81846124f9565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061258482612559565b9050919050565b61259481612579565b811461259f57600080fd5b50565b6000813590506125b18161258b565b92915050565b6000819050919050565b6125ca816125b7565b81146125d557600080fd5b50565b6000813590506125e7816125c1565b92915050565b6000806040838503121561260457612603612554565b5b6000612612858286016125a2565b9250506020612623858286016125d8565b9150509250929050565b60008115159050919050565b6126428161262d565b82525050565b600060208201905061265d6000830184612639565b92915050565b6000819050919050565b600061268861268361267e84612559565b612663565b612559565b9050919050565b600061269a8261266d565b9050919050565b60006126ac8261268f565b9050919050565b6126bc816126a1565b82525050565b60006020820190506126d760008301846126b3565b92915050565b6126e6816125b7565b82525050565b600060208201905061270160008301846126dd565b92915050565b6000806000606084860312156127205761271f612554565b5b600061272e868287016125a2565b935050602061273f868287016125a2565b9250506040612750868287016125d8565b9150509250925092565b6127638161262d565b811461276e57600080fd5b50565b6000813590506127808161275a565b92915050565b60006020828403121561279c5761279b612554565b5b60006127aa84828501612771565b91505092915050565b600060ff82169050919050565b6127c9816127b3565b82525050565b60006020820190506127e460008301846127c0565b92915050565b6127f381612579565b82525050565b600060208201905061280e60008301846127ea565b92915050565b60006020828403121561282a57612829612554565b5b6000612838848285016125a2565b91505092915050565b60006020828403121561285757612856612554565b5b6000612865848285016125d8565b91505092915050565b6000806000806080858703121561288857612887612554565b5b6000612896878288016125d8565b94505060206128a7878288016125d8565b93505060406128b8878288016125d8565b92505060606128c9878288016125d8565b91505092959194509250565b600080604083850312156128ec576128eb612554565b5b60006128fa858286016125a2565b925050602061290b858286016125a2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061294b6020836124ad565b915061295682612915565b602082019050919050565b6000602082019050818103600083015261297a8161293e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129dd6026836124ad565b91506129e882612981565b604082019050919050565b60006020820190508181036000830152612a0c816129d0565b9050919050565b7f617070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b6000612a49601d836124ad565b9150612a5482612a13565b602082019050919050565b60006020820190508181036000830152612a7881612a3c565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000612ab5601b836124ad565b9150612ac082612a7f565b602082019050919050565b60006020820190508181036000830152612ae481612aa8565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000612b21601e836124ad565b9150612b2c82612aeb565b602082019050919050565b60006020820190508181036000830152612b5081612b14565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000612b8d601c836124ad565b9150612b9882612b57565b602082019050919050565b60006020820190508181036000830152612bbc81612b80565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612c1f6029836124ad565b9150612c2a82612bc3565b604082019050919050565b60006020820190508181036000830152612c4e81612c12565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b6000612c8b6016836124ad565b9150612c9682612c55565b602082019050919050565b60006020820190508181036000830152612cba81612c7e565b9050919050565b7f4d6178205472616e73616374696f6e204c696d69740000000000000000000000600082015250565b6000612cf76015836124ad565b9150612d0282612cc1565b602082019050919050565b60006020820190508181036000830152612d2681612cea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d67826125b7565b9150612d72836125b7565b9250828201905080821115612d8a57612d89612d2d565b5b92915050565b7f42616c616e636520657863656564732077616c6c65742073697a652100000000600082015250565b6000612dc6601c836124ad565b9150612dd182612d90565b602082019050919050565b60006020820190508181036000830152612df581612db9565b9050919050565b6000612e07826125b7565b9150612e12836125b7565b9250828203905081811115612e2a57612e29612d2d565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612e8c602a836124ad565b9150612e9782612e30565b604082019050919050565b60006020820190508181036000830152612ebb81612e7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612f2f8161258b565b92915050565b600060208284031215612f4b57612f4a612554565b5b6000612f5984828501612f20565b91505092915050565b6000819050919050565b6000612f87612f82612f7d84612f62565b612663565b6125b7565b9050919050565b612f9781612f6c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612fd281612579565b82525050565b6000612fe48383612fc9565b60208301905092915050565b6000602082019050919050565b600061300882612f9d565b6130128185612fa8565b935061301d83612fb9565b8060005b8381101561304e5781516130358882612fd8565b975061304083612ff0565b925050600181019050613021565b5085935050505092915050565b600060a08201905061307060008301886126dd565b61307d6020830187612f8e565b818103604083015261308f8186612ffd565b905061309e60608301856127ea565b6130ab60808301846126dd565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130ef826125b7565b91506130fa836125b7565b92508261310a576131096130b5565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061314b601b836124ad565b915061315682613115565b602082019050919050565b6000602082019050818103600083015261317a8161313e565b9050919050565b600061318c826125b7565b9150613197836125b7565b92508282026131a5816125b7565b915082820484148315176131bc576131bb612d2d565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061321f6021836124ad565b915061322a826131c3565b604082019050919050565b6000602082019050818103600083015261324e81613212565b905091905056fe7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201e51c03b054f5567ad5c9114f5a3dc80db462f50471d2d7a582a637f66ec572e64736f6c63430008130033
Deployed Bytecode
0x60806040526004361061014f5760003560e01c8063715018a6116100b657806398a5c3151161006f57806398a5c31514610457578063a2a957bb14610480578063a9059cbb146104a9578063c3c8cd80146104e6578063dd62ed3e146104fd578063f2fde38b1461053a57610156565b8063715018a61461037d578063751039fc146103945780637d1db4a5146103ab5780638da5cb5b146103d65780638f9a55c01461040157806395d89b411461042c57610156565b80632fd689e3116101085780632fd689e31461027f578063313ce567146102aa57806349bd5a5e146102d55780636d8aa8f8146103005780636fc3eaec1461032957806370a082311461034057610156565b806306fdde031461015b578063095ea7b3146101865780631694505e146101c357806318160ddd146101ee57806323b872dd146102195780632a9b80721461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610563565b60405161017d9190612532565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906125ed565b6105a0565b6040516101ba9190612648565b60405180910390f35b3480156101cf57600080fd5b506101d86105be565b6040516101e591906126c2565b60405180910390f35b3480156101fa57600080fd5b506102036105e4565b60405161021091906126ec565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612707565b6105f3565b60405161024d9190612648565b60405180910390f35b34801561026257600080fd5b5061027d60048036038101906102789190612786565b6106cc565b005b34801561028b57600080fd5b5061029461077e565b6040516102a191906126ec565b60405180910390f35b3480156102b657600080fd5b506102bf610784565b6040516102cc91906127cf565b60405180910390f35b3480156102e157600080fd5b506102ea61078d565b6040516102f791906127f9565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190612786565b6107b3565b005b34801561033557600080fd5b5061033e610865565b005b34801561034c57600080fd5b5061036760048036038101906103629190612814565b61090b565b60405161037491906126ec565b60405180910390f35b34801561038957600080fd5b5061039261095c565b005b3480156103a057600080fd5b506103a9610aaf565b005b3480156103b757600080fd5b506103c0610b62565b6040516103cd91906126ec565b60405180910390f35b3480156103e257600080fd5b506103eb610b68565b6040516103f891906127f9565b60405180910390f35b34801561040d57600080fd5b50610416610b91565b60405161042391906126ec565b60405180910390f35b34801561043857600080fd5b50610441610b97565b60405161044e9190612532565b60405180910390f35b34801561046357600080fd5b5061047e60048036038101906104799190612841565b610bd4565b005b34801561048c57600080fd5b506104a760048036038101906104a2919061286e565b610c73565b005b3480156104b557600080fd5b506104d060048036038101906104cb91906125ed565b610d2a565b6040516104dd9190612648565b60405180910390f35b3480156104f257600080fd5b506104fb610d48565b005b34801561050957600080fd5b50610524600480360381019061051f91906128d5565b610df6565b60405161053191906126ec565b60405180910390f35b34801561054657600080fd5b50610561600480360381019061055c9190612814565b610e7d565b005b60606040518060400160405280600c81526020017f424954424f59204c4547414c0000000000000000000000000000000000000000815250905090565b60006105b46105ad61103e565b8484611046565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b600061060084848461120f565b6106c18461060c61103e565b6106bc8560405180606001604052806021815260200161325660219139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067261103e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119ce9092919063ffffffff16565b611046565b600190509392505050565b6106d461103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075890612961565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107bb61103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f90612961565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b61086d61103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f190612961565b60405180910390fd5b600047905061090881611a32565b50565b6000610955600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9e565b9050919050565b61096461103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e890612961565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ab761103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90612961565b60405180910390fd5b662386f26fc10000601481905550662386f26fc10000601581905550565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600681526020017f424954424f590000000000000000000000000000000000000000000000000000815250905090565b610bdc61103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6090612961565b60405180910390fd5b8060168190555050565b610c7b61103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff90612961565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b6000610d3e610d3761103e565b848461120f565b6001905092915050565b610d5061103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490612961565b60405180910390fd5b6000610de83061090b565b9050610df381611b0c565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e8561103e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612961565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f78906129f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90612a5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90612acb565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161120291906126ec565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361127e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127590612b37565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490612ba3565b60405180910390fd5b60008111611330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132790612c35565b60405180910390fd5b611338610b68565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113a65750611376610b68565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156116cd57601360149054906101000a900460ff166113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190612ca1565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156114a25750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611544576014548111156114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390612d0d565b60405180910390fd5b601554816114f98461090b565b6115039190612d5c565b10611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90612ddc565b60405180910390fd5b5b600061154f3061090b565b905060006016548210159050601654821061156a5760165491505b8080156115845750601360159054906101000a900460ff16155b80156115de5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115f65750601360169054906101000a900460ff165b801561164c5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116a25750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116ca576116b082611b0c565b600047905060008111156116c8576116c747611a32565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117745750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118275750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118265750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561183557600090506119bc565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118e05750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118f857600954600d81905550600a54600e819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119a35750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119bb57600b54600d81905550600c54600e819055505b5b6119c884848484611d85565b50505050565b6000838311158290611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9190612532565b60405180910390fd5b5060008385611a259190612dfc565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a9a573d6000803e3d6000fd5b5050565b6000600754821115611ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adc90612ea2565b60405180910390fd5b6000611aef611db2565b9050611b048184611ddd90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b4457611b43612ec2565b5b604051908082528060200260200182016040528015611b725781602001602082028036833780820191505090505b5090503081600081518110611b8a57611b89612ef1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c559190612f35565b81600181518110611c6957611c68612ef1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611cd030601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611046565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d3495949392919061305b565b600060405180830381600087803b158015611d4e57600080fd5b505af1158015611d62573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611d9357611d92611e27565b5b611d9e848484611e64565b80611dac57611dab61202f565b5b50505050565b6000806000611dbf612043565b91509150611dd68183611ddd90919063ffffffff16565b9250505090565b6000611e1f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061209f565b905092915050565b6000600d54148015611e3b57506000600e54145b611e6257600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b600080600080600080611e7687612102565b955095509550955095509550611ed486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461216a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f6985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fb581612212565b611fbf84836122cf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161201c91906126ec565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000662386f26fc100009050612075662386f26fc10000600754611ddd90919063ffffffff16565b82101561209257600754662386f26fc1000093509350505061209b565b81819350935050505b9091565b600080831182906120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd9190612532565b60405180910390fd5b50600083856120f591906130e4565b9050809150509392505050565b600080600080600080600080600061211f8a600d54600e54612309565b925092509250600061212f611db2565b905060008060006121428e87878761239f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006121ac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119ce565b905092915050565b60008082846121c39190612d5c565b905083811015612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90613161565b60405180910390fd5b8091505092915050565b600061221c611db2565b90506000612233828461242890919063ffffffff16565b905061228781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121b490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6122e48260075461216a90919063ffffffff16565b6007819055506122ff816008546121b490919063ffffffff16565b6008819055505050565b6000806000806123356064612327888a61242890919063ffffffff16565b611ddd90919063ffffffff16565b9050600061235f6064612351888b61242890919063ffffffff16565b611ddd90919063ffffffff16565b905060006123888261237a858c61216a90919063ffffffff16565b61216a90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806123b8858961242890919063ffffffff16565b905060006123cf868961242890919063ffffffff16565b905060006123e6878961242890919063ffffffff16565b9050600061240f82612401858761216a90919063ffffffff16565b61216a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361243a576000905061249c565b600082846124489190613181565b905082848261245791906130e4565b14612497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248e90613235565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124dc5780820151818401526020810190506124c1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612504826124a2565b61250e81856124ad565b935061251e8185602086016124be565b612527816124e8565b840191505092915050565b6000602082019050818103600083015261254c81846124f9565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061258482612559565b9050919050565b61259481612579565b811461259f57600080fd5b50565b6000813590506125b18161258b565b92915050565b6000819050919050565b6125ca816125b7565b81146125d557600080fd5b50565b6000813590506125e7816125c1565b92915050565b6000806040838503121561260457612603612554565b5b6000612612858286016125a2565b9250506020612623858286016125d8565b9150509250929050565b60008115159050919050565b6126428161262d565b82525050565b600060208201905061265d6000830184612639565b92915050565b6000819050919050565b600061268861268361267e84612559565b612663565b612559565b9050919050565b600061269a8261266d565b9050919050565b60006126ac8261268f565b9050919050565b6126bc816126a1565b82525050565b60006020820190506126d760008301846126b3565b92915050565b6126e6816125b7565b82525050565b600060208201905061270160008301846126dd565b92915050565b6000806000606084860312156127205761271f612554565b5b600061272e868287016125a2565b935050602061273f868287016125a2565b9250506040612750868287016125d8565b9150509250925092565b6127638161262d565b811461276e57600080fd5b50565b6000813590506127808161275a565b92915050565b60006020828403121561279c5761279b612554565b5b60006127aa84828501612771565b91505092915050565b600060ff82169050919050565b6127c9816127b3565b82525050565b60006020820190506127e460008301846127c0565b92915050565b6127f381612579565b82525050565b600060208201905061280e60008301846127ea565b92915050565b60006020828403121561282a57612829612554565b5b6000612838848285016125a2565b91505092915050565b60006020828403121561285757612856612554565b5b6000612865848285016125d8565b91505092915050565b6000806000806080858703121561288857612887612554565b5b6000612896878288016125d8565b94505060206128a7878288016125d8565b93505060406128b8878288016125d8565b92505060606128c9878288016125d8565b91505092959194509250565b600080604083850312156128ec576128eb612554565b5b60006128fa858286016125a2565b925050602061290b858286016125a2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061294b6020836124ad565b915061295682612915565b602082019050919050565b6000602082019050818103600083015261297a8161293e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129dd6026836124ad565b91506129e882612981565b604082019050919050565b60006020820190508181036000830152612a0c816129d0565b9050919050565b7f617070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b6000612a49601d836124ad565b9150612a5482612a13565b602082019050919050565b60006020820190508181036000830152612a7881612a3c565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000612ab5601b836124ad565b9150612ac082612a7f565b602082019050919050565b60006020820190508181036000830152612ae481612aa8565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000612b21601e836124ad565b9150612b2c82612aeb565b602082019050919050565b60006020820190508181036000830152612b5081612b14565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000612b8d601c836124ad565b9150612b9882612b57565b602082019050919050565b60006020820190508181036000830152612bbc81612b80565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612c1f6029836124ad565b9150612c2a82612bc3565b604082019050919050565b60006020820190508181036000830152612c4e81612c12565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b6000612c8b6016836124ad565b9150612c9682612c55565b602082019050919050565b60006020820190508181036000830152612cba81612c7e565b9050919050565b7f4d6178205472616e73616374696f6e204c696d69740000000000000000000000600082015250565b6000612cf76015836124ad565b9150612d0282612cc1565b602082019050919050565b60006020820190508181036000830152612d2681612cea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d67826125b7565b9150612d72836125b7565b9250828201905080821115612d8a57612d89612d2d565b5b92915050565b7f42616c616e636520657863656564732077616c6c65742073697a652100000000600082015250565b6000612dc6601c836124ad565b9150612dd182612d90565b602082019050919050565b60006020820190508181036000830152612df581612db9565b9050919050565b6000612e07826125b7565b9150612e12836125b7565b9250828203905081811115612e2a57612e29612d2d565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612e8c602a836124ad565b9150612e9782612e30565b604082019050919050565b60006020820190508181036000830152612ebb81612e7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612f2f8161258b565b92915050565b600060208284031215612f4b57612f4a612554565b5b6000612f5984828501612f20565b91505092915050565b6000819050919050565b6000612f87612f82612f7d84612f62565b612663565b6125b7565b9050919050565b612f9781612f6c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612fd281612579565b82525050565b6000612fe48383612fc9565b60208301905092915050565b6000602082019050919050565b600061300882612f9d565b6130128185612fa8565b935061301d83612fb9565b8060005b8381101561304e5781516130358882612fd8565b975061304083612ff0565b925050600181019050613021565b5085935050505092915050565b600060a08201905061307060008301886126dd565b61307d6020830187612f8e565b818103604083015261308f8186612ffd565b905061309e60608301856127ea565b6130ab60808301846126dd565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130ef826125b7565b91506130fa836125b7565b92508261310a576131096130b5565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061314b601b836124ad565b915061315682613115565b602082019050919050565b6000602082019050818103600083015261317a8161313e565b9050919050565b600061318c826125b7565b9150613197836125b7565b92508282026131a5816125b7565b915082820484148315176131bc576131bb612d2d565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061321f6021836124ad565b915061322a826131c3565b604082019050919050565b6000602082019050818103600083015261324e81613212565b905091905056fe7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201e51c03b054f5567ad5c9114f5a3dc80db462f50471d2d7a582a637f66ec572e64736f6c63430008130033
Deployed Bytecode Sourcemap
3964:11744:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6558:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7410:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5249:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6835:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7579:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15617:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5598:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6744:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5297:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15009:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15277:151;;;;;;;;;;;;;:::i;:::-;;6938:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1519:148;;;;;;;;;;;;;:::i;:::-;;15474:135;;;;;;;;;;;;;:::i;:::-;;5448:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1305:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5522:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6649:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14862:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14563:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7084:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15117:152;;;;;;;;;;;;;:::i;:::-;;7259:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1675:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6558:83;6595:13;6628:5;;;;;;;;;;;;;;;;;6621:12;;6558:83;:::o;7410:161::-;7485:4;7502:39;7511:12;:10;:12::i;:::-;7525:7;7534:6;7502:8;:39::i;:::-;7559:4;7552:11;;7410:161;;;;:::o;5249:41::-;;;;;;;;;;;;;:::o;6835:95::-;6888:7;4580:18;6908:14;;6835:95;:::o;7579:406::-;7678:4;7695:36;7705:6;7713:9;7724:6;7695:9;:36::i;:::-;7742:213;7765:6;7786:12;:10;:12::i;:::-;7813:131;7869:6;7813:131;;;;;;;;;;;;;;;;;:11;:19;7825:6;7813:19;;;;;;;;;;;;;;;:33;7833:12;:10;:12::i;:::-;7813:33;;;;;;;;;;;;;;;;:37;;:131;;;;;:::i;:::-;7742:8;:213::i;:::-;7973:4;7966:11;;7579:406;;;;;:::o;15617:88::-;1442:12;:10;:12::i;:::-;1432:22;;:6;;;;;;;;;;:22;;;1424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15692:5:::1;15678:11;;:19;;;;;;;;;;;;;;;;;;15617:88:::0;:::o;5598:50::-;;;;:::o;6744:83::-;6785:5;4194:1;6803:16;;6744:83;:::o;5297:28::-;;;;;;;;;;;;;:::o;15009:100::-;1442:12;:10;:12::i;:::-;1432:22;;:6;;;;;;;;;;:22;;;1424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15090:11:::1;15075:12;;:26;;;;;;;;;;;;;;;;;;15009:100:::0;:::o;15277:151::-;1442:12;:10;:12::i;:::-;1432:22;;:6;;;;;;;;;;:22;;;1424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15327:26:::1;15356:21;15327:50;;15388:32;15401:18;15388:12;:32::i;:::-;15316:112;15277:151::o:0;6938:138::-;7004:7;7031:37;7051:7;:16;7059:7;7051:16;;;;;;;;;;;;;;;;7031:19;:37::i;:::-;7024:44;;6938:138;;;:::o;1519:148::-;1442:12;:10;:12::i;:::-;1432:22;;:6;;;;;;;;;;:22;;;1424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1626:1:::1;1589:40;;1610:6;::::0;::::1;;;;;;;;1589:40;;;;;;;;;;;;1657:1;1640:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1519:148::o:0;15474:135::-;1442:12;:10;:12::i;:::-;1432:22;;:6;;;;;;;;;;:22;;;1424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15541:16:::1;15526:12;:31;;;;15585:16;15568:14;:33;;;;15474:135::o:0;5448:44::-;;;;:::o;1305:79::-;1343:7;1370:6;;;;;;;;;;;1363:13;;1305:79;:::o;5522:46::-;;;;:::o;6649:87::-;6688:13;6721:7;;;;;;;;;;;;;;;;;6714:14;;6649:87;:::o;14862:139::-;1442:12;:10;:12::i;:::-;1432:22;;:6;;;;;;;;;;:22;;;1424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14975:18:::1;14953:19;:40;;;;14862:139:::0;:::o;14563:291::-;1442:12;:10;:12::i;:::-;1432:22;;:6;;;;;;;;;;:22;;;1424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14714:13:::1;14697:14;:30;;;;14756:14;14738:15;:32;;;;14796:11;14781:12;:26;;;;14834:12;14818:13;:28;;;;14563:291:::0;;;;:::o;7084:167::-;7162:4;7179:42;7189:12;:10;:12::i;:::-;7203:9;7214:6;7179:9;:42::i;:::-;7239:4;7232:11;;7084:167;;;;:::o;15117:152::-;1442:12;:10;:12::i;:::-;1432:22;;:6;;;;;;;;;;:22;;;1424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15167:23:::1;15193:24;15211:4;15193:9;:24::i;:::-;15167:50;;15228:33;15245:15;15228:16;:33::i;:::-;15156:113;15117:152::o:0;7259:143::-;7340:7;7367:11;:18;7379:5;7367:18;;;;;;;;;;;;;;;:27;7386:7;7367:27;;;;;;;;;;;;;;;;7360:34;;7259:143;;;;:::o;1675:244::-;1442:12;:10;:12::i;:::-;1432:22;;:6;;;;;;;;;;:22;;;1424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1784:1:::1;1764:22;;:8;:22;;::::0;1756:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1874:8;1845:38;;1866:6;::::0;::::1;;;;;;;;1845:38;;;;;;;;;;;;1903:8;1894:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1675:244:::0;:::o;157:98::-;210:7;237:10;230:17;;157:98;:::o;8644:331::-;8754:1;8737:19;;:5;:19;;;8729:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8828:1;8809:21;;:7;:21;;;8801:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8913:6;8883:11;:18;8895:5;8883:18;;;;;;;;;;;;;;;:27;8902:7;8883:27;;;;;;;;;;;;;;;:36;;;;8951:7;8935:32;;8944:5;8935:32;;;8960:6;8935:32;;;;;;:::i;:::-;;;;;;;;8644:331;;;:::o;8983:2003::-;9087:1;9071:18;;:4;:18;;;9063:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9157:1;9143:16;;:2;:16;;;9135:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9220:1;9211:6;:10;9203:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9292:7;:5;:7::i;:::-;9284:15;;:4;:15;;;;:32;;;;;9309:7;:5;:7::i;:::-;9303:13;;:2;:13;;;;9284:32;9280:1072;;;9343:11;;;;;;;;;;;9335:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9407:13;;;;;;;;;;;9401:19;;:2;:19;;;;:46;;;;;9425:18;:22;9444:2;9425:22;;;;;;;;;;;;;;;;;;;;;;;;;9424:23;9401:46;9398:241;;;9486:12;;9476:6;:22;;9468:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9576:14;;9567:6;9551:13;9561:2;9551:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9543:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;9398:241;9655:28;9686:24;9704:4;9686:9;:24::i;:::-;9655:55;;9725:12;9764:19;;9740:20;:43;;9725:58;;9827:19;;9803:20;:43;9800:138;;9903:19;;9880:42;;9800:138;9958:7;:18;;;;;9970:6;;;;;;;;;;;9969:7;9958:18;:43;;;;;9988:13;;;;;;;;;;;9980:21;;:4;:21;;;;9958:43;:59;;;;;10005:12;;;;;;;;;;;9958:59;:88;;;;;10022:18;:24;10041:4;10022:24;;;;;;;;;;;;;;;;;;;;;;;;;10021:25;9958:88;:115;;;;;10051:18;:22;10070:2;10051:22;;;;;;;;;;;;;;;;;;;;;;;;;10050:23;9958:115;9954:387;;;10094:38;10111:20;10094:16;:38::i;:::-;10151:26;10180:21;10151:50;;10245:1;10224:18;:22;10220:106;;;10271:35;10284:21;10271:12;:35::i;:::-;10220:106;10075:266;9954:387;9318:1034;;9280:1072;10364:12;10379:4;10364:19;;10401:18;:24;10420:4;10401:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10429:18;:22;10448:2;10429:22;;;;;;;;;;;;;;;;;;;;;;;;;10401:50;10400:102;;;;10465:13;;;;;;;;;;;10457:21;;:4;:21;;;;:44;;;;;10488:13;;;;;;;;;;;10482:19;;:2;:19;;;;10457:44;10400:102;10396:529;;;10529:5;10519:15;;10396:529;;;10580:13;;;;;;;;;;;10572:21;;:4;:21;;;:55;;;;;10611:15;;;;;;;;;;;10597:30;;:2;:30;;;;10572:55;10569:162;;;10660:14;;10648:9;:26;;;;10703:12;;10693:7;:22;;;;10569:162;10757:13;;;;;;;;;;;10751:19;;:2;:19;;;:55;;;;;10790:15;;;;;;;;;;;10774:32;;:4;:32;;;;10751:55;10747:165;;;10839:15;;10827:9;:27;;;;10883:13;;10873:7;:23;;;;10747:165;10396:529;10937:41;10952:4;10958:2;10962:6;10970:7;10937:14;:41::i;:::-;9052:1934;8983:2003;;;:::o;2283:190::-;2369:7;2402:1;2397;:6;;2405:12;2389:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2429:9;2445:1;2441;:5;;;;:::i;:::-;2429:17;;2464:1;2457:8;;;2283:190;;;;;:::o;11485:92::-;11542:10;;;;;;;;;;;:19;;:27;11562:6;11542:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11485:92;:::o;7993:291::-;8061:7;8114;;8103;:18;;8081:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8202:19;8224:10;:8;:10::i;:::-;8202:32;;8252:24;8264:11;8252:7;:11;;:24;;;;:::i;:::-;8245:31;;;7993:291;;;:::o;10994:483::-;5779:4;5770:6;;:13;;;;;;;;;;;;;;;;;;11072:21:::1;11110:1;11096:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11072:40;;11141:4;11123;11128:1;11123:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11167:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11157:4;11162:1;11157:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11200:62;11217:4;11232:15;;;;;;;;;;;11250:11;11200:8;:62::i;:::-;11273:15;;;;;;;;;;;:66;;;11354:11;11380:1;11396:4;11423;11443:15;11273:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11061:416;5815:5:::0;5806:6;;:14;;;;;;;;;;;;;;;;;;10994:483;:::o;11585:239::-;11698:7;11693:28;;11707:14;:12;:14::i;:::-;11693:28;11732:44;11750:6;11758:9;11769:6;11732:17;:44::i;:::-;11792:7;11787:29;;11801:15;:13;:15::i;:::-;11787:29;11585:239;;;;:::o;14126:164::-;14168:7;14189:15;14206;14225:19;:17;:19::i;:::-;14188:56;;;;14262:20;14274:7;14262;:11;;:20;;;;:::i;:::-;14255:27;;;;14126:164;:::o;2735:132::-;2793:7;2820:39;2824:1;2827;2820:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2813:46;;2735:132;;;;:::o;8292:219::-;8352:1;8339:9;;:14;:30;;;;;8368:1;8357:7;;:12;8339:30;8371:7;8335:43;8410:9;;8390:17;:29;;;;8448:7;;8430:15;:25;;;;8480:1;8468:9;:13;;;;8502:1;8492:7;:11;;;;8292:219;:::o;11832:578::-;11945:15;11975:23;12013:12;12040:23;12078:12;12105:13;12132:19;12143:7;12132:10;:19::i;:::-;11930:221;;;;;;;;;;;;12182:28;12202:7;12182;:15;12190:6;12182:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12164:7;:15;12172:6;12164:15;;;;;;;;;;;;;;;:46;;;;12242:39;12265:15;12242:7;:18;12250:9;12242:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12221:7;:18;12229:9;12221:18;;;;;;;;;;;;;;;:60;;;;12292:16;12302:5;12292:9;:16::i;:::-;12319:23;12331:4;12337;12319:11;:23::i;:::-;12375:9;12358:44;;12367:6;12358:44;;;12386:15;12358:44;;;;;;:::i;:::-;;;;;;;;11919:491;;;;;;11832:578;;;:::o;8519:117::-;8575:17;;8563:9;:29;;;;8613:15;;8603:7;:25;;;;8519:117::o;14298:257::-;14349:7;14358;14378:15;14396:7;;14378:25;;14414:15;4580:18;14414:25;;14464:20;4580:18;14464:7;;:11;;:20;;;;:::i;:::-;14454:7;:30;14450:61;;;14494:7;;4580:18;14486:25;;;;;;;;14450:61;14530:7;14539;14522:25;;;;;;14298:257;;;:::o;2875:189::-;2961:7;2993:1;2989;:5;2996:12;2981:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3020:9;3036:1;3032;:5;;;;:::i;:::-;3020:17;;3055:1;3048:8;;;2875:189;;;;;:::o;12829:499::-;12888:7;12897;12906;12915;12924;12933;12959:23;12984:12;12998:13;13028:40;13040:7;13049:9;;13060:7;;13028:11;:40::i;:::-;12958:110;;;;;;13079:19;13101:10;:8;:10::i;:::-;13079:32;;13123:15;13140:23;13165:12;13194:46;13206:7;13215:4;13221:5;13228:11;13194;:46::i;:::-;13122:118;;;;;;13259:7;13268:15;13285:4;13291:15;13308:4;13314:5;13251:69;;;;;;;;;;;;;;;;;;;12829:499;;;;;;;:::o;2139:136::-;2197:7;2224:43;2228:1;2231;2224:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2217:50;;2139:136;;;;:::o;1952:179::-;2010:7;2030:9;2046:1;2042;:5;;;;:::i;:::-;2030:17;;2071:1;2066;:6;;2058:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2122:1;2115:8;;;1952:179;;;;:::o;12418:211::-;12471:19;12493:10;:8;:10::i;:::-;12471:32;;12514:13;12530:22;12540:11;12530:5;:9;;:22;;;;:::i;:::-;12514:38;;12588:33;12615:5;12588:7;:22;12604:4;12588:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;12563:7;:22;12579:4;12563:22;;;;;;;;;;;;;;;:58;;;;12460:169;;12418:211;:::o;12637:147::-;12715:17;12727:4;12715:7;;:11;;:17;;;;:::i;:::-;12705:7;:27;;;;12756:20;12771:4;12756:10;;:14;;:20;;;;:::i;:::-;12743:10;:33;;;;12637:147;;:::o;13336:359::-;13431:7;13440;13449;13474:12;13489:30;13515:3;13489:21;13501:8;13489:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;13474:45;;13530:13;13546:28;13570:3;13546:19;13558:6;13546:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;13530:44;;13585:23;13611:28;13633:5;13611:17;13623:4;13611:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;13585:54;;13658:15;13675:4;13681:5;13650:37;;;;;;;;;13336:359;;;;;;;:::o;13703:415::-;13814:7;13823;13832;13857:15;13875:24;13887:11;13875:7;:11;;:24;;;;:::i;:::-;13857:42;;13910:12;13925:21;13934:11;13925:4;:8;;:21;;;;:::i;:::-;13910:36;;13957:13;13973:22;13983:11;13973:5;:9;;:22;;;;:::i;:::-;13957:38;;14006:23;14032:28;14054:5;14032:17;14044:4;14032:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14006:54;;14079:7;14088:15;14105:4;14071:39;;;;;;;;;;13703:415;;;;;;;;:::o;2481:246::-;2539:7;2568:1;2563;:6;2559:47;;2593:1;2586:8;;;;2559:47;2616:9;2632:1;2628;:5;;;;:::i;:::-;2616:17;;2661:1;2656;2652;:5;;;;:::i;:::-;:10;2644:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2718:1;2711:8;;;2481:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:116::-;5466:21;5481:5;5466:21;:::i;:::-;5459:5;5456:32;5446:60;;5502:1;5499;5492:12;5446:60;5396:116;:::o;5518:133::-;5561:5;5599:6;5586:20;5577:29;;5615:30;5639:5;5615:30;:::i;:::-;5518:133;;;;:::o;5657:323::-;5713:6;5762:2;5750:9;5741:7;5737:23;5733:32;5730:119;;;5768:79;;:::i;:::-;5730:119;5888:1;5913:50;5955:7;5946:6;5935:9;5931:22;5913:50;:::i;:::-;5903:60;;5859:114;5657:323;;;;:::o;5986:86::-;6021:7;6061:4;6054:5;6050:16;6039:27;;5986:86;;;:::o;6078:112::-;6161:22;6177:5;6161:22;:::i;:::-;6156:3;6149:35;6078:112;;:::o;6196:214::-;6285:4;6323:2;6312:9;6308:18;6300:26;;6336:67;6400:1;6389:9;6385:17;6376:6;6336:67;:::i;:::-;6196:214;;;;:::o;6416:118::-;6503:24;6521:5;6503:24;:::i;:::-;6498:3;6491:37;6416:118;;:::o;6540:222::-;6633:4;6671:2;6660:9;6656:18;6648:26;;6684:71;6752:1;6741:9;6737:17;6728:6;6684:71;:::i;:::-;6540:222;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:474::-;8277:6;8285;8334:2;8322:9;8313:7;8309:23;8305:32;8302:119;;;8340:79;;:::i;:::-;8302:119;8460:1;8485:53;8530:7;8521:6;8510:9;8506:22;8485:53;:::i;:::-;8475:63;;8431:117;8587:2;8613:53;8658:7;8649:6;8638:9;8634:22;8613:53;:::i;:::-;8603:63;;8558:118;8209:474;;;;;:::o;8689:182::-;8829:34;8825:1;8817:6;8813:14;8806:58;8689:182;:::o;8877:366::-;9019:3;9040:67;9104:2;9099:3;9040:67;:::i;:::-;9033:74;;9116:93;9205:3;9116:93;:::i;:::-;9234:2;9229:3;9225:12;9218:19;;8877:366;;;:::o;9249:419::-;9415:4;9453:2;9442:9;9438:18;9430:26;;9502:9;9496:4;9492:20;9488:1;9477:9;9473:17;9466:47;9530:131;9656:4;9530:131;:::i;:::-;9522:139;;9249:419;;;:::o;9674:225::-;9814:34;9810:1;9802:6;9798:14;9791:58;9883:8;9878:2;9870:6;9866:15;9859:33;9674:225;:::o;9905:366::-;10047:3;10068:67;10132:2;10127:3;10068:67;:::i;:::-;10061:74;;10144:93;10233:3;10144:93;:::i;:::-;10262:2;10257:3;10253:12;10246:19;;9905:366;;;:::o;10277:419::-;10443:4;10481:2;10470:9;10466:18;10458:26;;10530:9;10524:4;10520:20;10516:1;10505:9;10501:17;10494:47;10558:131;10684:4;10558:131;:::i;:::-;10550:139;;10277:419;;;:::o;10702:179::-;10842:31;10838:1;10830:6;10826:14;10819:55;10702:179;:::o;10887:366::-;11029:3;11050:67;11114:2;11109:3;11050:67;:::i;:::-;11043:74;;11126:93;11215:3;11126:93;:::i;:::-;11244:2;11239:3;11235:12;11228:19;;10887:366;;;:::o;11259:419::-;11425:4;11463:2;11452:9;11448:18;11440:26;;11512:9;11506:4;11502:20;11498:1;11487:9;11483:17;11476:47;11540:131;11666:4;11540:131;:::i;:::-;11532:139;;11259:419;;;:::o;11684:177::-;11824:29;11820:1;11812:6;11808:14;11801:53;11684:177;:::o;11867:366::-;12009:3;12030:67;12094:2;12089:3;12030:67;:::i;:::-;12023:74;;12106:93;12195:3;12106:93;:::i;:::-;12224:2;12219:3;12215:12;12208:19;;11867:366;;;:::o;12239:419::-;12405:4;12443:2;12432:9;12428:18;12420:26;;12492:9;12486:4;12482:20;12478:1;12467:9;12463:17;12456:47;12520:131;12646:4;12520:131;:::i;:::-;12512:139;;12239:419;;;:::o;12664:180::-;12804:32;12800:1;12792:6;12788:14;12781:56;12664:180;:::o;12850:366::-;12992:3;13013:67;13077:2;13072:3;13013:67;:::i;:::-;13006:74;;13089:93;13178:3;13089:93;:::i;:::-;13207:2;13202:3;13198:12;13191:19;;12850:366;;;:::o;13222:419::-;13388:4;13426:2;13415:9;13411:18;13403:26;;13475:9;13469:4;13465:20;13461:1;13450:9;13446:17;13439:47;13503:131;13629:4;13503:131;:::i;:::-;13495:139;;13222:419;;;:::o;13647:178::-;13787:30;13783:1;13775:6;13771:14;13764:54;13647:178;:::o;13831:366::-;13973:3;13994:67;14058:2;14053:3;13994:67;:::i;:::-;13987:74;;14070:93;14159:3;14070:93;:::i;:::-;14188:2;14183:3;14179:12;14172:19;;13831:366;;;:::o;14203:419::-;14369:4;14407:2;14396:9;14392:18;14384:26;;14456:9;14450:4;14446:20;14442:1;14431:9;14427:17;14420:47;14484:131;14610:4;14484:131;:::i;:::-;14476:139;;14203:419;;;:::o;14628:228::-;14768:34;14764:1;14756:6;14752:14;14745:58;14837:11;14832:2;14824:6;14820:15;14813:36;14628:228;:::o;14862:366::-;15004:3;15025:67;15089:2;15084:3;15025:67;:::i;:::-;15018:74;;15101:93;15190:3;15101:93;:::i;:::-;15219:2;15214:3;15210:12;15203:19;;14862:366;;;:::o;15234:419::-;15400:4;15438:2;15427:9;15423:18;15415:26;;15487:9;15481:4;15477:20;15473:1;15462:9;15458:17;15451:47;15515:131;15641:4;15515:131;:::i;:::-;15507:139;;15234:419;;;:::o;15659:172::-;15799:24;15795:1;15787:6;15783:14;15776:48;15659:172;:::o;15837:366::-;15979:3;16000:67;16064:2;16059:3;16000:67;:::i;:::-;15993:74;;16076:93;16165:3;16076:93;:::i;:::-;16194:2;16189:3;16185:12;16178:19;;15837:366;;;:::o;16209:419::-;16375:4;16413:2;16402:9;16398:18;16390:26;;16462:9;16456:4;16452:20;16448:1;16437:9;16433:17;16426:47;16490:131;16616:4;16490:131;:::i;:::-;16482:139;;16209:419;;;:::o;16634:171::-;16774:23;16770:1;16762:6;16758:14;16751:47;16634:171;:::o;16811:366::-;16953:3;16974:67;17038:2;17033:3;16974:67;:::i;:::-;16967:74;;17050:93;17139:3;17050:93;:::i;:::-;17168:2;17163:3;17159:12;17152:19;;16811:366;;;:::o;17183:419::-;17349:4;17387:2;17376:9;17372:18;17364:26;;17436:9;17430:4;17426:20;17422:1;17411:9;17407:17;17400:47;17464:131;17590:4;17464:131;:::i;:::-;17456:139;;17183:419;;;:::o;17608:180::-;17656:77;17653:1;17646:88;17753:4;17750:1;17743:15;17777:4;17774:1;17767:15;17794:191;17834:3;17853:20;17871:1;17853:20;:::i;:::-;17848:25;;17887:20;17905:1;17887:20;:::i;:::-;17882:25;;17930:1;17927;17923:9;17916:16;;17951:3;17948:1;17945:10;17942:36;;;17958:18;;:::i;:::-;17942:36;17794:191;;;;:::o;17991:178::-;18131:30;18127:1;18119:6;18115:14;18108:54;17991:178;:::o;18175:366::-;18317:3;18338:67;18402:2;18397:3;18338:67;:::i;:::-;18331:74;;18414:93;18503:3;18414:93;:::i;:::-;18532:2;18527:3;18523:12;18516:19;;18175:366;;;:::o;18547:419::-;18713:4;18751:2;18740:9;18736:18;18728:26;;18800:9;18794:4;18790:20;18786:1;18775:9;18771:17;18764:47;18828:131;18954:4;18828:131;:::i;:::-;18820:139;;18547:419;;;:::o;18972:194::-;19012:4;19032:20;19050:1;19032:20;:::i;:::-;19027:25;;19066:20;19084:1;19066:20;:::i;:::-;19061:25;;19110:1;19107;19103:9;19095:17;;19134:1;19128:4;19125:11;19122:37;;;19139:18;;:::i;:::-;19122:37;18972:194;;;;:::o;19172:229::-;19312:34;19308:1;19300:6;19296:14;19289:58;19381:12;19376:2;19368:6;19364:15;19357:37;19172:229;:::o;19407:366::-;19549:3;19570:67;19634:2;19629:3;19570:67;:::i;:::-;19563:74;;19646:93;19735:3;19646:93;:::i;:::-;19764:2;19759:3;19755:12;19748:19;;19407:366;;;:::o;19779:419::-;19945:4;19983:2;19972:9;19968:18;19960:26;;20032:9;20026:4;20022:20;20018:1;20007:9;20003:17;19996:47;20060:131;20186:4;20060:131;:::i;:::-;20052:139;;19779:419;;;:::o;20204:180::-;20252:77;20249:1;20242:88;20349:4;20346:1;20339:15;20373:4;20370:1;20363:15;20390:180;20438:77;20435:1;20428:88;20535:4;20532:1;20525:15;20559:4;20556:1;20549:15;20576:143;20633:5;20664:6;20658:13;20649:22;;20680:33;20707:5;20680:33;:::i;:::-;20576:143;;;;:::o;20725:351::-;20795:6;20844:2;20832:9;20823:7;20819:23;20815:32;20812:119;;;20850:79;;:::i;:::-;20812:119;20970:1;20995:64;21051:7;21042:6;21031:9;21027:22;20995:64;:::i;:::-;20985:74;;20941:128;20725:351;;;;:::o;21082:85::-;21127:7;21156:5;21145:16;;21082:85;;;:::o;21173:158::-;21231:9;21264:61;21282:42;21291:32;21317:5;21291:32;:::i;:::-;21282:42;:::i;:::-;21264:61;:::i;:::-;21251:74;;21173:158;;;:::o;21337:147::-;21432:45;21471:5;21432:45;:::i;:::-;21427:3;21420:58;21337:147;;:::o;21490:114::-;21557:6;21591:5;21585:12;21575:22;;21490:114;;;:::o;21610:184::-;21709:11;21743:6;21738:3;21731:19;21783:4;21778:3;21774:14;21759:29;;21610:184;;;;:::o;21800:132::-;21867:4;21890:3;21882:11;;21920:4;21915:3;21911:14;21903:22;;21800:132;;;:::o;21938:108::-;22015:24;22033:5;22015:24;:::i;:::-;22010:3;22003:37;21938:108;;:::o;22052:179::-;22121:10;22142:46;22184:3;22176:6;22142:46;:::i;:::-;22220:4;22215:3;22211:14;22197:28;;22052:179;;;;:::o;22237:113::-;22307:4;22339;22334:3;22330:14;22322:22;;22237:113;;;:::o;22386:732::-;22505:3;22534:54;22582:5;22534:54;:::i;:::-;22604:86;22683:6;22678:3;22604:86;:::i;:::-;22597:93;;22714:56;22764:5;22714:56;:::i;:::-;22793:7;22824:1;22809:284;22834:6;22831:1;22828:13;22809:284;;;22910:6;22904:13;22937:63;22996:3;22981:13;22937:63;:::i;:::-;22930:70;;23023:60;23076:6;23023:60;:::i;:::-;23013:70;;22869:224;22856:1;22853;22849:9;22844:14;;22809:284;;;22813:14;23109:3;23102:10;;22510:608;;;22386:732;;;;:::o;23124:831::-;23387:4;23425:3;23414:9;23410:19;23402:27;;23439:71;23507:1;23496:9;23492:17;23483:6;23439:71;:::i;:::-;23520:80;23596:2;23585:9;23581:18;23572:6;23520:80;:::i;:::-;23647:9;23641:4;23637:20;23632:2;23621:9;23617:18;23610:48;23675:108;23778:4;23769:6;23675:108;:::i;:::-;23667:116;;23793:72;23861:2;23850:9;23846:18;23837:6;23793:72;:::i;:::-;23875:73;23943:3;23932:9;23928:19;23919:6;23875:73;:::i;:::-;23124:831;;;;;;;;:::o;23961:180::-;24009:77;24006:1;23999:88;24106:4;24103:1;24096:15;24130:4;24127:1;24120:15;24147:185;24187:1;24204:20;24222:1;24204:20;:::i;:::-;24199:25;;24238:20;24256:1;24238:20;:::i;:::-;24233:25;;24277:1;24267:35;;24282:18;;:::i;:::-;24267:35;24324:1;24321;24317:9;24312:14;;24147:185;;;;:::o;24338:177::-;24478:29;24474:1;24466:6;24462:14;24455:53;24338:177;:::o;24521:366::-;24663:3;24684:67;24748:2;24743:3;24684:67;:::i;:::-;24677:74;;24760:93;24849:3;24760:93;:::i;:::-;24878:2;24873:3;24869:12;24862:19;;24521:366;;;:::o;24893:419::-;25059:4;25097:2;25086:9;25082:18;25074:26;;25146:9;25140:4;25136:20;25132:1;25121:9;25117:17;25110:47;25174:131;25300:4;25174:131;:::i;:::-;25166:139;;24893:419;;;:::o;25318:410::-;25358:7;25381:20;25399:1;25381:20;:::i;:::-;25376:25;;25415:20;25433:1;25415:20;:::i;:::-;25410:25;;25470:1;25467;25463:9;25492:30;25510:11;25492:30;:::i;:::-;25481:41;;25671:1;25662:7;25658:15;25655:1;25652:22;25632:1;25625:9;25605:83;25582:139;;25701:18;;:::i;:::-;25582:139;25366:362;25318:410;;;;:::o;25734:220::-;25874:34;25870:1;25862:6;25858:14;25851:58;25943:3;25938:2;25930:6;25926:15;25919:28;25734:220;:::o;25960:366::-;26102:3;26123:67;26187:2;26182:3;26123:67;:::i;:::-;26116:74;;26199:93;26288:3;26199:93;:::i;:::-;26317:2;26312:3;26308:12;26301:19;;25960:366;;;:::o;26332:419::-;26498:4;26536:2;26525:9;26521:18;26513:26;;26585:9;26579:4;26575:20;26571:1;26560:9;26556:17;26549:47;26613:131;26739:4;26613:131;:::i;:::-;26605:139;;26332:419;;;:::o
Swarm Source
ipfs://1e51c03b054f5567ad5c9114f5a3dc80db462f50471d2d7a582a637f66ec572e
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.