More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 773 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20130287 | 174 days ago | IN | 0 ETH | 0.00022099 | ||||
Approve | 19167108 | 309 days ago | IN | 0 ETH | 0.00038599 | ||||
Approve | 18202156 | 444 days ago | IN | 0 ETH | 0.00018897 | ||||
Approve | 18178700 | 448 days ago | IN | 0 ETH | 0.00070619 | ||||
Approve | 18175913 | 448 days ago | IN | 0 ETH | 0.00041451 | ||||
Approve | 18146788 | 452 days ago | IN | 0 ETH | 0.0004297 | ||||
Approve | 18129395 | 455 days ago | IN | 0 ETH | 0.00099315 | ||||
Approve | 18095579 | 459 days ago | IN | 0 ETH | 0.00049555 | ||||
Approve | 18053465 | 465 days ago | IN | 0 ETH | 0.00051267 | ||||
Approve | 18010916 | 471 days ago | IN | 0 ETH | 0.00073351 | ||||
Approve | 17999658 | 473 days ago | IN | 0 ETH | 0.00091024 | ||||
Approve | 17991838 | 474 days ago | IN | 0 ETH | 0.00079983 | ||||
Transfer | 17991826 | 474 days ago | IN | 0 ETH | 0.00091009 | ||||
Approve | 17984114 | 475 days ago | IN | 0 ETH | 0.00099747 | ||||
Transfer | 17973939 | 476 days ago | IN | 0 ETH | 0.00114723 | ||||
Approve | 17969576 | 477 days ago | IN | 0 ETH | 0.0009657 | ||||
Approve | 17959271 | 478 days ago | IN | 0 ETH | 0.00053795 | ||||
Approve | 17951045 | 480 days ago | IN | 0 ETH | 0.00088334 | ||||
Approve | 17941004 | 481 days ago | IN | 0 ETH | 0.00088347 | ||||
Approve | 17937963 | 481 days ago | IN | 0 ETH | 0.00206012 | ||||
Approve | 17937926 | 481 days ago | IN | 0 ETH | 0.00208267 | ||||
Approve | 17935105 | 482 days ago | IN | 0 ETH | 0.00182768 | ||||
Approve | 17934792 | 482 days ago | IN | 0 ETH | 0.00104395 | ||||
Approve | 17934167 | 482 days ago | IN | 0 ETH | 0.00075207 | ||||
Transfer | 17933451 | 482 days ago | IN | 0 ETH | 0.00109504 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17917402 | 484 days ago | 0.01828743 ETH | ||||
17917402 | 484 days ago | 0.01828743 ETH | ||||
17917398 | 484 days ago | 0.85421806 ETH | ||||
17917398 | 484 days ago | 0.85421806 ETH | ||||
17917394 | 484 days ago | 0.23979766 ETH | ||||
17917394 | 484 days ago | 0.23979766 ETH | ||||
17917389 | 484 days ago | 0.14402083 ETH | ||||
17917389 | 484 days ago | 0.14402083 ETH | ||||
17917389 | 484 days ago | 0.16672704 ETH | ||||
17917389 | 484 days ago | 0.16672704 ETH | ||||
17917389 | 484 days ago | 0.18967856 ETH | ||||
17917389 | 484 days ago | 0.18967856 ETH | ||||
17917388 | 484 days ago | 0.20125494 ETH | ||||
17917388 | 484 days ago | 0.20125494 ETH | ||||
17917388 | 484 days ago | 0.23201202 ETH | ||||
17917388 | 484 days ago | 0.23201202 ETH | ||||
17917386 | 484 days ago | 0.25448078 ETH | ||||
17917386 | 484 days ago | 0.25448078 ETH | ||||
17917385 | 484 days ago | 0.30211009 ETH | ||||
17917385 | 484 days ago | 0.30211009 ETH | ||||
17917382 | 484 days ago | 0.30211009 ETH | ||||
17917382 | 484 days ago | 0.30211009 ETH | ||||
17917382 | 484 days ago | 0.37341697 ETH | ||||
17917382 | 484 days ago | 0.37341697 ETH | ||||
17917370 | 484 days ago | 0.2656206 ETH |
Loading...
Loading
Contract Name:
WBITCOIN
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-15 */ /* https://t.me/Wrappedhpos10i https://twitter.com/WHPOS10I */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.21; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { 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 _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } 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; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; 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 { emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract WBITCOIN is ERC20, Ownable { string _name = unicode"WrappedHarryPotterObamaSonic10Inu"; string _symbol = unicode"WBITCOIN"; using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private isSwppable; uint256 public balance; address private devWallet; uint256 public maxTransaction; uint256 public contractSellTreshold; uint256 public maxWalletHolding; bool public areLimitsOn = true; bool public emptyContractFull = false; uint256 public totalBuyTax; uint256 public devBuyTax; uint256 public liqBuyTax; uint256 public totalSellTax; uint256 public devSellTax; uint256 public liqSellTax; uint256 public tokensForLiquidity; uint256 public tokensForDev; // block number of opened trading uint256 launchedAt; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20(_name, _symbol) { uint256 _devBuyTax = 25; uint256 _liqBuyTax = 0; uint256 _devSellTax = 10; uint256 _liqSellTax = 0; uint256 totalSupply = 10000000000 * 1e18; maxTransaction = totalSupply * 20 / 1000; // 2% maxWalletHolding = totalSupply * 20 / 1000; // 2% contractSellTreshold = totalSupply * 1 / 1000; // 0.05% devBuyTax = _devBuyTax; liqBuyTax = _liqBuyTax; totalBuyTax = devBuyTax + liqBuyTax; devSellTax = _devSellTax; liqSellTax = _liqSellTax; totalSellTax = devSellTax + liqSellTax; devWallet = address(msg.sender); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(devWallet), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(address(devWallet), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(address(this), totalSupply); } receive() external payable { } function goLive() external onlyOwner{ IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 ethAmount = address(this).balance; uint256 tokenAmount = balanceOf(address(this)) * 85 / 100; _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable devWallet, block.timestamp ); } function removeStuckETH() external onlyOwner { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "ETH balance must be greater than 0"); (bool success,) = address(devWallet).call{value: ethBalance}(""); require(success, "Failed to clear ETH balance"); } function removeStuckTokenBalance() external onlyOwner { uint256 tokenBalance = balanceOf(address(this)); require(tokenBalance > 0, "Token balance must be greater than 0"); _transfer(address(this), devWallet, tokenBalance); } function vanishLimits() external onlyOwner { areLimitsOn = false; } function EnableEmptyContract(bool enabled) external onlyOwner{ emptyContractFull = enabled; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function editFees( uint256 _devBuy, uint256 _devSell, uint256 _liqBuy, uint256 _liqSell ) external onlyOwner { devBuyTax = _devBuy; liqBuyTax = _liqBuy; totalBuyTax = devBuyTax + liqBuyTax; devSellTax = _devSell; liqSellTax = _liqSell; totalSellTax = devSellTax + liqSellTax; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateDevWallet(address newDevWallet) external onlyOwner{ emit devWalletUpdated(newDevWallet, devWallet); devWallet = newDevWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(areLimitsOn){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !isSwppable ){ //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= contractSellTreshold; if( canSwap && !isSwppable && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { isSwppable = true; swapBack(); isSwppable = false; } bool takeFee = !isSwppable; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && totalSellTax > 0){ fees = amount.mul(totalSellTax).div(100); tokensForLiquidity += fees * liqSellTax / totalSellTax; tokensForDev += fees * devSellTax / totalSellTax; } // on buy else if(automatedMarketMakerPairs[from] && totalBuyTax > 0) { fees = amount.mul(totalBuyTax).div(100); tokensForLiquidity += fees * liqBuyTax / totalBuyTax; tokensForDev += fees * devBuyTax / totalBuyTax; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(emptyContractFull == false){ if(contractBalance > contractSellTreshold * 20){ contractBalance = contractSellTreshold * 20; } }else{ contractBalance = balanceOf(address(this)); } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForDev; tokensForLiquidity = 0; tokensForDev = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(devWallet).call{value: address(this).balance}(""); } }
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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"EnableEmptyContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areLimitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSellTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devBuy","type":"uint256"},{"internalType":"uint256","name":"_devSell","type":"uint256"},{"internalType":"uint256","name":"_liqBuy","type":"uint256"},{"internalType":"uint256","name":"_liqSell","type":"uint256"}],"name":"editFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emptyContractFull","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"goLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHolding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vanishLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052604051806060016040528060218152602001620055eb60219139600690816200002e919062000bb3565b506040518060400160405280600881526020017f57424954434f494e0000000000000000000000000000000000000000000000008152506007908162000075919062000bb3565b506001600f5f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff021916908315150217905550348015620000b6575f80fd5b5060068054620000c690620009b3565b80601f0160208091040260200160405190810160405280929190818152602001828054620000f490620009b3565b8015620001435780601f10620001195761010080835404028352916020019162000143565b820191905f5260205f20905b8154815290600101906020018083116200012557829003601f168201915b5050505050600780546200015790620009b3565b80601f01602080910402602001604051908101604052809291908181526020018280546200018590620009b3565b8015620001d45780601f10620001aa57610100808354040283529160200191620001d4565b820191905f5260205f20905b815481529060010190602001808311620001b657829003601f168201915b50505050508160039081620001ea919062000bb3565b508060049081620001fc919062000bb3565b5050505f62000210620004da60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f601990505f80600a90505f806b204fce5e3e2502611000000090506103e8601482620002db919062000cc4565b620002e7919062000d3b565b600c819055506103e8601482620002ff919062000cc4565b6200030b919062000d3b565b600e819055506103e860018262000323919062000cc4565b6200032f919062000d3b565b600d81905550846011819055508360128190555060125460115462000355919062000d72565b60108190555082601481905550816015819055506015546014546200037b919062000d72565b60138190555033600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003e3620003d5620004e160201b60201c565b60016200050960201b60201c565b620003f63060016200050960201b60201c565b6200040b61dead60016200050960201b60201c565b6200043f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200050960201b60201c565b6200046162000453620004e160201b60201c565b60016200065260201b60201c565b620004743060016200065260201b60201c565b6200048961dead60016200065260201b60201c565b620004bd600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200065260201b60201c565b620004cf30826200074b60201b60201c565b505050505062000f69565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000519620004da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620005aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005a19062000e0a565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000646919062000e46565b60405180910390a25050565b62000662620004da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ea9062000e0a565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007b39062000eaf565b60405180910390fd5b620007cf5f8383620008e860201b60201c565b620007e681600254620008ed60201b90919060201c565b6002819055506200083d815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054620008ed60201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008dc919062000ee0565b60405180910390a35050565b505050565b5f808284620008fd919062000d72565b90508381101562000945576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200093c9062000f49565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620009cb57607f821691505b602082108103620009e157620009e062000986565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a08565b62000a51868362000a08565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000a9b62000a9562000a8f8462000a69565b62000a72565b62000a69565b9050919050565b5f819050919050565b62000ab68362000a7b565b62000ace62000ac58262000aa2565b84845462000a14565b825550505050565b5f90565b62000ae462000ad6565b62000af181848462000aab565b505050565b5b8181101562000b185762000b0c5f8262000ada565b60018101905062000af7565b5050565b601f82111562000b675762000b3181620009e7565b62000b3c84620009f9565b8101602085101562000b4c578190505b62000b6462000b5b85620009f9565b83018262000af6565b50505b505050565b5f82821c905092915050565b5f62000b895f198460080262000b6c565b1980831691505092915050565b5f62000ba3838362000b78565b9150826002028217905092915050565b62000bbe826200094f565b67ffffffffffffffff81111562000bda5762000bd962000959565b5b62000be68254620009b3565b62000bf382828562000b1c565b5f60209050601f83116001811462000c29575f841562000c14578287015190505b62000c20858262000b96565b86555062000c8f565b601f19841662000c3986620009e7565b5f5b8281101562000c625784890151825560018201915060208501945060208101905062000c3b565b8683101562000c82578489015162000c7e601f89168262000b78565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000cd08262000a69565b915062000cdd8362000a69565b925082820262000ced8162000a69565b9150828204841483151762000d075762000d0662000c97565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000d478262000a69565b915062000d548362000a69565b92508262000d675762000d6662000d0e565b5b828204905092915050565b5f62000d7e8262000a69565b915062000d8b8362000a69565b925082820190508082111562000da65762000da562000c97565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000df260208362000dac565b915062000dff8262000dbc565b602082019050919050565b5f6020820190508181035f83015262000e238162000de4565b9050919050565b5f8115159050919050565b62000e408162000e2a565b82525050565b5f60208201905062000e5b5f83018462000e35565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000e97601f8362000dac565b915062000ea48262000e61565b602082019050919050565b5f6020820190508181035f83015262000ec88162000e89565b9050919050565b62000eda8162000a69565b82525050565b5f60208201905062000ef55f83018462000ecf565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62000f31601b8362000dac565b915062000f3e8262000efb565b602082019050919050565b5f6020820190508181035f83015262000f628162000f23565b9050919050565b6146748062000f775f395ff3fe60806040526004361061025f575f3560e01c80636c7e15c911610143578063a457c2d7116100b5578063c024666811610079578063c0246668146108c4578063c3f70b52146108ec578063dd62ed3e14610916578063df6f93be14610952578063e11d22cf1461097c578063f2fde38b1461099257610266565b8063a457c2d7146107bc578063a9059cbb146107f8578063b62496f514610834578063b69ef8a814610870578063be8575041461089a57610266565b80638da5cb5b116101075780638da5cb5b146106d6578063945674fe1461070057806395d89b411461072a5780639a7a23d6146107545780639ee2e9241461077c5780639fccce321461079257610266565b80636c7e15c91461060a57806370a0823114610634578063715018a6146106705780637571336a14610686578063863cf2cc146106ae57610266565b80631d9305bf116101dc57806339509351116101a057806339509351146104ea57806346469afb1461052657806348d791551461055057806349bd5a5e1461057a5780634fbee193146105a45780635de0f2a0146105e057610266565b80631d9305bf1461041c57806322eb66311461044457806323b872dd1461046e5780632c28f579146104aa578063313ce567146104c057610266565b80631694505e116102235780631694505e1461034c57806318160ddd146103765780631816467f146103a05780631a8145bb146103c85780631bff7898146103f257610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d05780630f299cf1146102fa57806310d5de531461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613606565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906136b7565b610a4a565b6040516102c7919061370f565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061370f565b60405180910390f35b348015610305575f80fd5b5061030e610a79565b005b34801561031b575f80fd5b5061033660048036038101906103319190613728565b610c22565b604051610343919061370f565b60405180910390f35b348015610357575f80fd5b50610360610c3f565b60405161036d91906137ae565b60405180910390f35b348015610381575f80fd5b5061038a610c64565b60405161039791906137d6565b60405180910390f35b3480156103ab575f80fd5b506103c660048036038101906103c19190613728565b610c6d565b005b3480156103d3575f80fd5b506103dc610dc1565b6040516103e991906137d6565b60405180910390f35b3480156103fd575f80fd5b50610406610dc7565b60405161041391906137d6565b60405180910390f35b348015610427575f80fd5b50610442600480360381019061043d91906137ef565b610dcd565b005b34801561044f575f80fd5b50610458610eb1565b60405161046591906137d6565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190613853565b610eb7565b6040516104a1919061370f565b60405180910390f35b3480156104b5575f80fd5b506104be610f8b565b005b3480156104cb575f80fd5b506104d4611391565b6040516104e191906138be565b60405180910390f35b3480156104f5575f80fd5b50610510600480360381019061050b91906136b7565b611399565b60405161051d919061370f565b60405180910390f35b348015610531575f80fd5b5061053a611447565b60405161054791906137d6565b60405180910390f35b34801561055b575f80fd5b5061056461144d565b60405161057191906137d6565b60405180910390f35b348015610585575f80fd5b5061058e611453565b60405161059b91906138e6565b60405180910390f35b3480156105af575f80fd5b506105ca60048036038101906105c59190613728565b611478565b6040516105d7919061370f565b60405180910390f35b3480156105eb575f80fd5b506105f46114ca565b60405161060191906137d6565b60405180910390f35b348015610615575f80fd5b5061061e6114d0565b60405161062b91906137d6565b60405180910390f35b34801561063f575f80fd5b5061065a60048036038101906106559190613728565b6114d6565b60405161066791906137d6565b60405180910390f35b34801561067b575f80fd5b5061068461151b565b005b348015610691575f80fd5b506106ac60048036038101906106a79190613929565b61166e565b005b3480156106b9575f80fd5b506106d460048036038101906106cf9190613967565b61175c565b005b3480156106e1575f80fd5b506106ea61180f565b6040516106f791906138e6565b60405180910390f35b34801561070b575f80fd5b50610714611837565b604051610721919061370f565b60405180910390f35b348015610735575f80fd5b5061073e61184a565b60405161074b9190613606565b60405180910390f35b34801561075f575f80fd5b5061077a60048036038101906107759190613929565b6118da565b005b348015610787575f80fd5b50610790611a0d565b005b34801561079d575f80fd5b506107a6611b20565b6040516107b391906137d6565b60405180910390f35b3480156107c7575f80fd5b506107e260048036038101906107dd91906136b7565b611b26565b6040516107ef919061370f565b60405180910390f35b348015610803575f80fd5b5061081e600480360381019061081991906136b7565b611bee565b60405161082b919061370f565b60405180910390f35b34801561083f575f80fd5b5061085a60048036038101906108559190613728565b611c0b565b604051610867919061370f565b60405180910390f35b34801561087b575f80fd5b50610884611c28565b60405161089191906137d6565b60405180910390f35b3480156108a5575f80fd5b506108ae611c2e565b6040516108bb91906137d6565b60405180910390f35b3480156108cf575f80fd5b506108ea60048036038101906108e59190613929565b611c34565b005b3480156108f7575f80fd5b50610900611d70565b60405161090d91906137d6565b60405180910390f35b348015610921575f80fd5b5061093c60048036038101906109379190613992565b611d76565b60405161094991906137d6565b60405180910390f35b34801561095d575f80fd5b50610966611df8565b60405161097391906137d6565b60405180910390f35b348015610987575f80fd5b50610990611dfe565b005b34801561099d575f80fd5b506109b860048036038101906109b39190613728565b611eaf565b005b6060600380546109c9906139fd565b80601f01602080910402602001604051908101604052809291908181526020018280546109f5906139fd565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a56612003565b848461200a565b6001905092915050565b600f5f9054906101000a900460ff1681565b610a81612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690613a77565b60405180910390fd5b5f4790505f8111610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90613b05565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610b9b90613b50565b5f6040518083038185875af1925050503d805f8114610bd5576040519150601f19603f3d011682016040523d82523d5f602084013e610bda565b606091505b5050905080610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590613bae565b60405180910390fd5b5050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610c75612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa90613a77565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60135481565b610dd5612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a90613a77565b60405180910390fd5b8360118190555081601281905550601254601154610e819190613bf9565b6010819055508260148190555080601581905550601554601454610ea59190613bf9565b60138190555050505050565b60145481565b5f610ec38484846121cd565b610f8084610ecf612003565b610f7b856040518060600160405280602881526020016145f26028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f32612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b61200a565b600190509392505050565b610f93612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101890613a77565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905061104481600161166e565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f19190613c40565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117a9190613c40565b6040518363ffffffff1660e01b8152600401611197929190613c6b565b6020604051808303815f875af11580156111b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d79190613c40565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061124260095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161166e565b61126e60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612b54565b5f4790505f60646055611280306114d6565b61128a9190613c92565b6112949190613d00565b90506112c23060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161134896959493929190613d69565b60606040518083038185885af1158015611364573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113899190613ddc565b505050505050565b5f6012905090565b5f61143d6113a5612003565b846114388560015f6113b5612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bf290919063ffffffff16565b61200a565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611523612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890613a77565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611676612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90613a77565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611764612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e990613a77565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b606060048054611859906139fd565b80601f0160208091040260200160405190810160405280929190818152602001828054611885906139fd565b80156118d05780601f106118a7576101008083540402835291602001916118d0565b820191905f5260205f20905b8154815290600101906020018083116118b357829003601f168201915b5050505050905090565b6118e2612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196790613a77565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f690613e9c565b60405180910390fd5b611a098282612b54565b5050565b611a15612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a90613a77565b60405180910390fd5b5f611aad306114d6565b90505f8111611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae890613f2a565b60405180910390fd5b611b1d30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836121cd565b50565b60175481565b5f611be4611b32612003565b84611bdf8560405180606001604052806025815260200161461a6025913960015f611b5b612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b61200a565b6001905092915050565b5f611c01611bfa612003565b84846121cd565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b60155481565b611c3c612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc190613a77565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d64919061370f565b60405180910390a25050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b611e06612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b90613a77565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b611eb7612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613a77565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206f90613fb8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd90614046565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121c091906137d6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361223b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612232906140d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090614162565b60405180910390fd5b5f81036122c0576122bb83835f612c4f565b612aed565b600f5f9054906101000a900460ff16156126b5576122dc61180f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561234a575061231a61180f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561238257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123d55750600960149054906101000a900460ff16155b156126b457601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124775750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561251e57600c548111156124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b8906141f0565b60405180910390fd5b600e546124cd836114d6565b826124d89190613bf9565b1115612519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251090614258565b60405180910390fd5b6126b3565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125bb5750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561260a57600c54811115612605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fc906142e6565b60405180910390fd5b6126b2565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126b157600e54612664836114d6565b8261266f9190613bf9565b11156126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a790614258565b60405180910390fd5b5b5b5b5b5b5f6126bf306114d6565b90505f600d5482101590508080156126e45750600960149054906101000a900460ff16155b80156127375750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561278a575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156127dd575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612820576001600960146101000a81548160ff021916908315150217905550612805612ed8565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128cf575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128d8575f90505b5f8115612add57601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561293657505f601354115b156129ce576129636064612955601354886130fe90919063ffffffff16565b61317590919063ffffffff16565b9050601354601554826129769190613c92565b6129809190613d00565b60165f8282546129909190613bf9565b92505081905550601354601454826129a89190613c92565b6129b29190613d00565b60175f8282546129c29190613bf9565b92505081905550612aba565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a2557505f601054115b15612ab957612a526064612a44601054886130fe90919063ffffffff16565b61317590919063ffffffff16565b905060105460125482612a659190613c92565b612a6f9190613d00565b60165f828254612a7f9190613bf9565b9250508190555060105460115482612a979190613c92565b612aa19190613d00565b60175f828254612ab19190613bf9565b925050819055505b5b5f811115612ace57612acd873083612c4f565b5b8085612ada9190614304565b94505b612ae8878787612c4f565b505050505b505050565b5f838311158290612b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b309190613606565b60405180910390fd5b505f8385612b479190614304565b9050809150509392505050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f808284612c009190613bf9565b905083811015612c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3c90614381565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb4906140d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2290614162565b60405180910390fd5b612d368383836131be565b612d9f816040518060600160405280602681526020016145cc602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612e2e815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bf290919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ecb91906137d6565b60405180910390a3505050565b5f612ee2306114d6565b90505f601754601654612ef59190613bf9565b90505f80831480612f0557505f82145b15612f12575050506130fc565b5f1515600f60019054906101000a900460ff16151503612f59576014600d54612f3b9190613c92565b831115612f54576014600d54612f519190613c92565b92505b612f65565b612f62306114d6565b92505b5f60028360165486612f779190613c92565b612f819190613d00565b612f8b9190613d00565b90505f612fa182866131c390919063ffffffff16565b90505f479050612fb08261320c565b5f612fc482476131c390919063ffffffff16565b90505f612fee87612fe0601754856130fe90919063ffffffff16565b61317590919063ffffffff16565b90505f8183612ffd9190614304565b90505f6016819055505f6017819055505f8611801561301b57505f81115b156130685761302a8682613442565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260165460405161305f9392919061439f565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130ad90613b50565b5f6040518083038185875af1925050503d805f81146130e7576040519150601f19603f3d011682016040523d82523d5f602084013e6130ec565b606091505b5050809750505050505050505050505b565b5f80830361310e575f905061316f565b5f828461311b9190613c92565b905082848261312a9190613d00565b1461316a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316190614444565b60405180910390fd5b809150505b92915050565b5f6131b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061351b565b905092915050565b505050565b5f61320483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612af2565b905092915050565b5f600267ffffffffffffffff81111561322857613227614462565b5b6040519080825280602002602001820160405280156132565781602001602082028036833780820191505090505b50905030815f8151811061326d5761326c61448f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613311573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133359190613c40565b816001815181106133495761334861448f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133af3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613411959493929190614573565b5f604051808303815f87803b158015613428575f80fd5b505af115801561343a573d5f803e3d5ffd5b505050505050565b61346e3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b81526004016134d396959493929190613d69565b60606040518083038185885af11580156134ef573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906135149190613ddc565b5050505050565b5f8083118290613561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135589190613606565b60405180910390fd5b505f838561356f9190613d00565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156135b3578082015181840152602081019050613598565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135d88261357c565b6135e28185613586565b93506135f2818560208601613596565b6135fb816135be565b840191505092915050565b5f6020820190508181035f83015261361e81846135ce565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136538261362a565b9050919050565b61366381613649565b811461366d575f80fd5b50565b5f8135905061367e8161365a565b92915050565b5f819050919050565b61369681613684565b81146136a0575f80fd5b50565b5f813590506136b18161368d565b92915050565b5f80604083850312156136cd576136cc613626565b5b5f6136da85828601613670565b92505060206136eb858286016136a3565b9150509250929050565b5f8115159050919050565b613709816136f5565b82525050565b5f6020820190506137225f830184613700565b92915050565b5f6020828403121561373d5761373c613626565b5b5f61374a84828501613670565b91505092915050565b5f819050919050565b5f61377661377161376c8461362a565b613753565b61362a565b9050919050565b5f6137878261375c565b9050919050565b5f6137988261377d565b9050919050565b6137a88161378e565b82525050565b5f6020820190506137c15f83018461379f565b92915050565b6137d081613684565b82525050565b5f6020820190506137e95f8301846137c7565b92915050565b5f805f806080858703121561380757613806613626565b5b5f613814878288016136a3565b9450506020613825878288016136a3565b9350506040613836878288016136a3565b9250506060613847878288016136a3565b91505092959194509250565b5f805f6060848603121561386a57613869613626565b5b5f61387786828701613670565b935050602061388886828701613670565b9250506040613899868287016136a3565b9150509250925092565b5f60ff82169050919050565b6138b8816138a3565b82525050565b5f6020820190506138d15f8301846138af565b92915050565b6138e081613649565b82525050565b5f6020820190506138f95f8301846138d7565b92915050565b613908816136f5565b8114613912575f80fd5b50565b5f81359050613923816138ff565b92915050565b5f806040838503121561393f5761393e613626565b5b5f61394c85828601613670565b925050602061395d85828601613915565b9150509250929050565b5f6020828403121561397c5761397b613626565b5b5f61398984828501613915565b91505092915050565b5f80604083850312156139a8576139a7613626565b5b5f6139b585828601613670565b92505060206139c685828601613670565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a1457607f821691505b602082108103613a2757613a266139d0565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a61602083613586565b9150613a6c82613a2d565b602082019050919050565b5f6020820190508181035f830152613a8e81613a55565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613aef602283613586565b9150613afa82613a95565b604082019050919050565b5f6020820190508181035f830152613b1c81613ae3565b9050919050565b5f81905092915050565b50565b5f613b3b5f83613b23565b9150613b4682613b2d565b5f82019050919050565b5f613b5a82613b30565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613b98601b83613586565b9150613ba382613b64565b602082019050919050565b5f6020820190508181035f830152613bc581613b8c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c0382613684565b9150613c0e83613684565b9250828201905080821115613c2657613c25613bcc565b5b92915050565b5f81519050613c3a8161365a565b92915050565b5f60208284031215613c5557613c54613626565b5b5f613c6284828501613c2c565b91505092915050565b5f604082019050613c7e5f8301856138d7565b613c8b60208301846138d7565b9392505050565b5f613c9c82613684565b9150613ca783613684565b9250828202613cb581613684565b91508282048414831517613ccc57613ccb613bcc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d0a82613684565b9150613d1583613684565b925082613d2557613d24613cd3565b5b828204905092915050565b5f819050919050565b5f613d53613d4e613d4984613d30565b613753565b613684565b9050919050565b613d6381613d39565b82525050565b5f60c082019050613d7c5f8301896138d7565b613d8960208301886137c7565b613d966040830187613d5a565b613da36060830186613d5a565b613db060808301856138d7565b613dbd60a08301846137c7565b979650505050505050565b5f81519050613dd68161368d565b92915050565b5f805f60608486031215613df357613df2613626565b5b5f613e0086828701613dc8565b9350506020613e1186828701613dc8565b9250506040613e2286828701613dc8565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e86603983613586565b9150613e9182613e2c565b604082019050919050565b5f6020820190508181035f830152613eb381613e7a565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613f14602483613586565b9150613f1f82613eba565b604082019050919050565b5f6020820190508181035f830152613f4181613f08565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613fa2602483613586565b9150613fad82613f48565b604082019050919050565b5f6020820190508181035f830152613fcf81613f96565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614030602283613586565b915061403b82613fd6565b604082019050919050565b5f6020820190508181035f83015261405d81614024565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6140be602583613586565b91506140c982614064565b604082019050919050565b5f6020820190508181035f8301526140eb816140b2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61414c602383613586565b9150614157826140f2565b604082019050919050565b5f6020820190508181035f83015261417981614140565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6141da603583613586565b91506141e582614180565b604082019050919050565b5f6020820190508181035f830152614207816141ce565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614242601383613586565b915061424d8261420e565b602082019050919050565b5f6020820190508181035f83015261426f81614236565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6142d0603683613586565b91506142db82614276565b604082019050919050565b5f6020820190508181035f8301526142fd816142c4565b9050919050565b5f61430e82613684565b915061431983613684565b925082820390508181111561433157614330613bcc565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61436b601b83613586565b915061437682614337565b602082019050919050565b5f6020820190508181035f8301526143988161435f565b9050919050565b5f6060820190506143b25f8301866137c7565b6143bf60208301856137c7565b6143cc60408301846137c7565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61442e602183613586565b9150614439826143d4565b604082019050919050565b5f6020820190508181035f83015261445b81614422565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6144ee81613649565b82525050565b5f6144ff83836144e5565b60208301905092915050565b5f602082019050919050565b5f614521826144bc565b61452b81856144c6565b9350614536836144d6565b805f5b8381101561456657815161454d88826144f4565b97506145588361450b565b925050600181019050614539565b5085935050505092915050565b5f60a0820190506145865f8301886137c7565b6145936020830187613d5a565b81810360408301526145a58186614517565b90506145b460608301856138d7565b6145c160808301846137c7565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200944b0bf78869d081ae3fc546ee626be21b66b9848dc27e88a92d521957a38d664736f6c63430008150033577261707065644861727279506f747465724f62616d61536f6e69633130496e75
Deployed Bytecode
0x60806040526004361061025f575f3560e01c80636c7e15c911610143578063a457c2d7116100b5578063c024666811610079578063c0246668146108c4578063c3f70b52146108ec578063dd62ed3e14610916578063df6f93be14610952578063e11d22cf1461097c578063f2fde38b1461099257610266565b8063a457c2d7146107bc578063a9059cbb146107f8578063b62496f514610834578063b69ef8a814610870578063be8575041461089a57610266565b80638da5cb5b116101075780638da5cb5b146106d6578063945674fe1461070057806395d89b411461072a5780639a7a23d6146107545780639ee2e9241461077c5780639fccce321461079257610266565b80636c7e15c91461060a57806370a0823114610634578063715018a6146106705780637571336a14610686578063863cf2cc146106ae57610266565b80631d9305bf116101dc57806339509351116101a057806339509351146104ea57806346469afb1461052657806348d791551461055057806349bd5a5e1461057a5780634fbee193146105a45780635de0f2a0146105e057610266565b80631d9305bf1461041c57806322eb66311461044457806323b872dd1461046e5780632c28f579146104aa578063313ce567146104c057610266565b80631694505e116102235780631694505e1461034c57806318160ddd146103765780631816467f146103a05780631a8145bb146103c85780631bff7898146103f257610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d05780630f299cf1146102fa57806310d5de531461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613606565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906136b7565b610a4a565b6040516102c7919061370f565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061370f565b60405180910390f35b348015610305575f80fd5b5061030e610a79565b005b34801561031b575f80fd5b5061033660048036038101906103319190613728565b610c22565b604051610343919061370f565b60405180910390f35b348015610357575f80fd5b50610360610c3f565b60405161036d91906137ae565b60405180910390f35b348015610381575f80fd5b5061038a610c64565b60405161039791906137d6565b60405180910390f35b3480156103ab575f80fd5b506103c660048036038101906103c19190613728565b610c6d565b005b3480156103d3575f80fd5b506103dc610dc1565b6040516103e991906137d6565b60405180910390f35b3480156103fd575f80fd5b50610406610dc7565b60405161041391906137d6565b60405180910390f35b348015610427575f80fd5b50610442600480360381019061043d91906137ef565b610dcd565b005b34801561044f575f80fd5b50610458610eb1565b60405161046591906137d6565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190613853565b610eb7565b6040516104a1919061370f565b60405180910390f35b3480156104b5575f80fd5b506104be610f8b565b005b3480156104cb575f80fd5b506104d4611391565b6040516104e191906138be565b60405180910390f35b3480156104f5575f80fd5b50610510600480360381019061050b91906136b7565b611399565b60405161051d919061370f565b60405180910390f35b348015610531575f80fd5b5061053a611447565b60405161054791906137d6565b60405180910390f35b34801561055b575f80fd5b5061056461144d565b60405161057191906137d6565b60405180910390f35b348015610585575f80fd5b5061058e611453565b60405161059b91906138e6565b60405180910390f35b3480156105af575f80fd5b506105ca60048036038101906105c59190613728565b611478565b6040516105d7919061370f565b60405180910390f35b3480156105eb575f80fd5b506105f46114ca565b60405161060191906137d6565b60405180910390f35b348015610615575f80fd5b5061061e6114d0565b60405161062b91906137d6565b60405180910390f35b34801561063f575f80fd5b5061065a60048036038101906106559190613728565b6114d6565b60405161066791906137d6565b60405180910390f35b34801561067b575f80fd5b5061068461151b565b005b348015610691575f80fd5b506106ac60048036038101906106a79190613929565b61166e565b005b3480156106b9575f80fd5b506106d460048036038101906106cf9190613967565b61175c565b005b3480156106e1575f80fd5b506106ea61180f565b6040516106f791906138e6565b60405180910390f35b34801561070b575f80fd5b50610714611837565b604051610721919061370f565b60405180910390f35b348015610735575f80fd5b5061073e61184a565b60405161074b9190613606565b60405180910390f35b34801561075f575f80fd5b5061077a60048036038101906107759190613929565b6118da565b005b348015610787575f80fd5b50610790611a0d565b005b34801561079d575f80fd5b506107a6611b20565b6040516107b391906137d6565b60405180910390f35b3480156107c7575f80fd5b506107e260048036038101906107dd91906136b7565b611b26565b6040516107ef919061370f565b60405180910390f35b348015610803575f80fd5b5061081e600480360381019061081991906136b7565b611bee565b60405161082b919061370f565b60405180910390f35b34801561083f575f80fd5b5061085a60048036038101906108559190613728565b611c0b565b604051610867919061370f565b60405180910390f35b34801561087b575f80fd5b50610884611c28565b60405161089191906137d6565b60405180910390f35b3480156108a5575f80fd5b506108ae611c2e565b6040516108bb91906137d6565b60405180910390f35b3480156108cf575f80fd5b506108ea60048036038101906108e59190613929565b611c34565b005b3480156108f7575f80fd5b50610900611d70565b60405161090d91906137d6565b60405180910390f35b348015610921575f80fd5b5061093c60048036038101906109379190613992565b611d76565b60405161094991906137d6565b60405180910390f35b34801561095d575f80fd5b50610966611df8565b60405161097391906137d6565b60405180910390f35b348015610987575f80fd5b50610990611dfe565b005b34801561099d575f80fd5b506109b860048036038101906109b39190613728565b611eaf565b005b6060600380546109c9906139fd565b80601f01602080910402602001604051908101604052809291908181526020018280546109f5906139fd565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a56612003565b848461200a565b6001905092915050565b600f5f9054906101000a900460ff1681565b610a81612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690613a77565b60405180910390fd5b5f4790505f8111610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90613b05565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610b9b90613b50565b5f6040518083038185875af1925050503d805f8114610bd5576040519150601f19603f3d011682016040523d82523d5f602084013e610bda565b606091505b5050905080610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590613bae565b60405180910390fd5b5050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610c75612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa90613a77565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60135481565b610dd5612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a90613a77565b60405180910390fd5b8360118190555081601281905550601254601154610e819190613bf9565b6010819055508260148190555080601581905550601554601454610ea59190613bf9565b60138190555050505050565b60145481565b5f610ec38484846121cd565b610f8084610ecf612003565b610f7b856040518060600160405280602881526020016145f26028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f32612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b61200a565b600190509392505050565b610f93612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101890613a77565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905061104481600161166e565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f19190613c40565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117a9190613c40565b6040518363ffffffff1660e01b8152600401611197929190613c6b565b6020604051808303815f875af11580156111b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d79190613c40565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061124260095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161166e565b61126e60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612b54565b5f4790505f60646055611280306114d6565b61128a9190613c92565b6112949190613d00565b90506112c23060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161134896959493929190613d69565b60606040518083038185885af1158015611364573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113899190613ddc565b505050505050565b5f6012905090565b5f61143d6113a5612003565b846114388560015f6113b5612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bf290919063ffffffff16565b61200a565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611523612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890613a77565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611676612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90613a77565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611764612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e990613a77565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b606060048054611859906139fd565b80601f0160208091040260200160405190810160405280929190818152602001828054611885906139fd565b80156118d05780601f106118a7576101008083540402835291602001916118d0565b820191905f5260205f20905b8154815290600101906020018083116118b357829003601f168201915b5050505050905090565b6118e2612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196790613a77565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f690613e9c565b60405180910390fd5b611a098282612b54565b5050565b611a15612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a90613a77565b60405180910390fd5b5f611aad306114d6565b90505f8111611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae890613f2a565b60405180910390fd5b611b1d30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836121cd565b50565b60175481565b5f611be4611b32612003565b84611bdf8560405180606001604052806025815260200161461a6025913960015f611b5b612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b61200a565b6001905092915050565b5f611c01611bfa612003565b84846121cd565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b60155481565b611c3c612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc190613a77565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d64919061370f565b60405180910390a25050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b611e06612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b90613a77565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b611eb7612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613a77565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206f90613fb8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd90614046565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121c091906137d6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361223b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612232906140d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090614162565b60405180910390fd5b5f81036122c0576122bb83835f612c4f565b612aed565b600f5f9054906101000a900460ff16156126b5576122dc61180f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561234a575061231a61180f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561238257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123d55750600960149054906101000a900460ff16155b156126b457601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124775750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561251e57600c548111156124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b8906141f0565b60405180910390fd5b600e546124cd836114d6565b826124d89190613bf9565b1115612519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251090614258565b60405180910390fd5b6126b3565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125bb5750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561260a57600c54811115612605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fc906142e6565b60405180910390fd5b6126b2565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126b157600e54612664836114d6565b8261266f9190613bf9565b11156126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a790614258565b60405180910390fd5b5b5b5b5b5b5f6126bf306114d6565b90505f600d5482101590508080156126e45750600960149054906101000a900460ff16155b80156127375750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561278a575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156127dd575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612820576001600960146101000a81548160ff021916908315150217905550612805612ed8565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128cf575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128d8575f90505b5f8115612add57601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561293657505f601354115b156129ce576129636064612955601354886130fe90919063ffffffff16565b61317590919063ffffffff16565b9050601354601554826129769190613c92565b6129809190613d00565b60165f8282546129909190613bf9565b92505081905550601354601454826129a89190613c92565b6129b29190613d00565b60175f8282546129c29190613bf9565b92505081905550612aba565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a2557505f601054115b15612ab957612a526064612a44601054886130fe90919063ffffffff16565b61317590919063ffffffff16565b905060105460125482612a659190613c92565b612a6f9190613d00565b60165f828254612a7f9190613bf9565b9250508190555060105460115482612a979190613c92565b612aa19190613d00565b60175f828254612ab19190613bf9565b925050819055505b5b5f811115612ace57612acd873083612c4f565b5b8085612ada9190614304565b94505b612ae8878787612c4f565b505050505b505050565b5f838311158290612b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b309190613606565b60405180910390fd5b505f8385612b479190614304565b9050809150509392505050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f808284612c009190613bf9565b905083811015612c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3c90614381565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb4906140d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2290614162565b60405180910390fd5b612d368383836131be565b612d9f816040518060600160405280602681526020016145cc602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612e2e815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bf290919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ecb91906137d6565b60405180910390a3505050565b5f612ee2306114d6565b90505f601754601654612ef59190613bf9565b90505f80831480612f0557505f82145b15612f12575050506130fc565b5f1515600f60019054906101000a900460ff16151503612f59576014600d54612f3b9190613c92565b831115612f54576014600d54612f519190613c92565b92505b612f65565b612f62306114d6565b92505b5f60028360165486612f779190613c92565b612f819190613d00565b612f8b9190613d00565b90505f612fa182866131c390919063ffffffff16565b90505f479050612fb08261320c565b5f612fc482476131c390919063ffffffff16565b90505f612fee87612fe0601754856130fe90919063ffffffff16565b61317590919063ffffffff16565b90505f8183612ffd9190614304565b90505f6016819055505f6017819055505f8611801561301b57505f81115b156130685761302a8682613442565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260165460405161305f9392919061439f565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130ad90613b50565b5f6040518083038185875af1925050503d805f81146130e7576040519150601f19603f3d011682016040523d82523d5f602084013e6130ec565b606091505b5050809750505050505050505050505b565b5f80830361310e575f905061316f565b5f828461311b9190613c92565b905082848261312a9190613d00565b1461316a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316190614444565b60405180910390fd5b809150505b92915050565b5f6131b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061351b565b905092915050565b505050565b5f61320483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612af2565b905092915050565b5f600267ffffffffffffffff81111561322857613227614462565b5b6040519080825280602002602001820160405280156132565781602001602082028036833780820191505090505b50905030815f8151811061326d5761326c61448f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613311573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133359190613c40565b816001815181106133495761334861448f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133af3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613411959493929190614573565b5f604051808303815f87803b158015613428575f80fd5b505af115801561343a573d5f803e3d5ffd5b505050505050565b61346e3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b81526004016134d396959493929190613d69565b60606040518083038185885af11580156134ef573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906135149190613ddc565b5050505050565b5f8083118290613561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135589190613606565b60405180910390fd5b505f838561356f9190613d00565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156135b3578082015181840152602081019050613598565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135d88261357c565b6135e28185613586565b93506135f2818560208601613596565b6135fb816135be565b840191505092915050565b5f6020820190508181035f83015261361e81846135ce565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136538261362a565b9050919050565b61366381613649565b811461366d575f80fd5b50565b5f8135905061367e8161365a565b92915050565b5f819050919050565b61369681613684565b81146136a0575f80fd5b50565b5f813590506136b18161368d565b92915050565b5f80604083850312156136cd576136cc613626565b5b5f6136da85828601613670565b92505060206136eb858286016136a3565b9150509250929050565b5f8115159050919050565b613709816136f5565b82525050565b5f6020820190506137225f830184613700565b92915050565b5f6020828403121561373d5761373c613626565b5b5f61374a84828501613670565b91505092915050565b5f819050919050565b5f61377661377161376c8461362a565b613753565b61362a565b9050919050565b5f6137878261375c565b9050919050565b5f6137988261377d565b9050919050565b6137a88161378e565b82525050565b5f6020820190506137c15f83018461379f565b92915050565b6137d081613684565b82525050565b5f6020820190506137e95f8301846137c7565b92915050565b5f805f806080858703121561380757613806613626565b5b5f613814878288016136a3565b9450506020613825878288016136a3565b9350506040613836878288016136a3565b9250506060613847878288016136a3565b91505092959194509250565b5f805f6060848603121561386a57613869613626565b5b5f61387786828701613670565b935050602061388886828701613670565b9250506040613899868287016136a3565b9150509250925092565b5f60ff82169050919050565b6138b8816138a3565b82525050565b5f6020820190506138d15f8301846138af565b92915050565b6138e081613649565b82525050565b5f6020820190506138f95f8301846138d7565b92915050565b613908816136f5565b8114613912575f80fd5b50565b5f81359050613923816138ff565b92915050565b5f806040838503121561393f5761393e613626565b5b5f61394c85828601613670565b925050602061395d85828601613915565b9150509250929050565b5f6020828403121561397c5761397b613626565b5b5f61398984828501613915565b91505092915050565b5f80604083850312156139a8576139a7613626565b5b5f6139b585828601613670565b92505060206139c685828601613670565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a1457607f821691505b602082108103613a2757613a266139d0565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a61602083613586565b9150613a6c82613a2d565b602082019050919050565b5f6020820190508181035f830152613a8e81613a55565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613aef602283613586565b9150613afa82613a95565b604082019050919050565b5f6020820190508181035f830152613b1c81613ae3565b9050919050565b5f81905092915050565b50565b5f613b3b5f83613b23565b9150613b4682613b2d565b5f82019050919050565b5f613b5a82613b30565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613b98601b83613586565b9150613ba382613b64565b602082019050919050565b5f6020820190508181035f830152613bc581613b8c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c0382613684565b9150613c0e83613684565b9250828201905080821115613c2657613c25613bcc565b5b92915050565b5f81519050613c3a8161365a565b92915050565b5f60208284031215613c5557613c54613626565b5b5f613c6284828501613c2c565b91505092915050565b5f604082019050613c7e5f8301856138d7565b613c8b60208301846138d7565b9392505050565b5f613c9c82613684565b9150613ca783613684565b9250828202613cb581613684565b91508282048414831517613ccc57613ccb613bcc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d0a82613684565b9150613d1583613684565b925082613d2557613d24613cd3565b5b828204905092915050565b5f819050919050565b5f613d53613d4e613d4984613d30565b613753565b613684565b9050919050565b613d6381613d39565b82525050565b5f60c082019050613d7c5f8301896138d7565b613d8960208301886137c7565b613d966040830187613d5a565b613da36060830186613d5a565b613db060808301856138d7565b613dbd60a08301846137c7565b979650505050505050565b5f81519050613dd68161368d565b92915050565b5f805f60608486031215613df357613df2613626565b5b5f613e0086828701613dc8565b9350506020613e1186828701613dc8565b9250506040613e2286828701613dc8565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e86603983613586565b9150613e9182613e2c565b604082019050919050565b5f6020820190508181035f830152613eb381613e7a565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613f14602483613586565b9150613f1f82613eba565b604082019050919050565b5f6020820190508181035f830152613f4181613f08565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613fa2602483613586565b9150613fad82613f48565b604082019050919050565b5f6020820190508181035f830152613fcf81613f96565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614030602283613586565b915061403b82613fd6565b604082019050919050565b5f6020820190508181035f83015261405d81614024565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6140be602583613586565b91506140c982614064565b604082019050919050565b5f6020820190508181035f8301526140eb816140b2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61414c602383613586565b9150614157826140f2565b604082019050919050565b5f6020820190508181035f83015261417981614140565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6141da603583613586565b91506141e582614180565b604082019050919050565b5f6020820190508181035f830152614207816141ce565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614242601383613586565b915061424d8261420e565b602082019050919050565b5f6020820190508181035f83015261426f81614236565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6142d0603683613586565b91506142db82614276565b604082019050919050565b5f6020820190508181035f8301526142fd816142c4565b9050919050565b5f61430e82613684565b915061431983613684565b925082820390508181111561433157614330613bcc565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61436b601b83613586565b915061437682614337565b602082019050919050565b5f6020820190508181035f8301526143988161435f565b9050919050565b5f6060820190506143b25f8301866137c7565b6143bf60208301856137c7565b6143cc60408301846137c7565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61442e602183613586565b9150614439826143d4565b604082019050919050565b5f6020820190508181035f83015261445b81614422565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6144ee81613649565b82525050565b5f6144ff83836144e5565b60208301905092915050565b5f602082019050919050565b5f614521826144bc565b61452b81856144c6565b9350614536836144d6565b805f5b8381101561456657815161454d88826144f4565b97506145588361450b565b925050600181019050614539565b5085935050505092915050565b5f60a0820190506145865f8301886137c7565b6145936020830187613d5a565b81810360408301526145a58186614517565b90506145b460608301856138d7565b6145c160808301846137c7565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200944b0bf78869d081ae3fc546ee626be21b66b9848dc27e88a92d521957a38d664736f6c63430008150033
Deployed Bytecode Sourcemap
17560:12492:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4823:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5737:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18047:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22028:311;;;;;;;;;;;;;:::i;:::-;;18620:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17748:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5144:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24009:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18329:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18228:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22973:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18262:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5914:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20973:1037;;;;;;;;;;;;;:::i;:::-;;5043:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6277:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18130:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18006:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17796:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24182:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17964:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18163:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5260:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10804:148;;;;;;;;;;;;;:::i;:::-;;22817:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22701:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10590:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18084:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4931:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23558:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22347:256;;;;;;;;;;;;;:::i;:::-;;18369:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6503:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5395:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18843:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17864:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18294:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23367:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17928:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5578:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18194:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22611:81;;;;;;;;;;;;;:::i;:::-;;10960:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4823:100;4877:13;4910:5;4903:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4823:100;:::o;5737:169::-;5820:4;5837:39;5846:12;:10;:12::i;:::-;5860:7;5869:6;5837:8;:39::i;:::-;5894:4;5887:11;;5737:169;;;;:::o;18047:30::-;;;;;;;;;;;;;:::o;22028:311::-;10727:12;:10;:12::i;:::-;10717:22;;:6;;;;;;;;;;;:22;;;10709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22084:18:::1;22105:21;22084:42;;22158:1;22145:10;:14;22137:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22210:12;22235:9;;;;;;;;;;;22227:23;;22258:10;22227:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22209:64;;;22292:7;22284:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;22073:266;;22028:311::o:0;18620:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;17748:41::-;;;;;;;;;;;;;:::o;5144:108::-;5205:7;5232:12;;5225:19;;5144:108;:::o;24009:165::-;10727:12;:10;:12::i;:::-;10717:22;;:6;;;;;;;;;;;:22;;;10709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24121:9:::1;;;;;;;;;;;24090:41;;24107:12;24090:41;;;;;;;;;;;;24154:12;24142:9;;:24;;;;;;;;;;;;;;;;;;24009:165:::0;:::o;18329:33::-;;;;:::o;18228:27::-;;;;:::o;22973:386::-;10727:12;:10;:12::i;:::-;10717:22;;:6;;;;;;;;;;;:22;;;10709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23146:7:::1;23134:9;:19;;;;23176:7;23164:9;:19;;;;23220:9;;23208;;:21;;;;:::i;:::-;23194:11;:35;;;;23253:8;23240:10;:21;;;;23285:8;23272:10;:21;;;;23332:10;;23319;;:23;;;;:::i;:::-;23304:12;:38;;;;22973:386:::0;;;;:::o;18262:25::-;;;;:::o;5914:355::-;6054:4;6071:36;6081:6;6089:9;6100:6;6071:9;:36::i;:::-;6118:121;6127:6;6135:12;:10;:12::i;:::-;6149:89;6187:6;6149:89;;;;;;;;;;;;;;;;;:11;:19;6161:6;6149:19;;;;;;;;;;;;;;;:33;6169:12;:10;:12::i;:::-;6149:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6118:8;:121::i;:::-;6257:4;6250:11;;5914:355;;;;;:::o;20973:1037::-;10727:12;:10;:12::i;:::-;10717:22;;:6;;;;;;;;;;;:22;;;10709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21026:35:::1;21083:42;21026:100;;21140:58;21174:16;21193:4;21140:25;:58::i;:::-;21227:16;21209:15;;:34;;;;;;;;;;;;;;;;;;21291:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21273:56;;;21338:4;21345:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21273:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21257:13;;:112;;;;;;;;;;;;;;;;;;21380:55;21414:13;;;;;;;;;;;21430:4;21380:25;:55::i;:::-;21446:58;21483:13;;;;;;;;;;;21499:4;21446:28;:58::i;:::-;21525:17;21545:21;21525:41;;21577:19;21631:3;21626:2;21599:24;21617:4;21599:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;21577:57;;21665:62;21682:4;21697:15;;;;;;;;;;;21715:11;21665:8;:62::i;:::-;21740:15;;;;;;;;;;;:31;;;21779:9;21812:4;21832:11;21862:1;21909::::0;21952:9:::1;;;;;;;;;;;21976:15;21740:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21009:1001;;;20973:1037::o:0;5043:93::-;5101:5;5126:2;5119:9;;5043:93;:::o;6277:218::-;6365:4;6382:83;6391:12;:10;:12::i;:::-;6405:7;6414:50;6453:10;6414:11;:25;6426:12;:10;:12::i;:::-;6414:25;;;;;;;;;;;;;;;:34;6440:7;6414:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6382:8;:83::i;:::-;6483:4;6476:11;;6277:218;;;;:::o;18130:26::-;;;;:::o;18006:31::-;;;;:::o;17796:28::-;;;;;;;;;;;;;:::o;24182:125::-;24247:4;24271:19;:28;24291:7;24271:28;;;;;;;;;;;;;;;;;;;;;;;;;24264:35;;24182:125;;;:::o;17964:35::-;;;;:::o;18163:24::-;;;;:::o;5260:127::-;5334:7;5361:9;:18;5371:7;5361:18;;;;;;;;;;;;;;;;5354:25;;5260:127;;;:::o;10804:148::-;10727:12;:10;:12::i;:::-;10717:22;;:6;;;;;;;;;;;:22;;;10709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10911:1:::1;10874:40;;10895:6;;;;;;;;;;;10874:40;;;;;;;;;;;;10942:1;10925:6;;:19;;;;;;;;;;;;;;;;;;10804:148::o:0;22817:144::-;10727:12;:10;:12::i;:::-;10717:22;;:6;;;;;;;;;;;:22;;;10709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22949:4:::1;22907:31;:39;22939:6;22907:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22817:144:::0;;:::o;22701:107::-;10727:12;:10;:12::i;:::-;10717:22;;:6;;;;;;;;;;;:22;;;10709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22793:7:::1;22773:17;;:27;;;;;;;;;;;;;;;;;;22701:107:::0;:::o;10590:79::-;10628:7;10655:6;;;;;;;;;;;10648:13;;10590:79;:::o;18084:37::-;;;;;;;;;;;;;:::o;4931:104::-;4987:13;5020:7;5013:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4931:104;:::o;23558:245::-;10727:12;:10;:12::i;:::-;10717:22;;:6;;;;;;;;;;;:22;;;10709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23665:13:::1;;;;;;;;;;;23657:21;;:4;:21;;::::0;23649:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23754:41;23783:4;23789:5;23754:28;:41::i;:::-;23558:245:::0;;:::o;22347:256::-;10727:12;:10;:12::i;:::-;10717:22;;:6;;;;;;;;;;;:22;;;10709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22412:20:::1;22435:24;22453:4;22435:9;:24::i;:::-;22412:47;;22493:1;22478:12;:16;22470:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22546:49;22564:4;22571:9;;;;;;;;;;;22582:12;22546:9;:49::i;:::-;22401:202;22347:256::o:0;18369:27::-;;;;:::o;6503:269::-;6596:4;6613:129;6622:12;:10;:12::i;:::-;6636:7;6645:96;6684:15;6645:96;;;;;;;;;;;;;;;;;:11;:25;6657:12;:10;:12::i;:::-;6645:25;;;;;;;;;;;;;;;:34;6671:7;6645:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6613:8;:129::i;:::-;6760:4;6753:11;;6503:269;;;;:::o;5395:175::-;5481:4;5498:42;5508:12;:10;:12::i;:::-;5522:9;5533:6;5498:9;:42::i;:::-;5558:4;5551:11;;5395:175;;;;:::o;18843:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17864:22::-;;;;:::o;18294:25::-;;;;:::o;23367:182::-;10727:12;:10;:12::i;:::-;10717:22;;:6;;;;;;;;;;;:22;;;10709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23483:8:::1;23452:19;:28;23472:7;23452:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23523:7;23507:34;;;23532:8;23507:34;;;;;;:::i;:::-;;;;;;;;23367:182:::0;;:::o;17928:29::-;;;;:::o;5578:151::-;5667:7;5694:11;:18;5706:5;5694:18;;;;;;;;;;;;;;;:27;5713:7;5694:27;;;;;;;;;;;;;;;;5687:34;;5578:151;;;;:::o;18194:24::-;;;;:::o;22611:81::-;10727:12;:10;:12::i;:::-;10717:22;;:6;;;;;;;;;;;:22;;;10709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22679:5:::1;22665:11;;:19;;;;;;;;;;;;;;;;;;22611:81::o:0;10960:169::-;10727:12;:10;:12::i;:::-;10717:22;;:6;;;;;;;;;;;:22;;;10709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11084:8:::1;11055:38;;11076:6;;;;;;;;;;;11055:38;;;;;;;;;;;;11113:8;11104:6;;:17;;;;;;;;;;;;;;;;;;10960:169:::0;:::o;176:98::-;229:7;256:10;249:17;;176:98;:::o;8179:381::-;8332:1;8315:19;;:5;:19;;;8307:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8413:1;8394:21;;:7;:21;;;8386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8498:6;8468:11;:18;8480:5;8468:18;;;;;;;;;;;;;;;:27;8487:7;8468:27;;;;;;;;;;;;;;;:36;;;;8536:7;8520:32;;8529:5;8520:32;;;8545:6;8520:32;;;;;;:::i;:::-;;;;;;;;8179:381;;;:::o;24316:3112::-;24464:1;24448:18;;:4;:18;;;24440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24541:1;24527:16;;:2;:16;;;24519:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24608:1;24598:6;:11;24595:92;;24626:28;24642:4;24648:2;24652:1;24626:15;:28::i;:::-;24669:7;;24595:92;24703:11;;;;;;;;;;;24700:1083;;;24760:7;:5;:7::i;:::-;24752:15;;:4;:15;;;;:49;;;;;24794:7;:5;:7::i;:::-;24788:13;;:2;:13;;;;24752:49;:86;;;;;24836:1;24822:16;;:2;:16;;;;24752:86;:128;;;;;24873:6;24859:21;;:2;:21;;;;24752:128;:160;;;;;24902:10;;;;;;;;;;;24901:11;24752:160;24730:1042;;;24996:25;:31;25022:4;24996:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25032:31;:35;25064:2;25032:35;;;;;;;;;;;;;;;;;;;;;;;;;25031:36;24996:71;24992:765;;;25114:14;;25104:6;:24;;25096:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;25247:16;;25230:13;25240:2;25230:9;:13::i;:::-;25221:6;:22;;;;:::i;:::-;:42;;25213:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;24992:765;;;25366:25;:29;25392:2;25366:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25400:31;:37;25432:4;25400:37;;;;;;;;;;;;;;;;;;;;;;;;;25399:38;25366:71;25362:395;;;25484:14;;25474:6;:24;;25466:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;25362:395;;;25604:31;:35;25636:2;25604:35;;;;;;;;;;;;;;;;;;;;;;;;;25600:157;;25697:16;;25680:13;25690:2;25680:9;:13::i;:::-;25671:6;:22;;;;:::i;:::-;:42;;25663:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25600:157;25362:395;24992:765;24730:1042;24700:1083;25796:28;25827:24;25845:4;25827:9;:24::i;:::-;25796:55;;25865:12;25904:20;;25880;:44;;25865:59;;25956:7;:35;;;;;25981:10;;;;;;;;;;;25980:11;25956:35;:84;;;;;26009:25;:31;26035:4;26009:31;;;;;;;;;;;;;;;;;;;;;;;;;26008:32;25956:84;:127;;;;;26058:19;:25;26078:4;26058:25;;;;;;;;;;;;;;;;;;;;;;;;;26057:26;25956:127;:168;;;;;26101:19;:23;26121:2;26101:23;;;;;;;;;;;;;;;;;;;;;;;;;26100:24;25956:168;25938:306;;;26164:4;26151:10;;:17;;;;;;;;;;;;;;;;;;26186:10;:8;:10::i;:::-;26227:5;26214:10;;:18;;;;;;;;;;;;;;;;;;25938:306;26257:12;26273:10;;;;;;;;;;;26272:11;26257:26;;26385:19;:25;26405:4;26385:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26414:19;:23;26434:2;26414:23;;;;;;;;;;;;;;;;;;;;;;;;;26385:52;26382:99;;;26464:5;26454:15;;26382:99;26494:12;26598:7;26595:779;;;26649:25;:29;26675:2;26649:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;26697:1;26682:12;;:16;26649:49;26645:576;;;26725:33;26754:3;26725:24;26736:12;;26725:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26718:40;;26819:12;;26806:10;;26799:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26777:18;;:54;;;;;;;:::i;:::-;;;;;;;;26886:12;;26873:10;;26866:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26850:12;;:48;;;;;;;:::i;:::-;;;;;;;;26645:576;;;26959:25;:31;26985:4;26959:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;27008:1;26994:11;;:15;26959:50;26956:265;;;27037:32;27065:3;27037:23;27048:11;;27037:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;27030:39;;27129:11;;27117:9;;27110:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;27088:18;;:52;;;;;;;:::i;:::-;;;;;;;;27194:11;;27182:9;;27175:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;27159:12;;:46;;;;;;;:::i;:::-;;;;;;;;26956:265;26645:576;27248:1;27241:4;:8;27238:93;;;27273:42;27289:4;27303;27310;27273:15;:42::i;:::-;27238:93;27358:4;27348:14;;;;;:::i;:::-;;;26595:779;27387:33;27403:4;27409:2;27413:6;27387:15;:33::i;:::-;24429:2999;;;;24316:3112;;;;:::o;9067:193::-;9153:7;9186:1;9181;:6;;9189:12;9173:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9213:9;9229:1;9225;:5;;;;:::i;:::-;9213:17;;9251:1;9244:8;;;9067:193;;;;;:::o;23812:189::-;23929:5;23895:25;:31;23921:4;23895:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23987:5;23953:40;;23981:4;23953:40;;;;;;;;;;;;23812:189;;:::o;8733:182::-;8791:7;8811:9;8827:1;8823;:5;;;;:::i;:::-;8811:17;;8852:1;8847;:6;;8839:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8906:1;8899:8;;;8733:182;;;;:::o;6780:575::-;6938:1;6920:20;;:6;:20;;;6912:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7022:1;7001:23;;:9;:23;;;6993:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7078:47;7099:6;7107:9;7118:6;7078:20;:47::i;:::-;7159:71;7181:6;7159:71;;;;;;;;;;;;;;;;;:9;:17;7169:6;7159:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7139:9;:17;7149:6;7139:17;;;;;;;;;;;;;;;:91;;;;7264:32;7289:6;7264:9;:20;7274:9;7264:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7241:9;:20;7251:9;7241:20;;;;;;;;;;;;;;;:55;;;;7329:9;7312:35;;7321:6;7312:35;;;7340:6;7312:35;;;;;;:::i;:::-;;;;;;;;6780:575;;;:::o;28572:1477::-;28611:23;28637:24;28655:4;28637:9;:24::i;:::-;28611:50;;28672:25;28721:12;;28700:18;;:33;;;;:::i;:::-;28672:61;;28744:12;28792:1;28773:15;:20;:46;;;;28818:1;28797:17;:22;28773:46;28770:60;;;28822:7;;;;;28770:60;28867:5;28846:26;;:17;;;;;;;;;;;:26;;;28843:254;;28932:2;28909:20;;:25;;;;:::i;:::-;28891:15;:43;28888:125;;;28995:2;28972:20;;:25;;;;:::i;:::-;28954:43;;28888:125;28843:254;;;29061:24;29079:4;29061:9;:24::i;:::-;29043:42;;28843:254;29169:23;29254:1;29234:17;29213:18;;29195:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;29169:86;;29266:26;29295:36;29315:15;29295;:19;;:36;;;;:::i;:::-;29266:65;;29345:25;29373:21;29345:49;;29408:36;29425:18;29408:16;:36::i;:::-;29459:18;29480:44;29506:17;29480:21;:25;;:44;;;;:::i;:::-;29459:65;;29538:17;29558:51;29591:17;29558:28;29573:12;;29558:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;29538:71;;29620:23;29659:9;29646:10;:22;;;;:::i;:::-;29620:48;;29706:1;29685:18;:22;;;;29733:1;29718:12;:16;;;;29769:1;29751:15;:19;:42;;;;;29792:1;29774:15;:19;29751:42;29748:210;;;29809:46;29822:15;29839;29809:12;:46::i;:::-;29875:71;29890:18;29910:15;29927:18;;29875:71;;;;;;;;:::i;:::-;;;;;;;;29748:210;29992:9;;;;;;;;;;;29984:23;;30015:21;29984:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29971:70;;;;;28600:1449;;;;;;;;;28572:1477;:::o;9268:254::-;9326:7;9357:1;9352;:6;9348:47;;9382:1;9375:8;;;;9348:47;9408:9;9424:1;9420;:5;;;;:::i;:::-;9408:17;;9453:1;9448;9444;:5;;;;:::i;:::-;:10;9436:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9513:1;9506:8;;;9268:254;;;;;:::o;9530:132::-;9588:7;9615:39;9619:1;9622;9615:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9608:46;;9530:132;;;;:::o;8568:125::-;;;;:::o;8923:136::-;8981:7;9008:43;9012:1;9015;9008:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9001:50;;8923:136;;;;:::o;27437:597::-;27566:21;27604:1;27590:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27566:40;;27635:4;27617;27622:1;27617:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27661:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27651:4;27656:1;27651:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27697:62;27714:4;27729:15;;;;;;;;;;;27747:11;27697:8;:62::i;:::-;27799:15;;;;;;;;;;;:66;;;27880:11;27906:1;27950:4;27977;27997:15;27799:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27492:542;27437:597;:::o;28043:520::-;28191:62;28208:4;28223:15;;;;;;;;;;;28241:11;28191:8;:62::i;:::-;28297:15;;;;;;;;;;;:31;;;28336:9;28369:4;28389:11;28415:1;28458;28509:4;28529:15;28297:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28043:520;;:::o;9670:279::-;9756:7;9788:1;9784;:5;9791:12;9776:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9815:9;9831:1;9827;:5;;;;:::i;:::-;9815:17;;9940:1;9933:8;;;9670:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:765::-;5197:6;5205;5213;5221;5270:3;5258:9;5249:7;5245:23;5241:33;5238:120;;;5277:79;;:::i;:::-;5238:120;5397:1;5422:53;5467:7;5458:6;5447:9;5443:22;5422:53;:::i;:::-;5412:63;;5368:117;5524:2;5550:53;5595:7;5586:6;5575:9;5571:22;5550:53;:::i;:::-;5540:63;;5495:118;5652:2;5678:53;5723:7;5714:6;5703:9;5699:22;5678:53;:::i;:::-;5668:63;;5623:118;5780:2;5806:53;5851:7;5842:6;5831:9;5827:22;5806:53;:::i;:::-;5796:63;;5751:118;5111:765;;;;;;;:::o;5882:619::-;5959:6;5967;5975;6024:2;6012:9;6003:7;5999:23;5995:32;5992:119;;;6030:79;;:::i;:::-;5992:119;6150:1;6175:53;6220:7;6211:6;6200:9;6196:22;6175:53;:::i;:::-;6165:63;;6121:117;6277:2;6303:53;6348:7;6339:6;6328:9;6324:22;6303:53;:::i;:::-;6293:63;;6248:118;6405:2;6431:53;6476:7;6467:6;6456:9;6452:22;6431:53;:::i;:::-;6421:63;;6376:118;5882:619;;;;;:::o;6507:86::-;6542:7;6582:4;6575:5;6571:16;6560:27;;6507:86;;;:::o;6599:112::-;6682:22;6698:5;6682:22;:::i;:::-;6677:3;6670:35;6599:112;;:::o;6717:214::-;6806:4;6844:2;6833:9;6829:18;6821:26;;6857:67;6921:1;6910:9;6906:17;6897:6;6857:67;:::i;:::-;6717:214;;;;:::o;6937:118::-;7024:24;7042:5;7024:24;:::i;:::-;7019:3;7012:37;6937:118;;:::o;7061:222::-;7154:4;7192:2;7181:9;7177:18;7169:26;;7205:71;7273:1;7262:9;7258:17;7249:6;7205:71;:::i;:::-;7061:222;;;;:::o;7289:116::-;7359:21;7374:5;7359:21;:::i;:::-;7352:5;7349:32;7339:60;;7395:1;7392;7385:12;7339:60;7289:116;:::o;7411:133::-;7454:5;7492:6;7479:20;7470:29;;7508:30;7532:5;7508:30;:::i;:::-;7411:133;;;;:::o;7550:468::-;7615:6;7623;7672:2;7660:9;7651:7;7647:23;7643:32;7640:119;;;7678:79;;:::i;:::-;7640:119;7798:1;7823:53;7868:7;7859:6;7848:9;7844:22;7823:53;:::i;:::-;7813:63;;7769:117;7925:2;7951:50;7993:7;7984:6;7973:9;7969:22;7951:50;:::i;:::-;7941:60;;7896:115;7550:468;;;;;:::o;8024:323::-;8080:6;8129:2;8117:9;8108:7;8104:23;8100:32;8097:119;;;8135:79;;:::i;:::-;8097:119;8255:1;8280:50;8322:7;8313:6;8302:9;8298:22;8280:50;:::i;:::-;8270:60;;8226:114;8024:323;;;;:::o;8353:474::-;8421:6;8429;8478:2;8466:9;8457:7;8453:23;8449:32;8446:119;;;8484:79;;:::i;:::-;8446:119;8604:1;8629:53;8674:7;8665:6;8654:9;8650:22;8629:53;:::i;:::-;8619:63;;8575:117;8731:2;8757:53;8802:7;8793:6;8782:9;8778:22;8757:53;:::i;:::-;8747:63;;8702:118;8353:474;;;;;:::o;8833:180::-;8881:77;8878:1;8871:88;8978:4;8975:1;8968:15;9002:4;8999:1;8992:15;9019:320;9063:6;9100:1;9094:4;9090:12;9080:22;;9147:1;9141:4;9137:12;9168:18;9158:81;;9224:4;9216:6;9212:17;9202:27;;9158:81;9286:2;9278:6;9275:14;9255:18;9252:38;9249:84;;9305:18;;:::i;:::-;9249:84;9070:269;9019:320;;;:::o;9345:182::-;9485:34;9481:1;9473:6;9469:14;9462:58;9345:182;:::o;9533:366::-;9675:3;9696:67;9760:2;9755:3;9696:67;:::i;:::-;9689:74;;9772:93;9861:3;9772:93;:::i;:::-;9890:2;9885:3;9881:12;9874:19;;9533:366;;;:::o;9905:419::-;10071:4;10109:2;10098:9;10094:18;10086:26;;10158:9;10152:4;10148:20;10144:1;10133:9;10129:17;10122:47;10186:131;10312:4;10186:131;:::i;:::-;10178:139;;9905:419;;;:::o;10330:221::-;10470:34;10466:1;10458:6;10454:14;10447:58;10539:4;10534:2;10526:6;10522:15;10515:29;10330:221;:::o;10557:366::-;10699:3;10720:67;10784:2;10779:3;10720:67;:::i;:::-;10713:74;;10796:93;10885:3;10796:93;:::i;:::-;10914:2;10909:3;10905:12;10898:19;;10557:366;;;:::o;10929:419::-;11095:4;11133:2;11122:9;11118:18;11110:26;;11182:9;11176:4;11172:20;11168:1;11157:9;11153:17;11146:47;11210:131;11336:4;11210:131;:::i;:::-;11202:139;;10929:419;;;:::o;11354:147::-;11455:11;11492:3;11477:18;;11354:147;;;;:::o;11507:114::-;;:::o;11627:398::-;11786:3;11807:83;11888:1;11883:3;11807:83;:::i;:::-;11800:90;;11899:93;11988:3;11899:93;:::i;:::-;12017:1;12012:3;12008:11;12001:18;;11627:398;;;:::o;12031:379::-;12215:3;12237:147;12380:3;12237:147;:::i;:::-;12230:154;;12401:3;12394:10;;12031:379;;;:::o;12416:177::-;12556:29;12552:1;12544:6;12540:14;12533:53;12416:177;:::o;12599:366::-;12741:3;12762:67;12826:2;12821:3;12762:67;:::i;:::-;12755:74;;12838:93;12927:3;12838:93;:::i;:::-;12956:2;12951:3;12947:12;12940:19;;12599:366;;;:::o;12971:419::-;13137:4;13175:2;13164:9;13160:18;13152:26;;13224:9;13218:4;13214:20;13210:1;13199:9;13195:17;13188:47;13252:131;13378:4;13252:131;:::i;:::-;13244:139;;12971:419;;;:::o;13396:180::-;13444:77;13441:1;13434:88;13541:4;13538:1;13531:15;13565:4;13562:1;13555:15;13582:191;13622:3;13641:20;13659:1;13641:20;:::i;:::-;13636:25;;13675:20;13693:1;13675:20;:::i;:::-;13670:25;;13718:1;13715;13711:9;13704:16;;13739:3;13736:1;13733:10;13730:36;;;13746:18;;:::i;:::-;13730:36;13582:191;;;;:::o;13779:143::-;13836:5;13867:6;13861:13;13852:22;;13883:33;13910:5;13883:33;:::i;:::-;13779:143;;;;:::o;13928:351::-;13998:6;14047:2;14035:9;14026:7;14022:23;14018:32;14015:119;;;14053:79;;:::i;:::-;14015:119;14173:1;14198:64;14254:7;14245:6;14234:9;14230:22;14198:64;:::i;:::-;14188:74;;14144:128;13928:351;;;;:::o;14285:332::-;14406:4;14444:2;14433:9;14429:18;14421:26;;14457:71;14525:1;14514:9;14510:17;14501:6;14457:71;:::i;:::-;14538:72;14606:2;14595:9;14591:18;14582:6;14538:72;:::i;:::-;14285:332;;;;;:::o;14623:410::-;14663:7;14686:20;14704:1;14686:20;:::i;:::-;14681:25;;14720:20;14738:1;14720:20;:::i;:::-;14715:25;;14775:1;14772;14768:9;14797:30;14815:11;14797:30;:::i;:::-;14786:41;;14976:1;14967:7;14963:15;14960:1;14957:22;14937:1;14930:9;14910:83;14887:139;;15006:18;;:::i;:::-;14887:139;14671:362;14623:410;;;;:::o;15039:180::-;15087:77;15084:1;15077:88;15184:4;15181:1;15174:15;15208:4;15205:1;15198:15;15225:185;15265:1;15282:20;15300:1;15282:20;:::i;:::-;15277:25;;15316:20;15334:1;15316:20;:::i;:::-;15311:25;;15355:1;15345:35;;15360:18;;:::i;:::-;15345:35;15402:1;15399;15395:9;15390:14;;15225:185;;;;:::o;15416:85::-;15461:7;15490:5;15479:16;;15416:85;;;:::o;15507:158::-;15565:9;15598:61;15616:42;15625:32;15651:5;15625:32;:::i;:::-;15616:42;:::i;:::-;15598:61;:::i;:::-;15585:74;;15507:158;;;:::o;15671:147::-;15766:45;15805:5;15766:45;:::i;:::-;15761:3;15754:58;15671:147;;:::o;15824:807::-;16073:4;16111:3;16100:9;16096:19;16088:27;;16125:71;16193:1;16182:9;16178:17;16169:6;16125:71;:::i;:::-;16206:72;16274:2;16263:9;16259:18;16250:6;16206:72;:::i;:::-;16288:80;16364:2;16353:9;16349:18;16340:6;16288:80;:::i;:::-;16378;16454:2;16443:9;16439:18;16430:6;16378:80;:::i;:::-;16468:73;16536:3;16525:9;16521:19;16512:6;16468:73;:::i;:::-;16551;16619:3;16608:9;16604:19;16595:6;16551:73;:::i;:::-;15824:807;;;;;;;;;:::o;16637:143::-;16694:5;16725:6;16719:13;16710:22;;16741:33;16768:5;16741:33;:::i;:::-;16637:143;;;;:::o;16786:663::-;16874:6;16882;16890;16939:2;16927:9;16918:7;16914:23;16910:32;16907:119;;;16945:79;;:::i;:::-;16907:119;17065:1;17090:64;17146:7;17137:6;17126:9;17122:22;17090:64;:::i;:::-;17080:74;;17036:128;17203:2;17229:64;17285:7;17276:6;17265:9;17261:22;17229:64;:::i;:::-;17219:74;;17174:129;17342:2;17368:64;17424:7;17415:6;17404:9;17400:22;17368:64;:::i;:::-;17358:74;;17313:129;16786:663;;;;;:::o;17455:244::-;17595:34;17591:1;17583:6;17579:14;17572:58;17664:27;17659:2;17651:6;17647:15;17640:52;17455:244;:::o;17705:366::-;17847:3;17868:67;17932:2;17927:3;17868:67;:::i;:::-;17861:74;;17944:93;18033:3;17944:93;:::i;:::-;18062:2;18057:3;18053:12;18046:19;;17705:366;;;:::o;18077:419::-;18243:4;18281:2;18270:9;18266:18;18258:26;;18330:9;18324:4;18320:20;18316:1;18305:9;18301:17;18294:47;18358:131;18484:4;18358:131;:::i;:::-;18350:139;;18077:419;;;:::o;18502:223::-;18642:34;18638:1;18630:6;18626:14;18619:58;18711:6;18706:2;18698:6;18694:15;18687:31;18502:223;:::o;18731:366::-;18873:3;18894:67;18958:2;18953:3;18894:67;:::i;:::-;18887:74;;18970:93;19059:3;18970:93;:::i;:::-;19088:2;19083:3;19079:12;19072:19;;18731:366;;;:::o;19103:419::-;19269:4;19307:2;19296:9;19292:18;19284:26;;19356:9;19350:4;19346:20;19342:1;19331:9;19327:17;19320:47;19384:131;19510:4;19384:131;:::i;:::-;19376:139;;19103:419;;;:::o;19528:223::-;19668:34;19664:1;19656:6;19652:14;19645:58;19737:6;19732:2;19724:6;19720:15;19713:31;19528:223;:::o;19757:366::-;19899:3;19920:67;19984:2;19979:3;19920:67;:::i;:::-;19913:74;;19996:93;20085:3;19996:93;:::i;:::-;20114:2;20109:3;20105:12;20098:19;;19757:366;;;:::o;20129:419::-;20295:4;20333:2;20322:9;20318:18;20310:26;;20382:9;20376:4;20372:20;20368:1;20357:9;20353:17;20346:47;20410:131;20536:4;20410:131;:::i;:::-;20402:139;;20129:419;;;:::o;20554:221::-;20694:34;20690:1;20682:6;20678:14;20671:58;20763:4;20758:2;20750:6;20746:15;20739:29;20554:221;:::o;20781:366::-;20923:3;20944:67;21008:2;21003:3;20944:67;:::i;:::-;20937:74;;21020:93;21109:3;21020:93;:::i;:::-;21138:2;21133:3;21129:12;21122:19;;20781:366;;;:::o;21153:419::-;21319:4;21357:2;21346:9;21342:18;21334:26;;21406:9;21400:4;21396:20;21392:1;21381:9;21377:17;21370:47;21434:131;21560:4;21434:131;:::i;:::-;21426:139;;21153:419;;;:::o;21578:224::-;21718:34;21714:1;21706:6;21702:14;21695:58;21787:7;21782:2;21774:6;21770:15;21763:32;21578:224;:::o;21808:366::-;21950:3;21971:67;22035:2;22030:3;21971:67;:::i;:::-;21964:74;;22047:93;22136:3;22047:93;:::i;:::-;22165:2;22160:3;22156:12;22149:19;;21808:366;;;:::o;22180:419::-;22346:4;22384:2;22373:9;22369:18;22361:26;;22433:9;22427:4;22423:20;22419:1;22408:9;22404:17;22397:47;22461:131;22587:4;22461:131;:::i;:::-;22453:139;;22180:419;;;:::o;22605:222::-;22745:34;22741:1;22733:6;22729:14;22722:58;22814:5;22809:2;22801:6;22797:15;22790:30;22605:222;:::o;22833:366::-;22975:3;22996:67;23060:2;23055:3;22996:67;:::i;:::-;22989:74;;23072:93;23161:3;23072:93;:::i;:::-;23190:2;23185:3;23181:12;23174:19;;22833:366;;;:::o;23205:419::-;23371:4;23409:2;23398:9;23394:18;23386:26;;23458:9;23452:4;23448:20;23444:1;23433:9;23429:17;23422:47;23486:131;23612:4;23486:131;:::i;:::-;23478:139;;23205:419;;;:::o;23630:240::-;23770:34;23766:1;23758:6;23754:14;23747:58;23839:23;23834:2;23826:6;23822:15;23815:48;23630:240;:::o;23876:366::-;24018:3;24039:67;24103:2;24098:3;24039:67;:::i;:::-;24032:74;;24115:93;24204:3;24115:93;:::i;:::-;24233:2;24228:3;24224:12;24217:19;;23876:366;;;:::o;24248:419::-;24414:4;24452:2;24441:9;24437:18;24429:26;;24501:9;24495:4;24491:20;24487:1;24476:9;24472:17;24465:47;24529:131;24655:4;24529:131;:::i;:::-;24521:139;;24248:419;;;:::o;24673:169::-;24813:21;24809:1;24801:6;24797:14;24790:45;24673:169;:::o;24848:366::-;24990:3;25011:67;25075:2;25070:3;25011:67;:::i;:::-;25004:74;;25087:93;25176:3;25087:93;:::i;:::-;25205:2;25200:3;25196:12;25189:19;;24848:366;;;:::o;25220:419::-;25386:4;25424:2;25413:9;25409:18;25401:26;;25473:9;25467:4;25463:20;25459:1;25448:9;25444:17;25437:47;25501:131;25627:4;25501:131;:::i;:::-;25493:139;;25220:419;;;:::o;25645:241::-;25785:34;25781:1;25773:6;25769:14;25762:58;25854:24;25849:2;25841:6;25837:15;25830:49;25645:241;:::o;25892:366::-;26034:3;26055:67;26119:2;26114:3;26055:67;:::i;:::-;26048:74;;26131:93;26220:3;26131:93;:::i;:::-;26249:2;26244:3;26240:12;26233:19;;25892:366;;;:::o;26264:419::-;26430:4;26468:2;26457:9;26453:18;26445:26;;26517:9;26511:4;26507:20;26503:1;26492:9;26488:17;26481:47;26545:131;26671:4;26545:131;:::i;:::-;26537:139;;26264:419;;;:::o;26689:194::-;26729:4;26749:20;26767:1;26749:20;:::i;:::-;26744:25;;26783:20;26801:1;26783:20;:::i;:::-;26778:25;;26827:1;26824;26820:9;26812:17;;26851:1;26845:4;26842:11;26839:37;;;26856:18;;:::i;:::-;26839:37;26689:194;;;;:::o;26889:177::-;27029:29;27025:1;27017:6;27013:14;27006:53;26889:177;:::o;27072:366::-;27214:3;27235:67;27299:2;27294:3;27235:67;:::i;:::-;27228:74;;27311:93;27400:3;27311:93;:::i;:::-;27429:2;27424:3;27420:12;27413:19;;27072:366;;;:::o;27444:419::-;27610:4;27648:2;27637:9;27633:18;27625:26;;27697:9;27691:4;27687:20;27683:1;27672:9;27668:17;27661:47;27725:131;27851:4;27725:131;:::i;:::-;27717:139;;27444:419;;;:::o;27869:442::-;28018:4;28056:2;28045:9;28041:18;28033:26;;28069:71;28137:1;28126:9;28122:17;28113:6;28069:71;:::i;:::-;28150:72;28218:2;28207:9;28203:18;28194:6;28150:72;:::i;:::-;28232;28300:2;28289:9;28285:18;28276:6;28232:72;:::i;:::-;27869:442;;;;;;:::o;28317:220::-;28457:34;28453:1;28445:6;28441:14;28434:58;28526:3;28521:2;28513:6;28509:15;28502:28;28317:220;:::o;28543:366::-;28685:3;28706:67;28770:2;28765:3;28706:67;:::i;:::-;28699:74;;28782:93;28871:3;28782:93;:::i;:::-;28900:2;28895:3;28891:12;28884:19;;28543:366;;;:::o;28915:419::-;29081:4;29119:2;29108:9;29104:18;29096:26;;29168:9;29162:4;29158:20;29154:1;29143:9;29139:17;29132:47;29196:131;29322:4;29196:131;:::i;:::-;29188:139;;28915:419;;;:::o;29340:180::-;29388:77;29385:1;29378:88;29485:4;29482:1;29475:15;29509:4;29506:1;29499:15;29526:180;29574:77;29571:1;29564:88;29671:4;29668:1;29661:15;29695:4;29692:1;29685:15;29712:114;29779:6;29813:5;29807:12;29797:22;;29712:114;;;:::o;29832:184::-;29931:11;29965:6;29960:3;29953:19;30005:4;30000:3;29996:14;29981:29;;29832:184;;;;:::o;30022:132::-;30089:4;30112:3;30104:11;;30142:4;30137:3;30133:14;30125:22;;30022:132;;;:::o;30160:108::-;30237:24;30255:5;30237:24;:::i;:::-;30232:3;30225:37;30160:108;;:::o;30274:179::-;30343:10;30364:46;30406:3;30398:6;30364:46;:::i;:::-;30442:4;30437:3;30433:14;30419:28;;30274:179;;;;:::o;30459:113::-;30529:4;30561;30556:3;30552:14;30544:22;;30459:113;;;:::o;30608:732::-;30727:3;30756:54;30804:5;30756:54;:::i;:::-;30826:86;30905:6;30900:3;30826:86;:::i;:::-;30819:93;;30936:56;30986:5;30936:56;:::i;:::-;31015:7;31046:1;31031:284;31056:6;31053:1;31050:13;31031:284;;;31132:6;31126:13;31159:63;31218:3;31203:13;31159:63;:::i;:::-;31152:70;;31245:60;31298:6;31245:60;:::i;:::-;31235:70;;31091:224;31078:1;31075;31071:9;31066:14;;31031:284;;;31035:14;31331:3;31324:10;;30732:608;;;30608:732;;;;:::o;31346:831::-;31609:4;31647:3;31636:9;31632:19;31624:27;;31661:71;31729:1;31718:9;31714:17;31705:6;31661:71;:::i;:::-;31742:80;31818:2;31807:9;31803:18;31794:6;31742:80;:::i;:::-;31869:9;31863:4;31859:20;31854:2;31843:9;31839:18;31832:48;31897:108;32000:4;31991:6;31897:108;:::i;:::-;31889:116;;32015:72;32083:2;32072:9;32068:18;32059:6;32015:72;:::i;:::-;32097:73;32165:3;32154:9;32150:19;32141:6;32097:73;:::i;:::-;31346:831;;;;;;;;:::o
Swarm Source
ipfs://0944b0bf78869d081ae3fc546ee626be21b66b9848dc27e88a92d521957a38d6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.