More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 169 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21233003 | 48 days ago | IN | 0 ETH | 0.00046627 | ||||
Approve | 21232947 | 48 days ago | IN | 0 ETH | 0.00038361 | ||||
Approve | 20644883 | 130 days ago | IN | 0 ETH | 0.00009068 | ||||
Approve | 20346751 | 171 days ago | IN | 0 ETH | 0.00024657 | ||||
Approve | 19134894 | 341 days ago | IN | 0 ETH | 0.00299622 | ||||
Approve | 18819762 | 385 days ago | IN | 0 ETH | 0.00270049 | ||||
Approve | 18397257 | 444 days ago | IN | 0 ETH | 0.00027259 | ||||
Approve | 17835113 | 523 days ago | IN | 0 ETH | 0.00206494 | ||||
Approve | 17835045 | 523 days ago | IN | 0 ETH | 0.00261903 | ||||
Approve | 17835036 | 523 days ago | IN | 0 ETH | 0.00208493 | ||||
Approve | 17834996 | 523 days ago | IN | 0 ETH | 0.00227274 | ||||
Approve | 17834996 | 523 days ago | IN | 0 ETH | 0.00227274 | ||||
Approve | 17834996 | 523 days ago | IN | 0 ETH | 0.0025088 | ||||
Approve | 17796606 | 529 days ago | IN | 0 ETH | 0.00089826 | ||||
Approve | 17796606 | 529 days ago | IN | 0 ETH | 0.00089826 | ||||
Approve | 17796606 | 529 days ago | IN | 0 ETH | 0.00113431 | ||||
Approve | 17794521 | 529 days ago | IN | 0 ETH | 0.00132423 | ||||
Approve | 17793300 | 529 days ago | IN | 0 ETH | 0.00101282 | ||||
Approve | 17792862 | 529 days ago | IN | 0 ETH | 0.00543931 | ||||
Approve | 17792843 | 529 days ago | IN | 0 ETH | 0.00626228 | ||||
Approve | 17792792 | 529 days ago | IN | 0 ETH | 0.00602073 | ||||
Approve | 17792792 | 529 days ago | IN | 0 ETH | 0.00602125 | ||||
Approve | 17792781 | 529 days ago | IN | 0 ETH | 0.00631894 | ||||
Approve | 17792778 | 529 days ago | IN | 0 ETH | 0.00674472 | ||||
Approve | 17792776 | 529 days ago | IN | 0 ETH | 0.00691562 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
17794220 | 529 days ago | 0.00257364 ETH | ||||
17794220 | 529 days ago | 0.00257364 ETH | ||||
17793043 | 529 days ago | 0.00360412 ETH | ||||
17793043 | 529 days ago | 0.00360412 ETH | ||||
17792802 | 529 days ago | 0.00489349 ETH | ||||
17792802 | 529 days ago | 0.00489349 ETH | ||||
17792792 | 529 days ago | 0.00689674 ETH | ||||
17792792 | 529 days ago | 0.00689674 ETH | ||||
17792789 | 529 days ago | 0.00689674 ETH | ||||
17792789 | 529 days ago | 0.00689674 ETH | ||||
17792779 | 529 days ago | 0.01030439 ETH | ||||
17792779 | 529 days ago | 0.01030439 ETH | ||||
17792777 | 529 days ago | 0.01030439 ETH | ||||
17792777 | 529 days ago | 0.01030439 ETH | ||||
17792773 | 529 days ago | 0.0171461 ETH | ||||
17792773 | 529 days ago | 0.0171461 ETH | ||||
17792758 | 529 days ago | 0.00560715 ETH | ||||
17792758 | 529 days ago | 0.00560715 ETH | ||||
17792756 | 529 days ago | 0.00560715 ETH | ||||
17792756 | 529 days ago | 0.00560715 ETH | ||||
17792755 | 529 days ago | 0.01142441 ETH | ||||
17792755 | 529 days ago | 0.01142441 ETH | ||||
17792754 | 529 days ago | 0.00884952 ETH | ||||
17792754 | 529 days ago | 0.00884952 ETH | ||||
17792754 | 529 days ago | 0.00884952 ETH |
Loading...
Loading
Contract Name:
Pond0xClassic
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-28 */ /* https://t.me/Pond0xClassic */ // 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 Pond0xClassic is ERC20, Ownable { string _name = unicode"Pond0x Classic"; string _symbol = unicode"PNDXc"; using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable 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) { 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 _devBuyTax = 25; uint256 _liqBuyTax = 0; uint256 _devSellTax = 55; uint256 _liqSellTax = 0; uint256 totalSupply = 100000000 * 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 beginTrading() external onlyOwner{ uint256 ethAmount = address(this).balance; uint256 tokenAmount = balanceOf(address(this)); _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 disableLimits() external onlyOwner { areLimitsOn = false; } function emptyContractAtOnce(bool enabled) external onlyOwner{ emptyContractFull = enabled; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateFee( 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 updateDevAddress(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":"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":"beginTrading","outputs":[],"stateMutability":"nonpayable","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":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"emptyContractAtOnce","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":[{"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":"updateDevAddress","outputs":[],"stateMutability":"nonpayable","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":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526040518060400160405280600e81526020017f506f6e64307820436c6173736963000000000000000000000000000000000000815250600690816200004a919062000e87565b506040518060400160405280600581526020017f504e4458630000000000000000000000000000000000000000000000000000008152506007908162000091919062000e87565b506001600e5f6101000a81548160ff0219169083151502179055505f600e60016101000a81548160ff021916908315150217905550348015620000d2575f80fd5b5060068054620000e29062000c87565b80601f0160208091040260200160405190810160405280929190818152602001828054620001109062000c87565b80156200015f5780601f1062000135576101008083540402835291602001916200015f565b820191905f5260205f20905b8154815290600101906020018083116200014157829003601f168201915b505050505060078054620001739062000c87565b80601f0160208091040260200160405190810160405280929190818152602001828054620001a19062000c87565b8015620001f05780601f10620001c657610100808354040283529160200191620001f0565b820191905f5260205f20905b815481529060010190602001808311620001d257829003601f168201915b5050505050816003908162000206919062000e87565b50806004908162000218919062000e87565b5050505f6200022c6200071060201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002f48160016200071760201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000372573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000398919062000fd0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003fe573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000424919062000fd0565b6040518363ffffffff1660e01b81526004016200044392919062001011565b6020604051808303815f875af115801562000460573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000486919062000fd0565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620004ce60a05160016200071760201b60201c565b620004e360a05160016200081060201b60201c565b5f601990505f80603790505f806a52b7d2dcc80cd2e400000090506103e860148262000510919062001069565b6200051c9190620010e0565b600b819055506103e860148262000534919062001069565b620005409190620010e0565b600d819055506103e860018262000558919062001069565b620005649190620010e0565b600c8190555084601081905550836011819055506011546010546200058a919062001117565b600f819055508260138190555081601481905550601454601354620005b0919062001117565b60128190555033600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006186200060a620008ae60201b60201c565b6001620008d660201b60201c565b6200062b306001620008d660201b60201c565b6200064061dead6001620008d660201b60201c565b62000674600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008d660201b60201c565b6200069662000688620008ae60201b60201c565b60016200071760201b60201c565b620006a93060016200071760201b60201c565b620006be61dead60016200071760201b60201c565b620006f2600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200071760201b60201c565b62000704308262000a1f60201b60201c565b5050505050506200130e565b5f33905090565b620007276200071060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007af90620011af565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008e66200071060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000977576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200096e90620011af565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a139190620011eb565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a879062001254565b60405180910390fd5b62000aa35f838362000bbc60201b60201c565b62000aba8160025462000bc160201b90919060201c565b60028190555062000b11815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000bc160201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bb0919062001285565b60405180910390a35050565b505050565b5f80828462000bd1919062001117565b90508381101562000c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c1090620012ee565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c9f57607f821691505b60208210810362000cb55762000cb462000c5a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000d197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cdc565b62000d25868362000cdc565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000d6f62000d6962000d638462000d3d565b62000d46565b62000d3d565b9050919050565b5f819050919050565b62000d8a8362000d4f565b62000da262000d998262000d76565b84845462000ce8565b825550505050565b5f90565b62000db862000daa565b62000dc581848462000d7f565b505050565b5b8181101562000dec5762000de05f8262000dae565b60018101905062000dcb565b5050565b601f82111562000e3b5762000e058162000cbb565b62000e108462000ccd565b8101602085101562000e20578190505b62000e3862000e2f8562000ccd565b83018262000dca565b50505b505050565b5f82821c905092915050565b5f62000e5d5f198460080262000e40565b1980831691505092915050565b5f62000e77838362000e4c565b9150826002028217905092915050565b62000e928262000c23565b67ffffffffffffffff81111562000eae5762000ead62000c2d565b5b62000eba825462000c87565b62000ec782828562000df0565b5f60209050601f83116001811462000efd575f841562000ee8578287015190505b62000ef4858262000e6a565b86555062000f63565b601f19841662000f0d8662000cbb565b5f5b8281101562000f365784890151825560018201915060208501945060208101905062000f0f565b8683101562000f56578489015162000f52601f89168262000e4c565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000f9a8262000f6f565b9050919050565b62000fac8162000f8e565b811462000fb7575f80fd5b50565b5f8151905062000fca8162000fa1565b92915050565b5f6020828403121562000fe85762000fe762000f6b565b5b5f62000ff78482850162000fba565b91505092915050565b6200100b8162000f8e565b82525050565b5f604082019050620010265f83018562001000565b62001035602083018462001000565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620010758262000d3d565b9150620010828362000d3d565b9250828202620010928162000d3d565b91508282048414831517620010ac57620010ab6200103c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620010ec8262000d3d565b9150620010f98362000d3d565b9250826200110c576200110b620010b3565b5b828204905092915050565b5f620011238262000d3d565b9150620011308362000d3d565b92508282019050808211156200114b576200114a6200103c565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6200119760208362001151565b9150620011a48262001161565b602082019050919050565b5f6020820190508181035f830152620011c88162001189565b9050919050565b5f8115159050919050565b620011e581620011cf565b82525050565b5f602082019050620012005f830184620011da565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200123c601f8362001151565b9150620012498262001206565b602082019050919050565b5f6020820190508181035f8301526200126d816200122e565b9050919050565b6200127f8162000d3d565b82525050565b5f6020820190506200129a5f83018462001274565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f620012d6601b8362001151565b9150620012e382620012a0565b602082019050919050565b5f6020820190508181035f8301526200130781620012c8565b9050919050565b60805160a0516143d8620013685f395f8181610e1601526113d301525f8181610c41015281816119350152818161195c01528181613039015281816131180152818161313f015281816131d501526131fc01526143d85ff3fe60806040526004361061025f575f3560e01c80637571336a11610143578063b69ef8a8116100b5578063c408c24511610079578063c408c245146108d8578063dd62ed3e146108ee578063df6f93be1461092a578063ea9fae8014610954578063f2fde38b1461097c578063f928364c146109a457610266565b8063b69ef8a81461080a578063be85750414610834578063c02466681461085e578063c08bbb9d14610886578063c3f70b52146108ae57610266565b80639a7a23d6116101075780639a7a23d6146106ee5780639ee2e924146107165780639fccce321461072c578063a457c2d714610756578063a9059cbb14610792578063b62496f5146107ce57610266565b80637571336a1461062057806385033762146106485780638da5cb5b14610670578063945674fe1461069a57806395d89b41146106c457610266565b806323b872dd116101dc57806349bd5a5e116101a057806349bd5a5e146105145780634fbee1931461053e5780635de0f2a01461057a5780636c7e15c9146105a457806370a08231146105ce578063715018a61461060a57610266565b806323b872dd1461041e578063313ce5671461045a578063395093511461048457806346469afb146104c057806348d79155146104ea57610266565b80631694505e116102235780631694505e1461034c57806318160ddd146103765780631a8145bb146103a05780631bff7898146103ca57806322eb6631146103f457610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d05780630f299cf1146102fa57806310d5de531461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613391565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190613442565b610a4a565b6040516102c7919061349a565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061349a565b60405180910390f35b348015610305575f80fd5b5061030e610a79565b005b34801561031b575f80fd5b50610336600480360381019061033191906134b3565b610c22565b604051610343919061349a565b60405180910390f35b348015610357575f80fd5b50610360610c3f565b60405161036d9190613539565b60405180910390f35b348015610381575f80fd5b5061038a610c63565b6040516103979190613561565b60405180910390f35b3480156103ab575f80fd5b506103b4610c6c565b6040516103c19190613561565b60405180910390f35b3480156103d5575f80fd5b506103de610c72565b6040516103eb9190613561565b60405180910390f35b3480156103ff575f80fd5b50610408610c78565b6040516104159190613561565b60405180910390f35b348015610429575f80fd5b50610444600480360381019061043f919061357a565b610c7e565b604051610451919061349a565b60405180910390f35b348015610465575f80fd5b5061046e610d52565b60405161047b91906135e5565b60405180910390f35b34801561048f575f80fd5b506104aa60048036038101906104a59190613442565b610d5a565b6040516104b7919061349a565b60405180910390f35b3480156104cb575f80fd5b506104d4610e08565b6040516104e19190613561565b60405180910390f35b3480156104f5575f80fd5b506104fe610e0e565b60405161050b9190613561565b60405180910390f35b34801561051f575f80fd5b50610528610e14565b604051610535919061360d565b60405180910390f35b348015610549575f80fd5b50610564600480360381019061055f91906134b3565b610e38565b604051610571919061349a565b60405180910390f35b348015610585575f80fd5b5061058e610e8a565b60405161059b9190613561565b60405180910390f35b3480156105af575f80fd5b506105b8610e90565b6040516105c59190613561565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef91906134b3565b610e96565b6040516106019190613561565b60405180910390f35b348015610615575f80fd5b5061061e610edb565b005b34801561062b575f80fd5b5061064660048036038101906106419190613650565b61102e565b005b348015610653575f80fd5b5061066e600480360381019061066991906134b3565b61111c565b005b34801561067b575f80fd5b50610684611270565b604051610691919061360d565b60405180910390f35b3480156106a5575f80fd5b506106ae611298565b6040516106bb919061349a565b60405180910390f35b3480156106cf575f80fd5b506106d86112ab565b6040516106e59190613391565b60405180910390f35b3480156106f9575f80fd5b50610714600480360381019061070f9190613650565b61133b565b005b348015610721575f80fd5b5061072a61146d565b005b348015610737575f80fd5b50610740611580565b60405161074d9190613561565b60405180910390f35b348015610761575f80fd5b5061077c60048036038101906107779190613442565b611586565b604051610789919061349a565b60405180910390f35b34801561079d575f80fd5b506107b860048036038101906107b39190613442565b61164e565b6040516107c5919061349a565b60405180910390f35b3480156107d9575f80fd5b506107f460048036038101906107ef91906134b3565b61166b565b604051610801919061349a565b60405180910390f35b348015610815575f80fd5b5061081e611688565b60405161082b9190613561565b60405180910390f35b34801561083f575f80fd5b5061084861168e565b6040516108559190613561565b60405180910390f35b348015610869575f80fd5b50610884600480360381019061087f9190613650565b611694565b005b348015610891575f80fd5b506108ac60048036038101906108a7919061368e565b6117d0565b005b3480156108b9575f80fd5b506108c2611883565b6040516108cf9190613561565b60405180910390f35b3480156108e3575f80fd5b506108ec611889565b005b3480156108f9575f80fd5b50610914600480360381019061090f91906136b9565b611a27565b6040516109219190613561565b60405180910390f35b348015610935575f80fd5b5061093e611aa9565b60405161094b9190613561565b60405180910390f35b34801561095f575f80fd5b5061097a600480360381019061097591906136f7565b611aaf565b005b348015610987575f80fd5b506109a2600480360381019061099d91906134b3565b611b93565b005b3480156109af575f80fd5b506109b8611ce7565b005b6060600380546109c990613788565b80601f01602080910402602001604051908101604052809291908181526020018280546109f590613788565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a56611d98565b8484611d9f565b6001905092915050565b600e5f9054906101000a900460ff1681565b610a81611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690613802565b60405180910390fd5b5f4790505f8111610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90613890565b60405180910390fd5b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610b9b906138db565b5f6040518083038185875af1925050503d805f8114610bd5576040519150601f19603f3d011682016040523d82523d5f602084013e610bda565b606091505b5050905080610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590613939565b60405180910390fd5b5050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b60155481565b60125481565b60135481565b5f610c8a848484611f62565b610d4784610c96611d98565b610d42856040518060600160405280602881526020016143566028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610cf9611d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128829092919063ffffffff16565b611d9f565b600190509392505050565b5f6012905090565b5f610dfe610d66611d98565b84610df98560015f610d76611d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128e490919063ffffffff16565b611d9f565b6001905092915050565b600f5481565b600d5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600c5481565b60105481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ee3611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890613802565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611036611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb90613802565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611124611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a990613802565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60019054906101000a900460ff1681565b6060600480546112ba90613788565b80601f01602080910402602001604051908101604052809291908181526020018280546112e690613788565b80156113315780601f1061130857610100808354040283529160200191611331565b820191905f5260205f20905b81548152906001019060200180831161131457829003601f168201915b5050505050905090565b611343611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c890613802565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361145f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611456906139c7565b60405180910390fd5b6114698282612941565b5050565b611475611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa90613802565b60405180910390fd5b5f61150d30610e96565b90505f8111611551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154890613a55565b60405180910390fd5b61157d30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611f62565b50565b60165481565b5f611644611592611d98565b8461163f8560405180606001604052806025815260200161437e6025913960015f6115bb611d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128829092919063ffffffff16565b611d9f565b6001905092915050565b5f61166161165a611d98565b8484611f62565b6001905092915050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60095481565b60145481565b61169c611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190613802565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117c4919061349a565b60405180910390a25050565b6117d8611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d90613802565b60405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b600b5481565b611891611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191690613802565b60405180910390fd5b5f4790505f61192d30610e96565b905061195a307f000000000000000000000000000000000000000000000000000000000000000083611d9f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016119df96959493929190613aac565b60606040518083038185885af11580156119fb573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a209190613b1f565b5050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b611ab7611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c90613802565b60405180910390fd5b8360108190555081601181905550601154601054611b639190613b9c565b600f819055508260138190555080601481905550601454601354611b879190613b9c565b60128190555050505050565b611b9b611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2090613802565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611cef611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7490613802565b60405180910390fd5b5f600e5f6101000a81548160ff021916908315150217905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0490613c3f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7290613ccd565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f559190613561565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc790613d5b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361203e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203590613de9565b60405180910390fd5b5f81036120555761205083835f6129df565b61287d565b600e5f9054906101000a900460ff161561244957612071611270565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120df57506120af611270565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561211757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612151575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612169575060085f9054906101000a900460ff16155b1561244857601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561220b575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122b257600b54811115612255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224c90613e77565b60405180910390fd5b600d5461226183610e96565b8261226c9190613b9c565b11156122ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a490613edf565b60405180910390fd5b612447565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561234f575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561239e57600b54811115612399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239090613f6d565b60405180910390fd5b612446565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661244557600d546123f883610e96565b826124039190613b9c565b1115612444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243b90613edf565b60405180910390fd5b5b5b5b5b5b5f61245330610e96565b90505f600c548210159050808015612477575060085f9054906101000a900460ff16155b80156124ca5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561251d575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612570575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125b157600160085f6101000a81548160ff021916908315150217905550612597612c68565b5f60085f6101000a81548160ff0219169083151502179055505b5f60085f9054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061265f575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612668575f90505b5f811561286d57601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126c657505f601254115b1561275e576126f360646126e560125488612e8e90919063ffffffff16565b612f0590919063ffffffff16565b9050601254601454826127069190613f8b565b6127109190613ff9565b60155f8282546127209190613b9c565b92505081905550601254601354826127389190613f8b565b6127429190613ff9565b60165f8282546127529190613b9c565b9250508190555061284a565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127b557505f600f54115b15612849576127e260646127d4600f5488612e8e90919063ffffffff16565b612f0590919063ffffffff16565b9050600f54601154826127f59190613f8b565b6127ff9190613ff9565b60155f82825461280f9190613b9c565b92505081905550600f54601054826128279190613f8b565b6128319190613ff9565b60165f8282546128419190613b9c565b925050819055505b5b5f81111561285e5761285d8730836129df565b5b808561286a9190614029565b94505b6128788787876129df565b505050505b505050565b5f8383111582906128c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c09190613391565b60405180910390fd5b505f83856128d79190614029565b9050809150509392505050565b5f8082846128f29190613b9c565b905083811015612937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292e906140a6565b60405180910390fd5b8091505092915050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4490613d5b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab290613de9565b60405180910390fd5b612ac6838383612f4e565b612b2f81604051806060016040528060268152602001614330602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128829092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612bbe815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128e490919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c5b9190613561565b60405180910390a3505050565b5f612c7230610e96565b90505f601654601554612c859190613b9c565b90505f80831480612c9557505f82145b15612ca257505050612e8c565b5f1515600e60019054906101000a900460ff16151503612ce9576014600c54612ccb9190613f8b565b831115612ce4576014600c54612ce19190613f8b565b92505b612cf5565b612cf230610e96565b92505b5f60028360155486612d079190613f8b565b612d119190613ff9565b612d1b9190613ff9565b90505f612d318286612f5390919063ffffffff16565b90505f479050612d4082612f9c565b5f612d548247612f5390919063ffffffff16565b90505f612d7e87612d7060165485612e8e90919063ffffffff16565b612f0590919063ffffffff16565b90505f8183612d8d9190614029565b90505f6015819055505f6016819055505f86118015612dab57505f81115b15612df857612dba86826131cf565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601554604051612def939291906140c4565b60405180910390a15b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e3d906138db565b5f6040518083038185875af1925050503d805f8114612e77576040519150601f19603f3d011682016040523d82523d5f602084013e612e7c565b606091505b5050809750505050505050505050505b565b5f808303612e9e575f9050612eff565b5f8284612eab9190613f8b565b9050828482612eba9190613ff9565b14612efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef190614169565b60405180910390fd5b809150505b92915050565b5f612f4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132a6565b905092915050565b505050565b5f612f9483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612882565b905092915050565b5f600267ffffffffffffffff811115612fb857612fb7614187565b5b604051908082528060200260200182016040528015612fe65781602001602082028036833780820191505090505b50905030815f81518110612ffd57612ffc6141b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c491906141f5565b816001815181106130d8576130d76141b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061313d307f000000000000000000000000000000000000000000000000000000000000000084611d9f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161319e9594939291906142d7565b5f604051808303815f87803b1580156131b5575f80fd5b505af11580156131c7573d5f803e3d5ffd5b505050505050565b6131fa307f000000000000000000000000000000000000000000000000000000000000000084611d9f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b815260040161325e96959493929190613aac565b60606040518083038185885af115801561327a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061329f9190613b1f565b5050505050565b5f80831182906132ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e39190613391565b60405180910390fd5b505f83856132fa9190613ff9565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561333e578082015181840152602081019050613323565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61336382613307565b61336d8185613311565b935061337d818560208601613321565b61338681613349565b840191505092915050565b5f6020820190508181035f8301526133a98184613359565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6133de826133b5565b9050919050565b6133ee816133d4565b81146133f8575f80fd5b50565b5f81359050613409816133e5565b92915050565b5f819050919050565b6134218161340f565b811461342b575f80fd5b50565b5f8135905061343c81613418565b92915050565b5f8060408385031215613458576134576133b1565b5b5f613465858286016133fb565b92505060206134768582860161342e565b9150509250929050565b5f8115159050919050565b61349481613480565b82525050565b5f6020820190506134ad5f83018461348b565b92915050565b5f602082840312156134c8576134c76133b1565b5b5f6134d5848285016133fb565b91505092915050565b5f819050919050565b5f6135016134fc6134f7846133b5565b6134de565b6133b5565b9050919050565b5f613512826134e7565b9050919050565b5f61352382613508565b9050919050565b61353381613519565b82525050565b5f60208201905061354c5f83018461352a565b92915050565b61355b8161340f565b82525050565b5f6020820190506135745f830184613552565b92915050565b5f805f60608486031215613591576135906133b1565b5b5f61359e868287016133fb565b93505060206135af868287016133fb565b92505060406135c08682870161342e565b9150509250925092565b5f60ff82169050919050565b6135df816135ca565b82525050565b5f6020820190506135f85f8301846135d6565b92915050565b613607816133d4565b82525050565b5f6020820190506136205f8301846135fe565b92915050565b61362f81613480565b8114613639575f80fd5b50565b5f8135905061364a81613626565b92915050565b5f8060408385031215613666576136656133b1565b5b5f613673858286016133fb565b92505060206136848582860161363c565b9150509250929050565b5f602082840312156136a3576136a26133b1565b5b5f6136b08482850161363c565b91505092915050565b5f80604083850312156136cf576136ce6133b1565b5b5f6136dc858286016133fb565b92505060206136ed858286016133fb565b9150509250929050565b5f805f806080858703121561370f5761370e6133b1565b5b5f61371c8782880161342e565b945050602061372d8782880161342e565b935050604061373e8782880161342e565b925050606061374f8782880161342e565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061379f57607f821691505b6020821081036137b2576137b161375b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137ec602083613311565b91506137f7826137b8565b602082019050919050565b5f6020820190508181035f830152613819816137e0565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f61387a602283613311565b915061388582613820565b604082019050919050565b5f6020820190508181035f8301526138a78161386e565b9050919050565b5f81905092915050565b50565b5f6138c65f836138ae565b91506138d1826138b8565b5f82019050919050565b5f6138e5826138bb565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613923601b83613311565b915061392e826138ef565b602082019050919050565b5f6020820190508181035f83015261395081613917565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6139b1603983613311565b91506139bc82613957565b604082019050919050565b5f6020820190508181035f8301526139de816139a5565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613a3f602483613311565b9150613a4a826139e5565b604082019050919050565b5f6020820190508181035f830152613a6c81613a33565b9050919050565b5f819050919050565b5f613a96613a91613a8c84613a73565b6134de565b61340f565b9050919050565b613aa681613a7c565b82525050565b5f60c082019050613abf5f8301896135fe565b613acc6020830188613552565b613ad96040830187613a9d565b613ae66060830186613a9d565b613af360808301856135fe565b613b0060a0830184613552565b979650505050505050565b5f81519050613b1981613418565b92915050565b5f805f60608486031215613b3657613b356133b1565b5b5f613b4386828701613b0b565b9350506020613b5486828701613b0b565b9250506040613b6586828701613b0b565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ba68261340f565b9150613bb18361340f565b9250828201905080821115613bc957613bc8613b6f565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613c29602483613311565b9150613c3482613bcf565b604082019050919050565b5f6020820190508181035f830152613c5681613c1d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613cb7602283613311565b9150613cc282613c5d565b604082019050919050565b5f6020820190508181035f830152613ce481613cab565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d45602583613311565b9150613d5082613ceb565b604082019050919050565b5f6020820190508181035f830152613d7281613d39565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613dd3602383613311565b9150613dde82613d79565b604082019050919050565b5f6020820190508181035f830152613e0081613dc7565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613e61603583613311565b9150613e6c82613e07565b604082019050919050565b5f6020820190508181035f830152613e8e81613e55565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613ec9601383613311565b9150613ed482613e95565b602082019050919050565b5f6020820190508181035f830152613ef681613ebd565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f613f57603683613311565b9150613f6282613efd565b604082019050919050565b5f6020820190508181035f830152613f8481613f4b565b9050919050565b5f613f958261340f565b9150613fa08361340f565b9250828202613fae8161340f565b91508282048414831517613fc557613fc4613b6f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140038261340f565b915061400e8361340f565b92508261401e5761401d613fcc565b5b828204905092915050565b5f6140338261340f565b915061403e8361340f565b925082820390508181111561405657614055613b6f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614090601b83613311565b915061409b8261405c565b602082019050919050565b5f6020820190508181035f8301526140bd81614084565b9050919050565b5f6060820190506140d75f830186613552565b6140e46020830185613552565b6140f16040830184613552565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614153602183613311565b915061415e826140f9565b604082019050919050565b5f6020820190508181035f83015261418081614147565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506141ef816133e5565b92915050565b5f6020828403121561420a576142096133b1565b5b5f614217848285016141e1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614252816133d4565b82525050565b5f6142638383614249565b60208301905092915050565b5f602082019050919050565b5f61428582614220565b61428f818561422a565b935061429a8361423a565b805f5b838110156142ca5781516142b18882614258565b97506142bc8361426f565b92505060018101905061429d565b5085935050505092915050565b5f60a0820190506142ea5f830188613552565b6142f76020830187613a9d565b8181036040830152614309818661427b565b905061431860608301856135fe565b6143256080830184613552565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207c8f2c736c032552d0ac8b4ebaa81babab45956b8866041880552686f1b7105864736f6c63430008150033
Deployed Bytecode
0x60806040526004361061025f575f3560e01c80637571336a11610143578063b69ef8a8116100b5578063c408c24511610079578063c408c245146108d8578063dd62ed3e146108ee578063df6f93be1461092a578063ea9fae8014610954578063f2fde38b1461097c578063f928364c146109a457610266565b8063b69ef8a81461080a578063be85750414610834578063c02466681461085e578063c08bbb9d14610886578063c3f70b52146108ae57610266565b80639a7a23d6116101075780639a7a23d6146106ee5780639ee2e924146107165780639fccce321461072c578063a457c2d714610756578063a9059cbb14610792578063b62496f5146107ce57610266565b80637571336a1461062057806385033762146106485780638da5cb5b14610670578063945674fe1461069a57806395d89b41146106c457610266565b806323b872dd116101dc57806349bd5a5e116101a057806349bd5a5e146105145780634fbee1931461053e5780635de0f2a01461057a5780636c7e15c9146105a457806370a08231146105ce578063715018a61461060a57610266565b806323b872dd1461041e578063313ce5671461045a578063395093511461048457806346469afb146104c057806348d79155146104ea57610266565b80631694505e116102235780631694505e1461034c57806318160ddd146103765780631a8145bb146103a05780631bff7898146103ca57806322eb6631146103f457610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d05780630f299cf1146102fa57806310d5de531461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613391565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190613442565b610a4a565b6040516102c7919061349a565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061349a565b60405180910390f35b348015610305575f80fd5b5061030e610a79565b005b34801561031b575f80fd5b50610336600480360381019061033191906134b3565b610c22565b604051610343919061349a565b60405180910390f35b348015610357575f80fd5b50610360610c3f565b60405161036d9190613539565b60405180910390f35b348015610381575f80fd5b5061038a610c63565b6040516103979190613561565b60405180910390f35b3480156103ab575f80fd5b506103b4610c6c565b6040516103c19190613561565b60405180910390f35b3480156103d5575f80fd5b506103de610c72565b6040516103eb9190613561565b60405180910390f35b3480156103ff575f80fd5b50610408610c78565b6040516104159190613561565b60405180910390f35b348015610429575f80fd5b50610444600480360381019061043f919061357a565b610c7e565b604051610451919061349a565b60405180910390f35b348015610465575f80fd5b5061046e610d52565b60405161047b91906135e5565b60405180910390f35b34801561048f575f80fd5b506104aa60048036038101906104a59190613442565b610d5a565b6040516104b7919061349a565b60405180910390f35b3480156104cb575f80fd5b506104d4610e08565b6040516104e19190613561565b60405180910390f35b3480156104f5575f80fd5b506104fe610e0e565b60405161050b9190613561565b60405180910390f35b34801561051f575f80fd5b50610528610e14565b604051610535919061360d565b60405180910390f35b348015610549575f80fd5b50610564600480360381019061055f91906134b3565b610e38565b604051610571919061349a565b60405180910390f35b348015610585575f80fd5b5061058e610e8a565b60405161059b9190613561565b60405180910390f35b3480156105af575f80fd5b506105b8610e90565b6040516105c59190613561565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef91906134b3565b610e96565b6040516106019190613561565b60405180910390f35b348015610615575f80fd5b5061061e610edb565b005b34801561062b575f80fd5b5061064660048036038101906106419190613650565b61102e565b005b348015610653575f80fd5b5061066e600480360381019061066991906134b3565b61111c565b005b34801561067b575f80fd5b50610684611270565b604051610691919061360d565b60405180910390f35b3480156106a5575f80fd5b506106ae611298565b6040516106bb919061349a565b60405180910390f35b3480156106cf575f80fd5b506106d86112ab565b6040516106e59190613391565b60405180910390f35b3480156106f9575f80fd5b50610714600480360381019061070f9190613650565b61133b565b005b348015610721575f80fd5b5061072a61146d565b005b348015610737575f80fd5b50610740611580565b60405161074d9190613561565b60405180910390f35b348015610761575f80fd5b5061077c60048036038101906107779190613442565b611586565b604051610789919061349a565b60405180910390f35b34801561079d575f80fd5b506107b860048036038101906107b39190613442565b61164e565b6040516107c5919061349a565b60405180910390f35b3480156107d9575f80fd5b506107f460048036038101906107ef91906134b3565b61166b565b604051610801919061349a565b60405180910390f35b348015610815575f80fd5b5061081e611688565b60405161082b9190613561565b60405180910390f35b34801561083f575f80fd5b5061084861168e565b6040516108559190613561565b60405180910390f35b348015610869575f80fd5b50610884600480360381019061087f9190613650565b611694565b005b348015610891575f80fd5b506108ac60048036038101906108a7919061368e565b6117d0565b005b3480156108b9575f80fd5b506108c2611883565b6040516108cf9190613561565b60405180910390f35b3480156108e3575f80fd5b506108ec611889565b005b3480156108f9575f80fd5b50610914600480360381019061090f91906136b9565b611a27565b6040516109219190613561565b60405180910390f35b348015610935575f80fd5b5061093e611aa9565b60405161094b9190613561565b60405180910390f35b34801561095f575f80fd5b5061097a600480360381019061097591906136f7565b611aaf565b005b348015610987575f80fd5b506109a2600480360381019061099d91906134b3565b611b93565b005b3480156109af575f80fd5b506109b8611ce7565b005b6060600380546109c990613788565b80601f01602080910402602001604051908101604052809291908181526020018280546109f590613788565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a56611d98565b8484611d9f565b6001905092915050565b600e5f9054906101000a900460ff1681565b610a81611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690613802565b60405180910390fd5b5f4790505f8111610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90613890565b60405180910390fd5b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610b9b906138db565b5f6040518083038185875af1925050503d805f8114610bd5576040519150601f19603f3d011682016040523d82523d5f602084013e610bda565b606091505b5050905080610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590613939565b60405180910390fd5b5050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b60155481565b60125481565b60135481565b5f610c8a848484611f62565b610d4784610c96611d98565b610d42856040518060600160405280602881526020016143566028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610cf9611d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128829092919063ffffffff16565b611d9f565b600190509392505050565b5f6012905090565b5f610dfe610d66611d98565b84610df98560015f610d76611d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128e490919063ffffffff16565b611d9f565b6001905092915050565b600f5481565b600d5481565b7f00000000000000000000000013ba54976779dfef226f4aa1932d7e35abf83be581565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600c5481565b60105481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ee3611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890613802565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611036611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb90613802565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611124611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a990613802565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60019054906101000a900460ff1681565b6060600480546112ba90613788565b80601f01602080910402602001604051908101604052809291908181526020018280546112e690613788565b80156113315780601f1061130857610100808354040283529160200191611331565b820191905f5260205f20905b81548152906001019060200180831161131457829003601f168201915b5050505050905090565b611343611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c890613802565b60405180910390fd5b7f00000000000000000000000013ba54976779dfef226f4aa1932d7e35abf83be573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361145f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611456906139c7565b60405180910390fd5b6114698282612941565b5050565b611475611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa90613802565b60405180910390fd5b5f61150d30610e96565b90505f8111611551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154890613a55565b60405180910390fd5b61157d30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611f62565b50565b60165481565b5f611644611592611d98565b8461163f8560405180606001604052806025815260200161437e6025913960015f6115bb611d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128829092919063ffffffff16565b611d9f565b6001905092915050565b5f61166161165a611d98565b8484611f62565b6001905092915050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60095481565b60145481565b61169c611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190613802565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117c4919061349a565b60405180910390a25050565b6117d8611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d90613802565b60405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b600b5481565b611891611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191690613802565b60405180910390fd5b5f4790505f61192d30610e96565b905061195a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83611d9f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016119df96959493929190613aac565b60606040518083038185885af11580156119fb573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a209190613b1f565b5050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b611ab7611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c90613802565b60405180910390fd5b8360108190555081601181905550601154601054611b639190613b9c565b600f819055508260138190555080601481905550601454601354611b879190613b9c565b60128190555050505050565b611b9b611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2090613802565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611cef611d98565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7490613802565b60405180910390fd5b5f600e5f6101000a81548160ff021916908315150217905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0490613c3f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7290613ccd565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f559190613561565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc790613d5b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361203e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203590613de9565b60405180910390fd5b5f81036120555761205083835f6129df565b61287d565b600e5f9054906101000a900460ff161561244957612071611270565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120df57506120af611270565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561211757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612151575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612169575060085f9054906101000a900460ff16155b1561244857601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561220b575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122b257600b54811115612255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224c90613e77565b60405180910390fd5b600d5461226183610e96565b8261226c9190613b9c565b11156122ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a490613edf565b60405180910390fd5b612447565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561234f575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561239e57600b54811115612399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239090613f6d565b60405180910390fd5b612446565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661244557600d546123f883610e96565b826124039190613b9c565b1115612444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243b90613edf565b60405180910390fd5b5b5b5b5b5b5f61245330610e96565b90505f600c548210159050808015612477575060085f9054906101000a900460ff16155b80156124ca5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561251d575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612570575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125b157600160085f6101000a81548160ff021916908315150217905550612597612c68565b5f60085f6101000a81548160ff0219169083151502179055505b5f60085f9054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061265f575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612668575f90505b5f811561286d57601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126c657505f601254115b1561275e576126f360646126e560125488612e8e90919063ffffffff16565b612f0590919063ffffffff16565b9050601254601454826127069190613f8b565b6127109190613ff9565b60155f8282546127209190613b9c565b92505081905550601254601354826127389190613f8b565b6127429190613ff9565b60165f8282546127529190613b9c565b9250508190555061284a565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127b557505f600f54115b15612849576127e260646127d4600f5488612e8e90919063ffffffff16565b612f0590919063ffffffff16565b9050600f54601154826127f59190613f8b565b6127ff9190613ff9565b60155f82825461280f9190613b9c565b92505081905550600f54601054826128279190613f8b565b6128319190613ff9565b60165f8282546128419190613b9c565b925050819055505b5b5f81111561285e5761285d8730836129df565b5b808561286a9190614029565b94505b6128788787876129df565b505050505b505050565b5f8383111582906128c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c09190613391565b60405180910390fd5b505f83856128d79190614029565b9050809150509392505050565b5f8082846128f29190613b9c565b905083811015612937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292e906140a6565b60405180910390fd5b8091505092915050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4490613d5b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab290613de9565b60405180910390fd5b612ac6838383612f4e565b612b2f81604051806060016040528060268152602001614330602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128829092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612bbe815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128e490919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c5b9190613561565b60405180910390a3505050565b5f612c7230610e96565b90505f601654601554612c859190613b9c565b90505f80831480612c9557505f82145b15612ca257505050612e8c565b5f1515600e60019054906101000a900460ff16151503612ce9576014600c54612ccb9190613f8b565b831115612ce4576014600c54612ce19190613f8b565b92505b612cf5565b612cf230610e96565b92505b5f60028360155486612d079190613f8b565b612d119190613ff9565b612d1b9190613ff9565b90505f612d318286612f5390919063ffffffff16565b90505f479050612d4082612f9c565b5f612d548247612f5390919063ffffffff16565b90505f612d7e87612d7060165485612e8e90919063ffffffff16565b612f0590919063ffffffff16565b90505f8183612d8d9190614029565b90505f6015819055505f6016819055505f86118015612dab57505f81115b15612df857612dba86826131cf565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601554604051612def939291906140c4565b60405180910390a15b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e3d906138db565b5f6040518083038185875af1925050503d805f8114612e77576040519150601f19603f3d011682016040523d82523d5f602084013e612e7c565b606091505b5050809750505050505050505050505b565b5f808303612e9e575f9050612eff565b5f8284612eab9190613f8b565b9050828482612eba9190613ff9565b14612efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef190614169565b60405180910390fd5b809150505b92915050565b5f612f4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132a6565b905092915050565b505050565b5f612f9483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612882565b905092915050565b5f600267ffffffffffffffff811115612fb857612fb7614187565b5b604051908082528060200260200182016040528015612fe65781602001602082028036833780820191505090505b50905030815f81518110612ffd57612ffc6141b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c491906141f5565b816001815181106130d8576130d76141b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061313d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d9f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161319e9594939291906142d7565b5f604051808303815f87803b1580156131b5575f80fd5b505af11580156131c7573d5f803e3d5ffd5b505050505050565b6131fa307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d9f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b815260040161325e96959493929190613aac565b60606040518083038185885af115801561327a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061329f9190613b1f565b5050505050565b5f80831182906132ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e39190613391565b60405180910390fd5b505f83856132fa9190613ff9565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561333e578082015181840152602081019050613323565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61336382613307565b61336d8185613311565b935061337d818560208601613321565b61338681613349565b840191505092915050565b5f6020820190508181035f8301526133a98184613359565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6133de826133b5565b9050919050565b6133ee816133d4565b81146133f8575f80fd5b50565b5f81359050613409816133e5565b92915050565b5f819050919050565b6134218161340f565b811461342b575f80fd5b50565b5f8135905061343c81613418565b92915050565b5f8060408385031215613458576134576133b1565b5b5f613465858286016133fb565b92505060206134768582860161342e565b9150509250929050565b5f8115159050919050565b61349481613480565b82525050565b5f6020820190506134ad5f83018461348b565b92915050565b5f602082840312156134c8576134c76133b1565b5b5f6134d5848285016133fb565b91505092915050565b5f819050919050565b5f6135016134fc6134f7846133b5565b6134de565b6133b5565b9050919050565b5f613512826134e7565b9050919050565b5f61352382613508565b9050919050565b61353381613519565b82525050565b5f60208201905061354c5f83018461352a565b92915050565b61355b8161340f565b82525050565b5f6020820190506135745f830184613552565b92915050565b5f805f60608486031215613591576135906133b1565b5b5f61359e868287016133fb565b93505060206135af868287016133fb565b92505060406135c08682870161342e565b9150509250925092565b5f60ff82169050919050565b6135df816135ca565b82525050565b5f6020820190506135f85f8301846135d6565b92915050565b613607816133d4565b82525050565b5f6020820190506136205f8301846135fe565b92915050565b61362f81613480565b8114613639575f80fd5b50565b5f8135905061364a81613626565b92915050565b5f8060408385031215613666576136656133b1565b5b5f613673858286016133fb565b92505060206136848582860161363c565b9150509250929050565b5f602082840312156136a3576136a26133b1565b5b5f6136b08482850161363c565b91505092915050565b5f80604083850312156136cf576136ce6133b1565b5b5f6136dc858286016133fb565b92505060206136ed858286016133fb565b9150509250929050565b5f805f806080858703121561370f5761370e6133b1565b5b5f61371c8782880161342e565b945050602061372d8782880161342e565b935050604061373e8782880161342e565b925050606061374f8782880161342e565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061379f57607f821691505b6020821081036137b2576137b161375b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137ec602083613311565b91506137f7826137b8565b602082019050919050565b5f6020820190508181035f830152613819816137e0565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f61387a602283613311565b915061388582613820565b604082019050919050565b5f6020820190508181035f8301526138a78161386e565b9050919050565b5f81905092915050565b50565b5f6138c65f836138ae565b91506138d1826138b8565b5f82019050919050565b5f6138e5826138bb565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613923601b83613311565b915061392e826138ef565b602082019050919050565b5f6020820190508181035f83015261395081613917565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6139b1603983613311565b91506139bc82613957565b604082019050919050565b5f6020820190508181035f8301526139de816139a5565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613a3f602483613311565b9150613a4a826139e5565b604082019050919050565b5f6020820190508181035f830152613a6c81613a33565b9050919050565b5f819050919050565b5f613a96613a91613a8c84613a73565b6134de565b61340f565b9050919050565b613aa681613a7c565b82525050565b5f60c082019050613abf5f8301896135fe565b613acc6020830188613552565b613ad96040830187613a9d565b613ae66060830186613a9d565b613af360808301856135fe565b613b0060a0830184613552565b979650505050505050565b5f81519050613b1981613418565b92915050565b5f805f60608486031215613b3657613b356133b1565b5b5f613b4386828701613b0b565b9350506020613b5486828701613b0b565b9250506040613b6586828701613b0b565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ba68261340f565b9150613bb18361340f565b9250828201905080821115613bc957613bc8613b6f565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613c29602483613311565b9150613c3482613bcf565b604082019050919050565b5f6020820190508181035f830152613c5681613c1d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613cb7602283613311565b9150613cc282613c5d565b604082019050919050565b5f6020820190508181035f830152613ce481613cab565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d45602583613311565b9150613d5082613ceb565b604082019050919050565b5f6020820190508181035f830152613d7281613d39565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613dd3602383613311565b9150613dde82613d79565b604082019050919050565b5f6020820190508181035f830152613e0081613dc7565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613e61603583613311565b9150613e6c82613e07565b604082019050919050565b5f6020820190508181035f830152613e8e81613e55565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613ec9601383613311565b9150613ed482613e95565b602082019050919050565b5f6020820190508181035f830152613ef681613ebd565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f613f57603683613311565b9150613f6282613efd565b604082019050919050565b5f6020820190508181035f830152613f8481613f4b565b9050919050565b5f613f958261340f565b9150613fa08361340f565b9250828202613fae8161340f565b91508282048414831517613fc557613fc4613b6f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140038261340f565b915061400e8361340f565b92508261401e5761401d613fcc565b5b828204905092915050565b5f6140338261340f565b915061403e8361340f565b925082820390508181111561405657614055613b6f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614090601b83613311565b915061409b8261405c565b602082019050919050565b5f6020820190508181035f8301526140bd81614084565b9050919050565b5f6060820190506140d75f830186613552565b6140e46020830185613552565b6140f16040830184613552565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614153602183613311565b915061415e826140f9565b604082019050919050565b5f6020820190508181035f83015261418081614147565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506141ef816133e5565b92915050565b5f6020828403121561420a576142096133b1565b5b5f614217848285016141e1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614252816133d4565b82525050565b5f6142638383614249565b60208301905092915050565b5f602082019050919050565b5f61428582614220565b61428f818561422a565b935061429a8361423a565b805f5b838110156142ca5781516142b18882614258565b97506142bc8361426f565b92505060018101905061429d565b5085935050505092915050565b5f60a0820190506142ea5f830188613552565b6142f76020830187613a9d565b8181036040830152614309818661427b565b905061431860608301856135fe565b6143256080830184613552565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207c8f2c736c032552d0ac8b4ebaa81babab45956b8866041880552686f1b7105864736f6c63430008150033
Deployed Bytecode Sourcemap
17528:12459:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4791:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5705:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18018:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21959:311;;;;;;;;;;;;;:::i;:::-;;18591:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17699:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5112:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18300:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18199:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18233:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5882:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5011:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6245:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18101:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17977:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17757:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24117:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17935:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18134:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10772:148;;;;;;;;;;;;;:::i;:::-;;22749:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23943:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10558:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18055:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4899:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23492:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22278:256;;;;;;;;;;;;;:::i;:::-;;18340:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6471:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5363:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18814:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17835:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18265:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23301:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22633:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17899:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21414:537;;;;;;;;;;;;;:::i;:::-;;5546:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18165:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22905:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10928:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22542:82;;;;;;;;;;;;;:::i;:::-;;4791:100;4845:13;4878:5;4871:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4791:100;:::o;5705:169::-;5788:4;5805:39;5814:12;:10;:12::i;:::-;5828:7;5837:6;5805:8;:39::i;:::-;5862:4;5855:11;;5705:169;;;;:::o;18018:30::-;;;;;;;;;;;;;:::o;21959:311::-;10695:12;:10;:12::i;:::-;10685:22;;:6;;;;;;;;;;;:22;;;10677:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22015:18:::1;22036:21;22015:42;;22089:1;22076:10;:14;22068:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22141:12;22166:9;;;;;;;;;;;22158:23;;22189:10;22158:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22140:64;;;22223:7;22215:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;22004:266;;21959:311::o:0;18591:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;17699:51::-;;;:::o;5112:108::-;5173:7;5200:12;;5193:19;;5112:108;:::o;18300:33::-;;;;:::o;18199:27::-;;;;:::o;18233:25::-;;;;:::o;5882:355::-;6022:4;6039:36;6049:6;6057:9;6068:6;6039:9;:36::i;:::-;6086:121;6095:6;6103:12;:10;:12::i;:::-;6117:89;6155:6;6117:89;;;;;;;;;;;;;;;;;:11;:19;6129:6;6117:19;;;;;;;;;;;;;;;:33;6137:12;:10;:12::i;:::-;6117:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6086:8;:121::i;:::-;6225:4;6218:11;;5882:355;;;;;:::o;5011:93::-;5069:5;5094:2;5087:9;;5011:93;:::o;6245:218::-;6333:4;6350:83;6359:12;:10;:12::i;:::-;6373:7;6382:50;6421:10;6382:11;:25;6394:12;:10;:12::i;:::-;6382:25;;;;;;;;;;;;;;;:34;6408:7;6382:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6350:8;:83::i;:::-;6451:4;6444:11;;6245:218;;;;:::o;18101:26::-;;;;:::o;17977:31::-;;;;:::o;17757:38::-;;;:::o;24117:125::-;24182:4;24206:19;:28;24226:7;24206:28;;;;;;;;;;;;;;;;;;;;;;;;;24199:35;;24117:125;;;:::o;17935:35::-;;;;:::o;18134:24::-;;;;:::o;5228:127::-;5302:7;5329:9;:18;5339:7;5329:18;;;;;;;;;;;;;;;;5322:25;;5228:127;;;:::o;10772:148::-;10695:12;:10;:12::i;:::-;10685:22;;:6;;;;;;;;;;;:22;;;10677:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10879:1:::1;10842:40;;10863:6;;;;;;;;;;;10842:40;;;;;;;;;;;;10910:1;10893:6;;:19;;;;;;;;;;;;;;;;;;10772:148::o:0;22749:144::-;10695:12;:10;:12::i;:::-;10685:22;;:6;;;;;;;;;;;:22;;;10677:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22881:4:::1;22839:31;:39;22871:6;22839:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22749:144:::0;;:::o;23943:166::-;10695:12;:10;:12::i;:::-;10685:22;;:6;;;;;;;;;;;:22;;;10677:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24056:9:::1;;;;;;;;;;;24025:41;;24042:12;24025:41;;;;;;;;;;;;24089:12;24077:9;;:24;;;;;;;;;;;;;;;;;;23943:166:::0;:::o;10558:79::-;10596:7;10623:6;;;;;;;;;;;10616:13;;10558:79;:::o;18055:37::-;;;;;;;;;;;;;:::o;4899:104::-;4955:13;4988:7;4981:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4899:104;:::o;23492:245::-;10695:12;:10;:12::i;:::-;10685:22;;:6;;;;;;;;;;;:22;;;10677:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23599:13:::1;23591:21;;:4;:21;;::::0;23583:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23688:41;23717:4;23723:5;23688:28;:41::i;:::-;23492:245:::0;;:::o;22278:256::-;10695:12;:10;:12::i;:::-;10685:22;;:6;;;;;;;;;;;:22;;;10677:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22343:20:::1;22366:24;22384:4;22366:9;:24::i;:::-;22343:47;;22424:1;22409:12;:16;22401:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22477:49;22495:4;22502:9;;;;;;;;;;;22513:12;22477:9;:49::i;:::-;22332:202;22278:256::o:0;18340:27::-;;;;:::o;6471:269::-;6564:4;6581:129;6590:12;:10;:12::i;:::-;6604:7;6613:96;6652:15;6613:96;;;;;;;;;;;;;;;;;:11;:25;6625:12;:10;:12::i;:::-;6613:25;;;;;;;;;;;;;;;:34;6639:7;6613:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6581:8;:129::i;:::-;6728:4;6721:11;;6471:269;;;;:::o;5363:175::-;5449:4;5466:42;5476:12;:10;:12::i;:::-;5490:9;5501:6;5466:9;:42::i;:::-;5526:4;5519:11;;5363:175;;;;:::o;18814:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17835:22::-;;;;:::o;18265:25::-;;;;:::o;23301:182::-;10695:12;:10;:12::i;:::-;10685:22;;:6;;;;;;;;;;;:22;;;10677:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23417:8:::1;23386:19;:28;23406:7;23386:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23457:7;23441:34;;;23466:8;23441:34;;;;;;:::i;:::-;;;;;;;;23301:182:::0;;:::o;22633:107::-;10695:12;:10;:12::i;:::-;10685:22;;:6;;;;;;;;;;;:22;;;10677:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22725:7:::1;22705:17;;:27;;;;;;;;;;;;;;;;;;22633:107:::0;:::o;17899:29::-;;;;:::o;21414:537::-;10695:12;:10;:12::i;:::-;10685:22;;:6;;;;;;;;;;;:22;;;10677:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21477:17:::1;21497:21;21477:41;;21529:19;21551:24;21569:4;21551:9;:24::i;:::-;21529:46;;21606:62;21623:4;21638:15;21656:11;21606:8;:62::i;:::-;21681:15;:31;;;21720:9;21753:4;21773:11;21803:1;21850::::0;21893:9:::1;;;;;;;;;;;21917:15;21681:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21456:495;;21414:537::o:0;5546:151::-;5635:7;5662:11;:18;5674:5;5662:18;;;;;;;;;;;;;;;:27;5681:7;5662:27;;;;;;;;;;;;;;;;5655:34;;5546:151;;;;:::o;18165:24::-;;;;:::o;22905:388::-;10695:12;:10;:12::i;:::-;10685:22;;:6;;;;;;;;;;;:22;;;10677:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23079:7:::1;23067:9;:19;;;;23109:7;23097:9;:19;;;;23153:9;;23141;;:21;;;;:::i;:::-;23127:11;:35;;;;23186:8;23173:10;:21;;;;23218:8;23205:10;:21;;;;23265:10;;23252;;:23;;;;:::i;:::-;23237:12;:38;;;;22905:388:::0;;;;:::o;10928:169::-;10695:12;:10;:12::i;:::-;10685:22;;:6;;;;;;;;;;;:22;;;10677:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11052:8:::1;11023:38;;11044:6;;;;;;;;;;;11023:38;;;;;;;;;;;;11081:8;11072:6;;:17;;;;;;;;;;;;;;;;;;10928:169:::0;:::o;22542:82::-;10695:12;:10;:12::i;:::-;10685:22;;:6;;;;;;;;;;;:22;;;10677:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22611:5:::1;22597:11;;:19;;;;;;;;;;;;;;;;;;22542:82::o:0;144:98::-;197:7;224:10;217:17;;144:98;:::o;8147:381::-;8300:1;8283:19;;:5;:19;;;8275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8381:1;8362:21;;:7;:21;;;8354:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8466:6;8436:11;:18;8448:5;8436:18;;;;;;;;;;;;;;;:27;8455:7;8436:27;;;;;;;;;;;;;;;:36;;;;8504:7;8488:32;;8497:5;8488:32;;;8513:6;8488:32;;;;;;:::i;:::-;;;;;;;;8147:381;;;:::o;24251:3112::-;24399:1;24383:18;;:4;:18;;;24375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24476:1;24462:16;;:2;:16;;;24454:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24543:1;24533:6;:11;24530:92;;24561:28;24577:4;24583:2;24587:1;24561:15;:28::i;:::-;24604:7;;24530:92;24638:11;;;;;;;;;;;24635:1083;;;24695:7;:5;:7::i;:::-;24687:15;;:4;:15;;;;:49;;;;;24729:7;:5;:7::i;:::-;24723:13;;:2;:13;;;;24687:49;:86;;;;;24771:1;24757:16;;:2;:16;;;;24687:86;:128;;;;;24808:6;24794:21;;:2;:21;;;;24687:128;:160;;;;;24837:10;;;;;;;;;;;24836:11;24687:160;24665:1042;;;24931:25;:31;24957:4;24931:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;24967:31;:35;24999:2;24967:35;;;;;;;;;;;;;;;;;;;;;;;;;24966:36;24931:71;24927:765;;;25049:14;;25039:6;:24;;25031:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;25182:16;;25165:13;25175:2;25165:9;:13::i;:::-;25156:6;:22;;;;:::i;:::-;:42;;25148:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;24927:765;;;25301:25;:29;25327:2;25301:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25335:31;:37;25367:4;25335:37;;;;;;;;;;;;;;;;;;;;;;;;;25334:38;25301:71;25297:395;;;25419:14;;25409:6;:24;;25401:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;25297:395;;;25539:31;:35;25571:2;25539:35;;;;;;;;;;;;;;;;;;;;;;;;;25535:157;;25632:16;;25615:13;25625:2;25615:9;:13::i;:::-;25606:6;:22;;;;:::i;:::-;:42;;25598:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25535:157;25297:395;24927:765;24665:1042;24635:1083;25731:28;25762:24;25780:4;25762:9;:24::i;:::-;25731:55;;25800:12;25839:20;;25815;:44;;25800:59;;25891:7;:35;;;;;25916:10;;;;;;;;;;;25915:11;25891:35;:84;;;;;25944:25;:31;25970:4;25944:31;;;;;;;;;;;;;;;;;;;;;;;;;25943:32;25891:84;:127;;;;;25993:19;:25;26013:4;25993:25;;;;;;;;;;;;;;;;;;;;;;;;;25992:26;25891:127;:168;;;;;26036:19;:23;26056:2;26036:23;;;;;;;;;;;;;;;;;;;;;;;;;26035:24;25891:168;25873:306;;;26099:4;26086:10;;:17;;;;;;;;;;;;;;;;;;26121:10;:8;:10::i;:::-;26162:5;26149:10;;:18;;;;;;;;;;;;;;;;;;25873:306;26192:12;26208:10;;;;;;;;;;;26207:11;26192:26;;26320:19;:25;26340:4;26320:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26349:19;:23;26369:2;26349:23;;;;;;;;;;;;;;;;;;;;;;;;;26320:52;26317:99;;;26399:5;26389:15;;26317:99;26429:12;26533:7;26530:779;;;26584:25;:29;26610:2;26584:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;26632:1;26617:12;;:16;26584:49;26580:576;;;26660:33;26689:3;26660:24;26671:12;;26660:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26653:40;;26754:12;;26741:10;;26734:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26712:18;;:54;;;;;;;:::i;:::-;;;;;;;;26821:12;;26808:10;;26801:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26785:12;;:48;;;;;;;:::i;:::-;;;;;;;;26580:576;;;26894:25;:31;26920:4;26894:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;26943:1;26929:11;;:15;26894:50;26891:265;;;26972:32;27000:3;26972:23;26983:11;;26972:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;26965:39;;27064:11;;27052:9;;27045:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;27023:18;;:52;;;;;;;:::i;:::-;;;;;;;;27129:11;;27117:9;;27110:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;27094:12;;:46;;;;;;;:::i;:::-;;;;;;;;26891:265;26580:576;27183:1;27176:4;:8;27173:93;;;27208:42;27224:4;27238;27245;27208:15;:42::i;:::-;27173:93;27293:4;27283:14;;;;;:::i;:::-;;;26530:779;27322:33;27338:4;27344:2;27348:6;27322:15;:33::i;:::-;24364:2999;;;;24251:3112;;;;:::o;9035:193::-;9121:7;9154:1;9149;:6;;9157:12;9141:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9181:9;9197:1;9193;:5;;;;:::i;:::-;9181:17;;9219:1;9212:8;;;9035:193;;;;;:::o;8701:182::-;8759:7;8779:9;8795:1;8791;:5;;;;:::i;:::-;8779:17;;8820:1;8815;:6;;8807:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8874:1;8867:8;;;8701:182;;;;:::o;23746:189::-;23863:5;23829:25;:31;23855:4;23829:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23921:5;23887:40;;23915:4;23887:40;;;;;;;;;;;;23746:189;;:::o;6748:575::-;6906:1;6888:20;;:6;:20;;;6880:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6990:1;6969:23;;:9;:23;;;6961:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7046:47;7067:6;7075:9;7086:6;7046:20;:47::i;:::-;7127:71;7149:6;7127:71;;;;;;;;;;;;;;;;;:9;:17;7137:6;7127:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7107:9;:17;7117:6;7107:17;;;;;;;;;;;;;;;:91;;;;7232:32;7257:6;7232:9;:20;7242:9;7232:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7209:9;:20;7219:9;7209:20;;;;;;;;;;;;;;;:55;;;;7297:9;7280:35;;7289:6;7280:35;;;7308:6;7280:35;;;;;;:::i;:::-;;;;;;;;6748:575;;;:::o;28507:1477::-;28546:23;28572:24;28590:4;28572:9;:24::i;:::-;28546:50;;28607:25;28656:12;;28635:18;;:33;;;;:::i;:::-;28607:61;;28679:12;28727:1;28708:15;:20;:46;;;;28753:1;28732:17;:22;28708:46;28705:60;;;28757:7;;;;;28705:60;28802:5;28781:26;;:17;;;;;;;;;;;:26;;;28778:254;;28867:2;28844:20;;:25;;;;:::i;:::-;28826:15;:43;28823:125;;;28930:2;28907:20;;:25;;;;:::i;:::-;28889:43;;28823:125;28778:254;;;28996:24;29014:4;28996:9;:24::i;:::-;28978:42;;28778:254;29104:23;29189:1;29169:17;29148:18;;29130:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;29104:86;;29201:26;29230:36;29250:15;29230;:19;;:36;;;;:::i;:::-;29201:65;;29280:25;29308:21;29280:49;;29343:36;29360:18;29343:16;:36::i;:::-;29394:18;29415:44;29441:17;29415:21;:25;;:44;;;;:::i;:::-;29394:65;;29473:17;29493:51;29526:17;29493:28;29508:12;;29493:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;29473:71;;29555:23;29594:9;29581:10;:22;;;;:::i;:::-;29555:48;;29641:1;29620:18;:22;;;;29668:1;29653:12;:16;;;;29704:1;29686:15;:19;:42;;;;;29727:1;29709:15;:19;29686:42;29683:210;;;29744:46;29757:15;29774;29744:12;:46::i;:::-;29810:71;29825:18;29845:15;29862:18;;29810:71;;;;;;;;:::i;:::-;;;;;;;;29683:210;29927:9;;;;;;;;;;;29919:23;;29950:21;29919:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29906:70;;;;;28535:1449;;;;;;;;;28507:1477;:::o;9236:254::-;9294:7;9325:1;9320;:6;9316:47;;9350:1;9343:8;;;;9316:47;9376:9;9392:1;9388;:5;;;;:::i;:::-;9376:17;;9421:1;9416;9412;:5;;;;:::i;:::-;:10;9404:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9481:1;9474:8;;;9236:254;;;;;:::o;9498:132::-;9556:7;9583:39;9587:1;9590;9583:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9576:46;;9498:132;;;;:::o;8536:125::-;;;;:::o;8891:136::-;8949:7;8976:43;8980:1;8983;8976:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8969:50;;8891:136;;;;:::o;27372:597::-;27501:21;27539:1;27525:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27501:40;;27570:4;27552;27557:1;27552:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27596:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27586:4;27591:1;27586:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27632:62;27649:4;27664:15;27682:11;27632:8;:62::i;:::-;27734:15;:66;;;27815:11;27841:1;27885:4;27912;27932:15;27734:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27427:542;27372:597;:::o;27978:520::-;28126:62;28143:4;28158:15;28176:11;28126:8;:62::i;:::-;28232:15;:31;;;28271:9;28304:4;28324:11;28350:1;28393;28444:4;28464:15;28232:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27978:520;;:::o;9638:279::-;9724:7;9756:1;9752;:5;9759:12;9744:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9783:9;9799:1;9795;:5;;;;:::i;:::-;9783:17;;9908:1;9901:8;;;9638: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:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:86::-;5771:7;5811:4;5804:5;5800:16;5789:27;;5736:86;;;:::o;5828:112::-;5911:22;5927:5;5911:22;:::i;:::-;5906:3;5899:35;5828:112;;:::o;5946:214::-;6035:4;6073:2;6062:9;6058:18;6050:26;;6086:67;6150:1;6139:9;6135:17;6126:6;6086:67;:::i;:::-;5946:214;;;;:::o;6166:118::-;6253:24;6271:5;6253:24;:::i;:::-;6248:3;6241:37;6166:118;;:::o;6290:222::-;6383:4;6421:2;6410:9;6406:18;6398:26;;6434:71;6502:1;6491:9;6487:17;6478:6;6434:71;:::i;:::-;6290:222;;;;:::o;6518:116::-;6588:21;6603:5;6588:21;:::i;:::-;6581:5;6578:32;6568:60;;6624:1;6621;6614:12;6568:60;6518:116;:::o;6640:133::-;6683:5;6721:6;6708:20;6699:29;;6737:30;6761:5;6737:30;:::i;:::-;6640:133;;;;:::o;6779:468::-;6844:6;6852;6901:2;6889:9;6880:7;6876:23;6872:32;6869:119;;;6907:79;;:::i;:::-;6869:119;7027:1;7052:53;7097:7;7088:6;7077:9;7073:22;7052:53;:::i;:::-;7042:63;;6998:117;7154:2;7180:50;7222:7;7213:6;7202:9;7198:22;7180:50;:::i;:::-;7170:60;;7125:115;6779:468;;;;;:::o;7253:323::-;7309:6;7358:2;7346:9;7337:7;7333:23;7329:32;7326:119;;;7364:79;;:::i;:::-;7326:119;7484:1;7509:50;7551:7;7542:6;7531:9;7527:22;7509:50;:::i;:::-;7499:60;;7455:114;7253:323;;;;:::o;7582:474::-;7650:6;7658;7707:2;7695:9;7686:7;7682:23;7678:32;7675:119;;;7713:79;;:::i;:::-;7675:119;7833:1;7858:53;7903:7;7894:6;7883:9;7879:22;7858:53;:::i;:::-;7848:63;;7804:117;7960:2;7986:53;8031:7;8022:6;8011:9;8007:22;7986:53;:::i;:::-;7976:63;;7931:118;7582:474;;;;;:::o;8062:765::-;8148:6;8156;8164;8172;8221:3;8209:9;8200:7;8196:23;8192:33;8189:120;;;8228:79;;:::i;:::-;8189:120;8348:1;8373:53;8418:7;8409:6;8398:9;8394:22;8373:53;:::i;:::-;8363:63;;8319:117;8475:2;8501:53;8546:7;8537:6;8526:9;8522:22;8501:53;:::i;:::-;8491:63;;8446:118;8603:2;8629:53;8674:7;8665:6;8654:9;8650:22;8629:53;:::i;:::-;8619:63;;8574:118;8731:2;8757:53;8802:7;8793:6;8782:9;8778:22;8757:53;:::i;:::-;8747:63;;8702:118;8062:765;;;;;;;:::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:244::-;13536:34;13532:1;13524:6;13520:14;13513:58;13605:27;13600:2;13592:6;13588:15;13581:52;13396:244;:::o;13646:366::-;13788:3;13809:67;13873:2;13868:3;13809:67;:::i;:::-;13802:74;;13885:93;13974:3;13885:93;:::i;:::-;14003:2;13998:3;13994:12;13987:19;;13646:366;;;:::o;14018:419::-;14184:4;14222:2;14211:9;14207:18;14199:26;;14271:9;14265:4;14261:20;14257:1;14246:9;14242:17;14235:47;14299:131;14425:4;14299:131;:::i;:::-;14291:139;;14018:419;;;:::o;14443:223::-;14583:34;14579:1;14571:6;14567:14;14560:58;14652:6;14647:2;14639:6;14635:15;14628:31;14443:223;:::o;14672:366::-;14814:3;14835:67;14899:2;14894:3;14835:67;:::i;:::-;14828:74;;14911:93;15000:3;14911:93;:::i;:::-;15029:2;15024:3;15020:12;15013:19;;14672:366;;;:::o;15044:419::-;15210:4;15248:2;15237:9;15233:18;15225:26;;15297:9;15291:4;15287:20;15283:1;15272:9;15268:17;15261:47;15325:131;15451:4;15325:131;:::i;:::-;15317:139;;15044:419;;;:::o;15469:85::-;15514:7;15543:5;15532:16;;15469:85;;;:::o;15560:158::-;15618:9;15651:61;15669:42;15678:32;15704:5;15678:32;:::i;:::-;15669:42;:::i;:::-;15651:61;:::i;:::-;15638:74;;15560:158;;;:::o;15724:147::-;15819:45;15858:5;15819:45;:::i;:::-;15814:3;15807:58;15724:147;;:::o;15877:807::-;16126:4;16164:3;16153:9;16149:19;16141:27;;16178:71;16246:1;16235:9;16231:17;16222:6;16178:71;:::i;:::-;16259:72;16327:2;16316:9;16312:18;16303:6;16259:72;:::i;:::-;16341:80;16417:2;16406:9;16402:18;16393:6;16341:80;:::i;:::-;16431;16507:2;16496:9;16492:18;16483:6;16431:80;:::i;:::-;16521:73;16589:3;16578:9;16574:19;16565:6;16521:73;:::i;:::-;16604;16672:3;16661:9;16657:19;16648:6;16604:73;:::i;:::-;15877:807;;;;;;;;;:::o;16690:143::-;16747:5;16778:6;16772:13;16763:22;;16794:33;16821:5;16794:33;:::i;:::-;16690:143;;;;:::o;16839:663::-;16927:6;16935;16943;16992:2;16980:9;16971:7;16967:23;16963:32;16960:119;;;16998:79;;:::i;:::-;16960:119;17118:1;17143:64;17199:7;17190:6;17179:9;17175:22;17143:64;:::i;:::-;17133:74;;17089:128;17256:2;17282:64;17338:7;17329:6;17318:9;17314:22;17282:64;:::i;:::-;17272:74;;17227:129;17395:2;17421:64;17477:7;17468:6;17457:9;17453:22;17421:64;:::i;:::-;17411:74;;17366:129;16839:663;;;;;:::o;17508:180::-;17556:77;17553:1;17546:88;17653:4;17650:1;17643:15;17677:4;17674:1;17667:15;17694:191;17734:3;17753:20;17771:1;17753:20;:::i;:::-;17748:25;;17787:20;17805:1;17787:20;:::i;:::-;17782:25;;17830:1;17827;17823:9;17816:16;;17851:3;17848:1;17845:10;17842:36;;;17858:18;;:::i;:::-;17842:36;17694:191;;;;:::o;17891:223::-;18031:34;18027:1;18019:6;18015:14;18008:58;18100:6;18095:2;18087:6;18083:15;18076:31;17891:223;:::o;18120:366::-;18262:3;18283:67;18347:2;18342:3;18283:67;:::i;:::-;18276:74;;18359:93;18448:3;18359:93;:::i;:::-;18477:2;18472:3;18468:12;18461:19;;18120:366;;;:::o;18492:419::-;18658:4;18696:2;18685:9;18681:18;18673:26;;18745:9;18739:4;18735:20;18731:1;18720:9;18716:17;18709:47;18773:131;18899:4;18773:131;:::i;:::-;18765:139;;18492:419;;;:::o;18917:221::-;19057:34;19053:1;19045:6;19041:14;19034:58;19126:4;19121:2;19113:6;19109:15;19102:29;18917:221;:::o;19144:366::-;19286:3;19307:67;19371:2;19366:3;19307:67;:::i;:::-;19300:74;;19383:93;19472:3;19383:93;:::i;:::-;19501:2;19496:3;19492:12;19485:19;;19144:366;;;:::o;19516:419::-;19682:4;19720:2;19709:9;19705:18;19697:26;;19769:9;19763:4;19759:20;19755:1;19744:9;19740:17;19733:47;19797:131;19923:4;19797:131;:::i;:::-;19789:139;;19516:419;;;:::o;19941:224::-;20081:34;20077:1;20069:6;20065:14;20058:58;20150:7;20145:2;20137:6;20133:15;20126:32;19941:224;:::o;20171:366::-;20313:3;20334:67;20398:2;20393:3;20334:67;:::i;:::-;20327:74;;20410:93;20499:3;20410:93;:::i;:::-;20528:2;20523:3;20519:12;20512:19;;20171:366;;;:::o;20543:419::-;20709:4;20747:2;20736:9;20732:18;20724:26;;20796:9;20790:4;20786:20;20782:1;20771:9;20767:17;20760:47;20824:131;20950:4;20824:131;:::i;:::-;20816:139;;20543:419;;;:::o;20968:222::-;21108:34;21104:1;21096:6;21092:14;21085:58;21177:5;21172:2;21164:6;21160:15;21153:30;20968:222;:::o;21196:366::-;21338:3;21359:67;21423:2;21418:3;21359:67;:::i;:::-;21352:74;;21435:93;21524:3;21435:93;:::i;:::-;21553:2;21548:3;21544:12;21537:19;;21196:366;;;:::o;21568:419::-;21734:4;21772:2;21761:9;21757:18;21749:26;;21821:9;21815:4;21811:20;21807:1;21796:9;21792:17;21785:47;21849:131;21975:4;21849:131;:::i;:::-;21841:139;;21568:419;;;:::o;21993:240::-;22133:34;22129:1;22121:6;22117:14;22110:58;22202:23;22197:2;22189:6;22185:15;22178:48;21993:240;:::o;22239:366::-;22381:3;22402:67;22466:2;22461:3;22402:67;:::i;:::-;22395:74;;22478:93;22567:3;22478:93;:::i;:::-;22596:2;22591:3;22587:12;22580:19;;22239:366;;;:::o;22611:419::-;22777:4;22815:2;22804:9;22800:18;22792:26;;22864:9;22858:4;22854:20;22850:1;22839:9;22835:17;22828:47;22892:131;23018:4;22892:131;:::i;:::-;22884:139;;22611:419;;;:::o;23036:169::-;23176:21;23172:1;23164:6;23160:14;23153:45;23036:169;:::o;23211:366::-;23353:3;23374:67;23438:2;23433:3;23374:67;:::i;:::-;23367:74;;23450:93;23539:3;23450:93;:::i;:::-;23568:2;23563:3;23559:12;23552:19;;23211:366;;;:::o;23583:419::-;23749:4;23787:2;23776:9;23772:18;23764:26;;23836:9;23830:4;23826:20;23822:1;23811:9;23807:17;23800:47;23864:131;23990:4;23864:131;:::i;:::-;23856:139;;23583:419;;;:::o;24008:241::-;24148:34;24144:1;24136:6;24132:14;24125:58;24217:24;24212:2;24204:6;24200:15;24193:49;24008:241;:::o;24255:366::-;24397:3;24418:67;24482:2;24477:3;24418:67;:::i;:::-;24411:74;;24494:93;24583:3;24494:93;:::i;:::-;24612:2;24607:3;24603:12;24596:19;;24255:366;;;:::o;24627:419::-;24793:4;24831:2;24820:9;24816:18;24808:26;;24880:9;24874:4;24870:20;24866:1;24855:9;24851:17;24844:47;24908:131;25034:4;24908:131;:::i;:::-;24900:139;;24627:419;;;:::o;25052:410::-;25092:7;25115:20;25133:1;25115:20;:::i;:::-;25110:25;;25149:20;25167:1;25149:20;:::i;:::-;25144:25;;25204:1;25201;25197:9;25226:30;25244:11;25226:30;:::i;:::-;25215:41;;25405:1;25396:7;25392:15;25389:1;25386:22;25366:1;25359:9;25339:83;25316:139;;25435:18;;:::i;:::-;25316:139;25100:362;25052:410;;;;:::o;25468:180::-;25516:77;25513:1;25506:88;25613:4;25610:1;25603:15;25637:4;25634:1;25627:15;25654:185;25694:1;25711:20;25729:1;25711:20;:::i;:::-;25706:25;;25745:20;25763:1;25745:20;:::i;:::-;25740:25;;25784:1;25774:35;;25789:18;;:::i;:::-;25774:35;25831:1;25828;25824:9;25819:14;;25654:185;;;;:::o;25845:194::-;25885:4;25905:20;25923:1;25905:20;:::i;:::-;25900:25;;25939:20;25957:1;25939:20;:::i;:::-;25934:25;;25983:1;25980;25976:9;25968:17;;26007:1;26001:4;25998:11;25995:37;;;26012:18;;:::i;:::-;25995:37;25845:194;;;;:::o;26045:177::-;26185:29;26181:1;26173:6;26169:14;26162:53;26045:177;:::o;26228:366::-;26370:3;26391:67;26455:2;26450:3;26391:67;:::i;:::-;26384:74;;26467:93;26556:3;26467:93;:::i;:::-;26585:2;26580:3;26576:12;26569:19;;26228:366;;;:::o;26600:419::-;26766:4;26804:2;26793:9;26789:18;26781:26;;26853:9;26847:4;26843:20;26839:1;26828:9;26824:17;26817:47;26881:131;27007:4;26881:131;:::i;:::-;26873:139;;26600:419;;;:::o;27025:442::-;27174:4;27212:2;27201:9;27197:18;27189:26;;27225:71;27293:1;27282:9;27278:17;27269:6;27225:71;:::i;:::-;27306:72;27374:2;27363:9;27359:18;27350:6;27306:72;:::i;:::-;27388;27456:2;27445:9;27441:18;27432:6;27388:72;:::i;:::-;27025:442;;;;;;:::o;27473:220::-;27613:34;27609:1;27601:6;27597:14;27590:58;27682:3;27677:2;27669:6;27665:15;27658:28;27473:220;:::o;27699:366::-;27841:3;27862:67;27926:2;27921:3;27862:67;:::i;:::-;27855:74;;27938:93;28027:3;27938:93;:::i;:::-;28056:2;28051:3;28047:12;28040:19;;27699:366;;;:::o;28071:419::-;28237:4;28275:2;28264:9;28260:18;28252:26;;28324:9;28318:4;28314:20;28310:1;28299:9;28295:17;28288:47;28352:131;28478:4;28352:131;:::i;:::-;28344:139;;28071:419;;;:::o;28496:180::-;28544:77;28541:1;28534:88;28641:4;28638:1;28631:15;28665:4;28662:1;28655:15;28682:180;28730:77;28727:1;28720:88;28827:4;28824:1;28817:15;28851:4;28848:1;28841:15;28868:143;28925:5;28956:6;28950:13;28941:22;;28972:33;28999:5;28972:33;:::i;:::-;28868:143;;;;:::o;29017:351::-;29087:6;29136:2;29124:9;29115:7;29111:23;29107:32;29104:119;;;29142:79;;:::i;:::-;29104:119;29262:1;29287:64;29343:7;29334:6;29323:9;29319:22;29287:64;:::i;:::-;29277:74;;29233:128;29017:351;;;;:::o;29374:114::-;29441:6;29475:5;29469:12;29459:22;;29374:114;;;:::o;29494:184::-;29593:11;29627:6;29622:3;29615:19;29667:4;29662:3;29658:14;29643:29;;29494:184;;;;:::o;29684:132::-;29751:4;29774:3;29766:11;;29804:4;29799:3;29795:14;29787:22;;29684:132;;;:::o;29822:108::-;29899:24;29917:5;29899:24;:::i;:::-;29894:3;29887:37;29822:108;;:::o;29936:179::-;30005:10;30026:46;30068:3;30060:6;30026:46;:::i;:::-;30104:4;30099:3;30095:14;30081:28;;29936:179;;;;:::o;30121:113::-;30191:4;30223;30218:3;30214:14;30206:22;;30121:113;;;:::o;30270:732::-;30389:3;30418:54;30466:5;30418:54;:::i;:::-;30488:86;30567:6;30562:3;30488:86;:::i;:::-;30481:93;;30598:56;30648:5;30598:56;:::i;:::-;30677:7;30708:1;30693:284;30718:6;30715:1;30712:13;30693:284;;;30794:6;30788:13;30821:63;30880:3;30865:13;30821:63;:::i;:::-;30814:70;;30907:60;30960:6;30907:60;:::i;:::-;30897:70;;30753:224;30740:1;30737;30733:9;30728:14;;30693:284;;;30697:14;30993:3;30986:10;;30394:608;;;30270:732;;;;:::o;31008:831::-;31271:4;31309:3;31298:9;31294:19;31286:27;;31323:71;31391:1;31380:9;31376:17;31367:6;31323:71;:::i;:::-;31404:80;31480:2;31469:9;31465:18;31456:6;31404:80;:::i;:::-;31531:9;31525:4;31521:20;31516:2;31505:9;31501:18;31494:48;31559:108;31662:4;31653:6;31559:108;:::i;:::-;31551:116;;31677:72;31745:2;31734:9;31730:18;31721:6;31677:72;:::i;:::-;31759:73;31827:3;31816:9;31812:19;31803:6;31759:73;:::i;:::-;31008:831;;;;;;;;:::o
Swarm Source
ipfs://7c8f2c736c032552d0ac8b4ebaa81babab45956b8866041880552686f1b71058
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.