Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 245 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20138645 | 131 days ago | IN | 0 ETH | 0.00009541 | ||||
Approve | 20097108 | 137 days ago | IN | 0 ETH | 0.00012197 | ||||
Approve | 17388522 | 517 days ago | IN | 0 ETH | 0.00079034 | ||||
Approve | 17015152 | 569 days ago | IN | 0 ETH | 0.00054085 | ||||
Approve | 16560500 | 633 days ago | IN | 0 ETH | 0.00080944 | ||||
Unstuck ETH | 16560492 | 633 days ago | IN | 0 ETH | 0.00048423 | ||||
Approve | 16492773 | 643 days ago | IN | 0 ETH | 0.00128426 | ||||
Approve | 16492759 | 643 days ago | IN | 0 ETH | 0.00114274 | ||||
Approve | 16492744 | 643 days ago | IN | 0 ETH | 0.00117203 | ||||
Approve | 16462867 | 647 days ago | IN | 0 ETH | 0.00033763 | ||||
Approve | 16319644 | 667 days ago | IN | 0 ETH | 0.00043569 | ||||
Approve | 16319636 | 667 days ago | IN | 0 ETH | 0.00049782 | ||||
Approve | 16299817 | 670 days ago | IN | 0 ETH | 0.00098051 | ||||
Approve | 16296980 | 670 days ago | IN | 0 ETH | 0.0006301 | ||||
Approve | 16296404 | 670 days ago | IN | 0 ETH | 0.00066734 | ||||
Approve | 16291476 | 671 days ago | IN | 0 ETH | 0.00084421 | ||||
Approve | 16180064 | 686 days ago | IN | 0 ETH | 0.00060968 | ||||
Approve | 16176286 | 687 days ago | IN | 0 ETH | 0.00162824 | ||||
Approve | 16146329 | 691 days ago | IN | 0 ETH | 0.00087692 | ||||
Transfer | 16096672 | 698 days ago | IN | 0 ETH | 0.00078505 | ||||
Approve | 16044942 | 705 days ago | IN | 0 ETH | 0.00030963 | ||||
Approve | 16044935 | 705 days ago | IN | 0 ETH | 0.00053048 | ||||
Approve | 16043085 | 706 days ago | IN | 0 ETH | 0.00055314 | ||||
Approve | 16041406 | 706 days ago | IN | 0 ETH | 0.00059975 | ||||
Transfer | 15957228 | 718 days ago | IN | 0 ETH | 0.00102408 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16560509 | 633 days ago | 0.00000777 ETH | ||||
16560509 | 633 days ago | 0.00113341 ETH | ||||
16560509 | 633 days ago | 0.00113341 ETH | ||||
16560492 | 633 days ago | 0.00006787 ETH | ||||
16299829 | 670 days ago | 0.00118738 ETH | ||||
16299829 | 670 days ago | 0.00118738 ETH | ||||
16296459 | 670 days ago | 0.00186184 ETH | ||||
16296459 | 670 days ago | 0.00186184 ETH | ||||
16045822 | 705 days ago | 0.00233694 ETH | ||||
16045822 | 705 days ago | 0.00233694 ETH | ||||
15929486 | 721 days ago | 0.00302822 ETH | ||||
15929486 | 721 days ago | 0.00302822 ETH | ||||
15917866 | 723 days ago | 0.00000036 ETH | ||||
15917866 | 723 days ago | 0.01250826 ETH | ||||
15917866 | 723 days ago | 0.01250826 ETH | ||||
15893266 | 726 days ago | 0.00430684 ETH | ||||
15893266 | 726 days ago | 0.00430684 ETH | ||||
15862494 | 731 days ago | 0.00607177 ETH | ||||
15862494 | 731 days ago | 0.00607177 ETH | ||||
15852342 | 732 days ago | 0.00613598 ETH | ||||
15852342 | 732 days ago | 0.00613598 ETH | ||||
15846894 | 733 days ago | 0.00495142 ETH | ||||
15846894 | 733 days ago | 0.00495142 ETH | ||||
15830363 | 735 days ago | 0.00693593 ETH | ||||
15830363 | 735 days ago | 0.00693593 ETH |
Loading...
Loading
Contract Name:
ProtocolNumberOne
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-17 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; 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 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); } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract ProtocolNumberOne is Context,IERC20, Ownable{ using Address for address; string private _name = "ProtocolNumberOne"; string private _symbol = "PNO1"; uint8 private _decimals = 18; uint256 totalFeeFortx = 0; uint256 maxWalletTreshold = 3; uint256 maxTxTreshold = 3; uint256 private swapTreshold =3; bool public limitsInEffect = true; uint256 private currentThreshold = 20; uint256 private _totalSupply = 1_111_111_111 * 10**_decimals; uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000; mapping (address => uint256) private _balances; mapping (address => bool) private _excludedFromFees; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) _isExcludedMaxTransactionAmount; mapping (address => bool) public automatedMarketMakerPairs; address _owner; address payable public marketingAddress = payable(0x384a5c7f7c551E6aae46fcC5280F31e85CBdB19e); uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; uint256 maxTxAmount = _totalSupply*maxTxTreshold/100; mapping (address => bool) botWallets; bool botTradeEnabled = false; bool checkWalletSize = true; mapping (address => bool) private _liquidityHolders; mapping (address => bool) private presaleAddresses; uint256 private buyliqFee = 1; uint256 private buyprevLiqFee = 1; uint256 private buymktFee = 3; uint256 private buyPrevmktFee = 3; bool private tradeEnabled = false; uint256 private sellliqFee = 1; uint256 private sellprevLiqFee = 1; uint256 private sellmktFee = 3; uint256 private sellPrevmktFee = 3; bool public inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; uint256 private mktTokens = 0; uint256 private liqTokens = 0; event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event tokensSwappedDuringTokenomics(uint256 amount); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); IUniswapV2Router02 _router; address public uniswapV2Pair; //Balances tracker modifier lockTheSwap{ inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor(){ _balances[_msgSender()] = _totalSupply; IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory()) .createPair(address(this), _uniRouter.WETH()); _excludedFromFees[owner()] = true; _excludedFromFees[address(this)] = true; _router = _uniRouter; _liquidityHolders[address(_router)] = true; _liquidityHolders[owner()] = true; _liquidityHolders[address(this)] = true; _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); emit Transfer(address(0),_msgSender(),_totalSupply); } receive() external payable{} //general token data and tracking of balances to be swapped. function getOwner()external view returns(address){ return owner(); } function currentmktTokens() external view returns (uint256){ return mktTokens; } function currentLiqTokens() external view returns (uint256){ return liqTokens; } function totalSupply() external view override returns (uint256){ return _totalSupply; } function balanceOf(address account) public view override returns (uint256){ return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool){ _transfer(_msgSender(),recipient,amount); return true; } function allowance(address owner, address spender) external view override returns (uint256){ return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool){ _approve(_msgSender(),spender,amount); return true; } function removeLimits() public onlyOwner{ limitsInEffect = false; } function decimals()external view returns(uint256){ return _decimals; } function name() external view returns (string memory) { return _name; } function symbol() external view returns (string memory){ return _symbol; } function updateMaxTxTreshold(uint256 newVal) public onlyOwner{ maxTxTreshold = newVal; maxTxAmount = _totalSupply*maxTxTreshold/100;// 1% } function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{ maxWalletTreshold = newVal; maxWalletAmount = _totalSupply*maxWalletTreshold/100; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool){ require(amount <= _allowances[sender][_msgSender()], "ERC20: transfer amount exceeds allowance"); _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{ botWallets[detectedBot] = isBot; } function currentbuyliqFee() public view returns (uint256){ return buyliqFee; } function currentbuymktfee() public view returns (uint256){ return buymktFee; } function currentsellLiqFee() public view returns (uint256){ return sellliqFee; } function currentsellmktfee() public view returns (uint256){ return sellmktFee; } function currentThresholdInt()public view returns (uint256){ return currentThreshold; } function isExcluded(address toCheck)public view returns (bool){ return _excludedFromFees[toCheck]; } function _transfer(address from, address to, uint256 amount) internal{ require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0,"ERC20: transfered amount must be greater than zero"); uint256 senderBalance = _balances[from]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); if(tradeEnabled == false){ require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled"); } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) ){ //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTxAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWalletAmount, "Unable to exceed Max Wallet"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTxAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWalletAmount, "Unable to exceed Max Wallet"); } } } uint256 inContractBalance = balanceOf(address(this)); if(inContractBalance >=requiredTokensToSwap && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled){ if(inContractBalance >= requiredTokensToSwap ){ inContractBalance = requiredTokensToSwap; swapForTokenomics(inContractBalance); } } bool takeFees = true; if(_excludedFromFees[from] || _excludedFromFees[to]) { totalFeeFortx = 0; takeFees = false; } uint256 mktAmount = 0; uint256 liqAmount = 0; // Amount to be added to liquidity. if(takeFees){ //bot fees if(botWallets[from] == true||botWallets[to]==true){ revert("No bots allowed to trade"); } //Selling fees if (automatedMarketMakerPairs[to] && to != address(_router) ){ totalFeeFortx = 0; mktAmount = amount * sellmktFee/100; liqAmount = amount * sellliqFee/100; totalFeeFortx = mktAmount + liqAmount ; } //Buy Fees else if(automatedMarketMakerPairs[from] && from != address(_router)) { totalFeeFortx = 0; mktAmount = amount * buymktFee/100; liqAmount = amount * buyliqFee/100; totalFeeFortx = mktAmount + liqAmount ; } } _balances[from] = senderBalance - amount; _balances[to] += amount - mktAmount - liqAmount; if(liqAmount != 0) { _balances[address(this)] += totalFeeFortx; //tLiqTotal += liqAmount; liqTokens += liqAmount; mktTokens += mktAmount; emit Transfer(from, address(this), totalFeeFortx); } emit Transfer(from, to,amount-totalFeeFortx); } function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{ swapAndLiquify(liqTokens); swapTokensForETHmkt(mktTokens); emit tokensSwappedDuringTokenomics(balanceToswap); mktTokens = 0; liqTokens = 0; } function addLimitExempt(address newAddress)external onlyOwner{ _liquidityHolders[newAddress] = true; } function swapTokensForETHmkt(uint256 amount)private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), amount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // Accept any amount of ETH. path, marketingAddress, block.timestamp ); } function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{ //uint256 contractBalance = tokenToClear.balanceOf(address(this)); tokenToClear.transfer(destination, amount); } function unstuckETH(address payable destination) public onlyOwner{ uint256 ethBalance = address(this).balance; payable(destination).transfer(ethBalance); } function tradeStatus(bool status) public onlyOwner{ tradeEnabled = status; } function swapAndLiquify(uint256 liqTokensPassed) private { uint256 half = liqTokensPassed / 2; uint256 otherHalf = liqTokensPassed - half; uint256 initialBalance = address(this).balance; swapTokensForETH(half); uint256 newBalance = address(this).balance - (initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half,newBalance,otherHalf); } function swapTokensForETH(uint256 tokenAmount) private{ address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), tokenAmount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // Accept any amount of ETH. path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{ _approve(address(this), address(_router), tokenAmount); _router.addLiquidityETH{value:ethAmount}( address(this), tokenAmount, 0, 0, deadAddress,// tr block.timestamp ); } function _approve(address owner,address spender, uint256 amount) internal{ 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); } //Fees related functions function addToExcluded(address toExclude) public onlyOwner{ _excludedFromFees[toExclude] = true; } function removeFromExcluded(address toRemove) public onlyOwner{ _excludedFromFees[toRemove] = false; } function excludePresaleAddresses(address router, address presale) external onlyOwner { _liquidityHolders[address(router)] = true; _liquidityHolders[presale] = true; presaleAddresses[address(router)] = true; presaleAddresses[presale] = true; } function updateThreshold(uint newThreshold) public onlyOwner{ currentThreshold = newThreshold; } function setSwapAndLiquify(bool _enabled) public onlyOwner{ swapAndLiquifyEnabled = _enabled; } //Marketing related function setMktAddress(address newAddress) external onlyOwner{ marketingAddress = payable(newAddress); } function transferAssetsETH(address payable to, uint256 amount) internal{ to.transfer(amount); } 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 updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{ buyliqFee = newAmount; } function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{ buymktFee= newAmount; } function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{ sellliqFee= newAmount; } function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{ sellmktFee= newAmount; } function currentMaxWallet() public view returns(uint256){ return maxWalletAmount; } function currentMaxTx() public view returns(uint256){ return maxTxAmount; } function updateSwapTreshold(uint256 newVal) public onlyOwner{ swapTreshold = newVal; requiredTokensToSwap = _totalSupply*swapTreshold/1000; } function currentTradeStatus() public view returns (bool){ return tradeEnabled; } function currentSwapTreshold() public view returns(uint256){ return swapTreshold; } function currentTokensToSwap() public view returns(uint256){ return requiredTokensToSwap; } } 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 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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to); 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 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 Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280601181526020017f50726f746f636f6c4e756d6265724f6e650000000000000000000000000000008152506001908051906020019062000051929190620009ac565b506040518060400160405280600481526020017f504e4f3100000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f929190620009ac565b506012600360006101000a81548160ff021916908360ff16021790555060006004556003600555600360065560036007556001600860006101000a81548160ff0219169083151502179055506014600955600360009054906101000a900460ff16600a6200010e919062000ba4565b63423a35c76200011f919062000ce1565b600a556103e8600754600a5462000137919062000ce1565b62000143919062000b11565b600b5573384a5c7f7c551e6aae46fcc5280f31e85cbdb19e601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600554600a54620001af919062000ce1565b620001bb919062000b11565b6013556064600654600a54620001d2919062000ce1565b620001de919062000b11565b6014556000601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff02191690831515021790555060016019556001601a556003601b556003601c556000601d60006101000a81548160ff0219169083151502179055506001601e556001601f55600360205560036021556001602260016101000a81548160ff02191690831515021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525060006023556000602455348015620002c457600080fd5b50620002e5620002d96200081660201b60201c565b6200081e60201b60201c565b600a54600c6000620002fc6200081660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039a57600080fd5b505afa158015620003af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d5919062000a73565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043857600080fd5b505afa1580156200044d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000473919062000a73565b6040518363ffffffff1660e01b81526004016200049292919062000ac7565b602060405180830381600087803b158015620004ad57600080fd5b505af1158015620004c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e8919062000a73565b602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60006200053e620008e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000620006b8620008e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000796602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200090b60201b60201c565b620007a66200081660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a5460405162000807919062000af4565b60405180910390a35062000e7c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b828054620009ba9062000d8d565b90600052602060002090601f016020900481019282620009de576000855562000a2a565b82601f10620009f957805160ff191683800117855562000a2a565b8280016001018555821562000a2a579182015b8281111562000a2957825182559160200191906001019062000a0c565b5b50905062000a39919062000a3d565b5090565b5b8082111562000a5857600081600090555060010162000a3e565b5090565b60008151905062000a6d8162000e62565b92915050565b60006020828403121562000a8c5762000a8b62000e50565b5b600062000a9c8482850162000a5c565b91505092915050565b62000ab08162000d42565b82525050565b62000ac18162000d76565b82525050565b600060408201905062000ade600083018562000aa5565b62000aed602083018462000aa5565b9392505050565b600060208201905062000b0b600083018462000ab6565b92915050565b600062000b1e8262000d76565b915062000b2b8362000d76565b92508262000b3e5762000b3d62000df2565b5b828204905092915050565b6000808291508390505b600185111562000b9b5780860481111562000b735762000b7262000dc3565b5b600185161562000b835780820291505b808102905062000b938562000e55565b945062000b53565b94509492505050565b600062000bb18262000d76565b915062000bbe8362000d80565b925062000bed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bf5565b905092915050565b60008262000c07576001905062000cda565b8162000c17576000905062000cda565b816001811462000c30576002811462000c3b5762000c71565b600191505062000cda565b60ff84111562000c505762000c4f62000dc3565b5b8360020a91508482111562000c6a5762000c6962000dc3565b5b5062000cda565b5060208310610133831016604e8410600b841016171562000cab5782820a90508381111562000ca55762000ca462000dc3565b5b62000cda565b62000cba848484600162000b49565b9250905081840481111562000cd45762000cd362000dc3565b5b81810290505b9392505050565b600062000cee8262000d76565b915062000cfb8362000d76565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d375762000d3662000dc3565b5b828202905092915050565b600062000d4f8262000d56565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000da657607f821691505b6020821081141562000dbd5762000dbc62000e21565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b62000e6d8162000d42565b811462000e7957600080fd5b50565b60805160601c614d5c62000ea26000396000818161114201526139d50152614d5c6000f3fe6080604052600436106103395760003560e01c8063893d20e8116101ab578063b62496f5116100f7578063d7d7442f11610095578063e1370dd31161006f578063e1370dd314610bdf578063edcf19b214610c0a578063f2fde38b14610c33578063f7da678514610c5c57610340565b8063d7d7442f14610b4e578063dd62ed3e14610b77578063ddcf9b9814610bb457610340565b8063cb664534116100d1578063cb66453414610a94578063cba0e99614610abd578063d1294d4c14610afa578063d15bcf0f14610b2357610340565b8063b62496f514610a03578063bf9b015914610a40578063bf9eb54014610a6b57610340565b80639b136da411610164578063a6c38f591161013e578063a6c38f591461094b578063a7a0745214610974578063a9059cbb1461099d578063b4d95a93146109da57610340565b80639b136da4146108ca578063a04bdc81146108f5578063a5ece9411461092057610340565b8063893d20e8146107cc5780638cd0260c146107f75780638da5cb5b1461082057806390f502831461084b57806395d89b41146108765780639a7a23d6146108a157610340565b80634a0e963c116102855780636573c4df11610223578063715018a6116101fd578063715018a61461074c578063751039fc14610763578063801527ce1461077a5780638628c23f146107a357610340565b80636573c4df146106bb5780636df3333a146106e457806370a082311461070f57610340565b80634bd7ace51161025f5780634bd7ace5146106115780635297defd1461063c5780635be76f111461066757806364c161631461069057610340565b80634a0e963c146105925780634a62bb65146105bb5780634a74bb02146105e657610340565b806322788f86116102f25780632d03420b116102cc5780632d03420b146104e8578063313ce56714610511578063487a69051461053c57806349bd5a5e1461056757610340565b806322788f861461045557806323b872dd1461048057806327c8f835146104bd57610340565b806306fdde03146103455780630882a86314610370578063095ea7b31461039957806313b4a7f4146103d657806318160ddd146103ff578063220f66961461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610c85565b604051610367919061421e565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190613d9e565b610d17565b005b3480156103a557600080fd5b506103c060048036038101906103bb9190613cb1565b610d9d565b6040516103cd9190614203565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190613bde565b610dbb565b005b34801561040b57600080fd5b50610414610f9b565b6040516104219190614420565b60405180910390f35b34801561043657600080fd5b5061043f610fa5565b60405161044c9190614203565b60405180910390f35b34801561046157600080fd5b5061046a610fb8565b6040516104779190614420565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190613c1e565b610fc2565b6040516104b49190614203565b60405180910390f35b3480156104c957600080fd5b506104d2611140565b6040516104df9190614143565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a9190613cf1565b611164565b005b34801561051d57600080fd5b506105266111fd565b6040516105339190614420565b60405180910390f35b34801561054857600080fd5b50610551611217565b60405161055e9190614420565b60405180910390f35b34801561057357600080fd5b5061057c611221565b6040516105899190614143565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b49190613b17565b611247565b005b3480156105c757600080fd5b506105d061131e565b6040516105dd9190614203565b60405180910390f35b3480156105f257600080fd5b506105fb611331565b6040516106089190614203565b60405180910390f35b34801561061d57600080fd5b50610626611344565b6040516106339190614420565b60405180910390f35b34801561064857600080fd5b5061065161134e565b60405161065e9190614420565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190613b71565b611358565b005b34801561069c57600080fd5b506106a5611424565b6040516106b29190614420565b60405180910390f35b3480156106c757600080fd5b506106e260048036038101906106dd9190613d9e565b61142e565b005b3480156106f057600080fd5b506106f96114d6565b6040516107069190614420565b60405180910390f35b34801561071b57600080fd5b5061073660048036038101906107319190613b17565b6114e0565b6040516107439190614420565b60405180910390f35b34801561075857600080fd5b50610761611529565b005b34801561076f57600080fd5b506107786115b1565b005b34801561078657600080fd5b506107a1600480360381019061079c9190613cf1565b61164a565b005b3480156107af57600080fd5b506107ca60048036038101906107c59190613d9e565b6116e3565b005b3480156107d857600080fd5b506107e1611769565b6040516107ee9190614143565b60405180910390f35b34801561080357600080fd5b5061081e60048036038101906108199190613d9e565b611778565b005b34801561082c57600080fd5b506108356117fe565b6040516108429190614143565b60405180910390f35b34801561085757600080fd5b50610860611827565b60405161086d9190614420565b60405180910390f35b34801561088257600080fd5b5061088b611831565b604051610898919061421e565b60405180910390f35b3480156108ad57600080fd5b506108c860048036038101906108c39190613c71565b6118c3565b005b3480156108d657600080fd5b506108df6119de565b6040516108ec9190614420565b60405180910390f35b34801561090157600080fd5b5061090a6119e8565b6040516109179190614420565b60405180910390f35b34801561092c57600080fd5b506109356119ee565b604051610942919061415e565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d9190613b9e565b611a14565b005b34801561098057600080fd5b5061099b60048036038101906109969190613d9e565b611aeb565b005b3480156109a957600080fd5b506109c460048036038101906109bf9190613cb1565b611b93565b6040516109d19190614203565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc9190613b17565b611bb1565b005b348015610a0f57600080fd5b50610a2a6004803603810190610a259190613b17565b611c88565b604051610a379190614203565b60405180910390f35b348015610a4c57600080fd5b50610a55611ca8565b604051610a629190614420565b60405180910390f35b348015610a7757600080fd5b50610a926004803603810190610a8d9190613b17565b611cb2565b005b348015610aa057600080fd5b50610abb6004803603810190610ab69190613b17565b611d72565b005b348015610ac957600080fd5b50610ae46004803603810190610adf9190613b17565b611e49565b604051610af19190614203565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c9190613d9e565b611e9f565b005b348015610b2f57600080fd5b50610b38611f48565b604051610b459190614203565b60405180910390f35b348015610b5a57600080fd5b50610b756004803603810190610b709190613d9e565b611f5f565b005b348015610b8357600080fd5b50610b9e6004803603810190610b999190613bde565b611fe5565b604051610bab9190614420565b60405180910390f35b348015610bc057600080fd5b50610bc961206c565b604051610bd69190614420565b60405180910390f35b348015610beb57600080fd5b50610bf4612076565b604051610c019190614420565b60405180910390f35b348015610c1657600080fd5b50610c316004803603810190610c2c9190613d9e565b612080565b005b348015610c3f57600080fd5b50610c5a6004803603810190610c559190613b17565b612106565b005b348015610c6857600080fd5b50610c836004803603810190610c7e9190613d4b565b6121fe565b005b606060018054610c9490614777565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc090614777565b8015610d0d5780601f10610ce257610100808354040283529160200191610d0d565b820191906000526020600020905b815481529060010190602001808311610cf057829003601f168201915b5050505050905090565b610d1f61230d565b73ffffffffffffffffffffffffffffffffffffffff16610d3d6117fe565b73ffffffffffffffffffffffffffffffffffffffff1614610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a90614380565b60405180910390fd5b8060198190555050565b6000610db1610daa61230d565b8484612315565b6001905092915050565b610dc361230d565b73ffffffffffffffffffffffffffffffffffffffff16610de16117fe565b73ffffffffffffffffffffffffffffffffffffffff1614610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90614380565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600a54905090565b602260009054906101000a900460ff1681565b6000600954905090565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061100d61230d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561108a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108190614360565b60405180910390fd5b6110958484846124e0565b611135846110a161230d565b84600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110eb61230d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611130919061465c565b612315565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61116c61230d565b73ffffffffffffffffffffffffffffffffffffffff1661118a6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790614380565b60405180910390fd5b80601d60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600b54905090565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61124f61230d565b73ffffffffffffffffffffffffffffffffffffffff1661126d6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90614380565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600860009054906101000a900460ff1681565b602260019054906101000a900460ff1681565b6000601954905090565b6000602054905090565b61136061230d565b73ffffffffffffffffffffffffffffffffffffffff1661137e6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90614380565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561141f573d6000803e3d6000fd5b505050565b6000602454905090565b61143661230d565b73ffffffffffffffffffffffffffffffffffffffff166114546117fe565b73ffffffffffffffffffffffffffffffffffffffff16146114aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a190614380565b60405180910390fd5b806005819055506064600554600a546114c39190614602565b6114cd91906145d1565b60138190555050565b6000600754905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61153161230d565b73ffffffffffffffffffffffffffffffffffffffff1661154f6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90614380565b60405180910390fd5b6115af6000613216565b565b6115b961230d565b73ffffffffffffffffffffffffffffffffffffffff166115d76117fe565b73ffffffffffffffffffffffffffffffffffffffff161461162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162490614380565b60405180910390fd5b6000600860006101000a81548160ff021916908315150217905550565b61165261230d565b73ffffffffffffffffffffffffffffffffffffffff166116706117fe565b73ffffffffffffffffffffffffffffffffffffffff16146116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90614380565b60405180910390fd5b80602260016101000a81548160ff02191690831515021790555050565b6116eb61230d565b73ffffffffffffffffffffffffffffffffffffffff166117096117fe565b73ffffffffffffffffffffffffffffffffffffffff161461175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690614380565b60405180910390fd5b8060208190555050565b60006117736117fe565b905090565b61178061230d565b73ffffffffffffffffffffffffffffffffffffffff1661179e6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb90614380565b60405180910390fd5b80601e8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601e54905090565b60606002805461184090614777565b80601f016020809104026020016040519081016040528092919081815260200182805461186c90614777565b80156118b95780601f1061188e576101008083540402835291602001916118b9565b820191906000526020600020905b81548152906001019060200180831161189c57829003601f168201915b5050505050905090565b6118cb61230d565b73ffffffffffffffffffffffffffffffffffffffff166118e96117fe565b73ffffffffffffffffffffffffffffffffffffffff161461193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690614380565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c7906142a0565b60405180910390fd5b6119da82826132da565b5050565b6000601b54905090565b600b5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a1c61230d565b73ffffffffffffffffffffffffffffffffffffffff16611a3a6117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8790614380565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611af361230d565b73ffffffffffffffffffffffffffffffffffffffff16611b116117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e90614380565b60405180910390fd5b806006819055506064600654600a54611b809190614602565b611b8a91906145d1565b60148190555050565b6000611ba7611ba061230d565b84846124e0565b6001905092915050565b611bb961230d565b73ffffffffffffffffffffffffffffffffffffffff16611bd76117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490614380565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000601454905090565b611cba61230d565b73ffffffffffffffffffffffffffffffffffffffff16611cd86117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590614380565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d7a61230d565b73ffffffffffffffffffffffffffffffffffffffff16611d986117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590614380565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611ea761230d565b73ffffffffffffffffffffffffffffffffffffffff16611ec56117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1290614380565b60405180910390fd5b806007819055506103e8600754600a54611f359190614602565b611f3f91906145d1565b600b8190555050565b6000601d60009054906101000a900460ff16905090565b611f6761230d565b73ffffffffffffffffffffffffffffffffffffffff16611f856117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd290614380565b60405180910390fd5b8060098190555050565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602354905090565b6000601354905090565b61208861230d565b73ffffffffffffffffffffffffffffffffffffffff166120a66117fe565b73ffffffffffffffffffffffffffffffffffffffff16146120fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f390614380565b60405180910390fd5b80601b8190555050565b61210e61230d565b73ffffffffffffffffffffffffffffffffffffffff1661212c6117fe565b73ffffffffffffffffffffffffffffffffffffffff1614612182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217990614380565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e990614260565b60405180910390fd5b6121fb81613216565b50565b61220661230d565b73ffffffffffffffffffffffffffffffffffffffff166122246117fe565b73ffffffffffffffffffffffffffffffffffffffff161461227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190614380565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016122b5929190614179565b602060405180830381600087803b1580156122cf57600080fd5b505af11580156122e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123079190613d1e565b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237c90614400565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ec90614280565b60405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124d39190614420565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612550576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612547906143e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b790614240565b60405180910390fd5b60008111612603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fa90614300565b60405180910390fd5b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561268a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612681906142c0565b60405180910390fd5b60001515601d60009054906101000a900460ff161515141561278757601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127475750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90614320565b60405180910390fd5b5b600860009054906101000a900460ff1615612b74576127a46117fe565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561281257506127e26117fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561284b5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612885575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612b7357601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561292d5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129d457601454821115612977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296e90614340565b60405180910390fd5b601354612983846114e0565b8361298e919061457b565b11156129cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c6906143a0565b60405180910390fd5b612b72565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a775750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ac657601454821115612ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab8906142e0565b60405180910390fd5b612b71565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b7057601354612b23846114e0565b83612b2e919061457b565b1115612b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b66906143a0565b60405180910390fd5b5b5b5b5b5b6000612b7f306114e0565b9050600b548110158015612ba05750602260009054906101000a900460ff16155b8015612bfa5750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612c125750602260019054906101000a900460ff165b15612c3057600b548110612c2f57600b549050612c2e8161337b565b5b5b600060019050600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cd75750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ce9576000600481905550600090505b6000808215612fe55760011515601560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612da1575060011515601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd8906143c0565b60405180910390fd5b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e885750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15612ee4576000600481905550606460205487612ea59190614602565b612eaf91906145d1565b91506064601e5487612ec19190614602565b612ecb91906145d1565b90508082612ed9919061457b565b600481905550612fe4565b601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f8b5750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612fe35760006004819055506064601b5487612fa89190614602565b612fb291906145d1565b9150606460195487612fc49190614602565b612fce91906145d1565b90508082612fdc919061457b565b6004819055505b5b5b8585612ff1919061465c565b600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808287613041919061465c565b61304b919061465c565b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613099919061457b565b925050819055506000811461319a57600454600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130f9919061457b565b925050819055508060246000828254613112919061457b565b92505081905550816023600082825461312b919061457b565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516131919190614420565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454896131f7919061465c565b6040516132049190614420565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602260006101000a81548160ff0219169083151502179055506133a1602454613411565b6133ac60235461349c565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904816040516133db9190614420565b60405180910390a1600060238190555060006024819055506000602260006101000a81548160ff02191690831515021790555050565b600060028261342091906145d1565b905060008183613430919061465c565b9050600047905061344083613710565b6000814761344e919061465c565b905061345a8382613962565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161348d939291906144ef565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156134b9576134b8614865565b5b6040519080825280602002602001820160405280156134e75781602001602082028036833780820191505090505b50905030816000815181106134ff576134fe614836565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156135a157600080fd5b505afa1580156135b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d99190613b44565b816001815181106135ed576135ec614836565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061365430602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612315565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016136da95949392919061443b565b600060405180830381600087803b1580156136f457600080fd5b505af1158015613708573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff81111561372d5761372c614865565b5b60405190808252806020026020018201604052801561375b5781602001602082028036833780820191505090505b509050308160008151811061377357613772614836565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561381557600080fd5b505afa158015613829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061384d9190613b44565b8160018151811061386157613860614836565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138c830602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612315565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161392c959493929190614495565b600060405180830381600087803b15801561394657600080fd5b505af115801561395a573d6000803e3d6000fd5b505050505050565b61398f30602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612315565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b8152600401613a16969594939291906141a2565b6060604051808303818588803b158015613a2f57600080fd5b505af1158015613a43573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a689190613dcb565b5050505050565b600081359050613a7e81614cb3565b92915050565b600081519050613a9381614cb3565b92915050565b600081359050613aa881614cca565b92915050565b600081359050613abd81614ce1565b92915050565b600081519050613ad281614ce1565b92915050565b600081359050613ae781614cf8565b92915050565b600081359050613afc81614d0f565b92915050565b600081519050613b1181614d0f565b92915050565b600060208284031215613b2d57613b2c614894565b5b6000613b3b84828501613a6f565b91505092915050565b600060208284031215613b5a57613b59614894565b5b6000613b6884828501613a84565b91505092915050565b600060208284031215613b8757613b86614894565b5b6000613b9584828501613a99565b91505092915050565b60008060408385031215613bb557613bb4614894565b5b6000613bc385828601613a99565b9250506020613bd485828601613aae565b9150509250929050565b60008060408385031215613bf557613bf4614894565b5b6000613c0385828601613a6f565b9250506020613c1485828601613a6f565b9150509250929050565b600080600060608486031215613c3757613c36614894565b5b6000613c4586828701613a6f565b9350506020613c5686828701613a6f565b9250506040613c6786828701613aed565b9150509250925092565b60008060408385031215613c8857613c87614894565b5b6000613c9685828601613a6f565b9250506020613ca785828601613aae565b9150509250929050565b60008060408385031215613cc857613cc7614894565b5b6000613cd685828601613a6f565b9250506020613ce785828601613aed565b9150509250929050565b600060208284031215613d0757613d06614894565b5b6000613d1584828501613aae565b91505092915050565b600060208284031215613d3457613d33614894565b5b6000613d4284828501613ac3565b91505092915050565b600080600060608486031215613d6457613d63614894565b5b6000613d7286828701613ad8565b9350506020613d8386828701613a99565b9250506040613d9486828701613aed565b9150509250925092565b600060208284031215613db457613db3614894565b5b6000613dc284828501613aed565b91505092915050565b600080600060608486031215613de457613de3614894565b5b6000613df286828701613b02565b9350506020613e0386828701613b02565b9250506040613e1486828701613b02565b9150509250925092565b6000613e2a8383613e54565b60208301905092915050565b613e3f816146fc565b82525050565b613e4e816146a2565b82525050565b613e5d81614690565b82525050565b613e6c81614690565b82525050565b6000613e7d82614536565b613e878185614559565b9350613e9283614526565b8060005b83811015613ec3578151613eaa8882613e1e565b9750613eb58361454c565b925050600181019050613e96565b5085935050505092915050565b613ed9816146b4565b82525050565b613ee88161470e565b82525050565b6000613ef982614541565b613f03818561456a565b9350613f13818560208601614744565b613f1c81614899565b840191505092915050565b6000613f3460238361456a565b9150613f3f826148aa565b604082019050919050565b6000613f5760268361456a565b9150613f62826148f9565b604082019050919050565b6000613f7a60228361456a565b9150613f8582614948565b604082019050919050565b6000613f9d60398361456a565b9150613fa882614997565b604082019050919050565b6000613fc060268361456a565b9150613fcb826149e6565b604082019050919050565b6000613fe360368361456a565b9150613fee82614a35565b604082019050919050565b600061400660328361456a565b915061401182614a84565b604082019050919050565b6000614029601d8361456a565b915061403482614ad3565b602082019050919050565b600061404c60358361456a565b915061405782614afc565b604082019050919050565b600061406f60288361456a565b915061407a82614b4b565b604082019050919050565b600061409260208361456a565b915061409d82614b9a565b602082019050919050565b60006140b5601b8361456a565b91506140c082614bc3565b602082019050919050565b60006140d860188361456a565b91506140e382614bec565b602082019050919050565b60006140fb60258361456a565b915061410682614c15565b604082019050919050565b600061411e60248361456a565b915061412982614c64565b604082019050919050565b61413d816146f2565b82525050565b60006020820190506141586000830184613e63565b92915050565b60006020820190506141736000830184613e45565b92915050565b600060408201905061418e6000830185613e36565b61419b6020830184614134565b9392505050565b600060c0820190506141b76000830189613e63565b6141c46020830188614134565b6141d16040830187613edf565b6141de6060830186613edf565b6141eb6080830185613e63565b6141f860a0830184614134565b979650505050505050565b60006020820190506142186000830184613ed0565b92915050565b600060208201905081810360008301526142388184613eee565b905092915050565b6000602082019050818103600083015261425981613f27565b9050919050565b6000602082019050818103600083015261427981613f4a565b9050919050565b6000602082019050818103600083015261429981613f6d565b9050919050565b600060208201905081810360008301526142b981613f90565b9050919050565b600060208201905081810360008301526142d981613fb3565b9050919050565b600060208201905081810360008301526142f981613fd6565b9050919050565b6000602082019050818103600083015261431981613ff9565b9050919050565b600060208201905081810360008301526143398161401c565b9050919050565b600060208201905081810360008301526143598161403f565b9050919050565b6000602082019050818103600083015261437981614062565b9050919050565b6000602082019050818103600083015261439981614085565b9050919050565b600060208201905081810360008301526143b9816140a8565b9050919050565b600060208201905081810360008301526143d9816140cb565b9050919050565b600060208201905081810360008301526143f9816140ee565b9050919050565b6000602082019050818103600083015261441981614111565b9050919050565b60006020820190506144356000830184614134565b92915050565b600060a0820190506144506000830188614134565b61445d6020830187613edf565b818103604083015261446f8186613e72565b905061447e6060830185613e36565b61448b6080830184614134565b9695505050505050565b600060a0820190506144aa6000830188614134565b6144b76020830187613edf565b81810360408301526144c98186613e72565b90506144d86060830185613e63565b6144e56080830184614134565b9695505050505050565b60006060820190506145046000830186614134565b6145116020830185614134565b61451e6040830184614134565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614586826146f2565b9150614591836146f2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145c6576145c56147a9565b5b828201905092915050565b60006145dc826146f2565b91506145e7836146f2565b9250826145f7576145f66147d8565b5b828204905092915050565b600061460d826146f2565b9150614618836146f2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614651576146506147a9565b5b828202905092915050565b6000614667826146f2565b9150614672836146f2565b925082821015614685576146846147a9565b5b828203905092915050565b600061469b826146d2565b9050919050565b60006146ad826146d2565b9050919050565b60008115159050919050565b60006146cb82614690565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061470782614720565b9050919050565b6000614719826146f2565b9050919050565b600061472b82614732565b9050919050565b600061473d826146d2565b9050919050565b60005b83811015614762578082015181840152602081019050614747565b83811115614771576000848401525b50505050565b6000600282049050600182168061478f57607f821691505b602082108114156147a3576147a2614807565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b7f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b614cbc81614690565b8114614cc757600080fd5b50565b614cd3816146a2565b8114614cde57600080fd5b50565b614cea816146b4565b8114614cf557600080fd5b50565b614d01816146c0565b8114614d0c57600080fd5b50565b614d18816146f2565b8114614d2357600080fd5b5056fea26469706673582212203ff0d4315cf65a26385ba94aa7e141bdcceb2bd40f9c2a01d534bf7f50d82f6564736f6c63430008070033
Deployed Bytecode
0x6080604052600436106103395760003560e01c8063893d20e8116101ab578063b62496f5116100f7578063d7d7442f11610095578063e1370dd31161006f578063e1370dd314610bdf578063edcf19b214610c0a578063f2fde38b14610c33578063f7da678514610c5c57610340565b8063d7d7442f14610b4e578063dd62ed3e14610b77578063ddcf9b9814610bb457610340565b8063cb664534116100d1578063cb66453414610a94578063cba0e99614610abd578063d1294d4c14610afa578063d15bcf0f14610b2357610340565b8063b62496f514610a03578063bf9b015914610a40578063bf9eb54014610a6b57610340565b80639b136da411610164578063a6c38f591161013e578063a6c38f591461094b578063a7a0745214610974578063a9059cbb1461099d578063b4d95a93146109da57610340565b80639b136da4146108ca578063a04bdc81146108f5578063a5ece9411461092057610340565b8063893d20e8146107cc5780638cd0260c146107f75780638da5cb5b1461082057806390f502831461084b57806395d89b41146108765780639a7a23d6146108a157610340565b80634a0e963c116102855780636573c4df11610223578063715018a6116101fd578063715018a61461074c578063751039fc14610763578063801527ce1461077a5780638628c23f146107a357610340565b80636573c4df146106bb5780636df3333a146106e457806370a082311461070f57610340565b80634bd7ace51161025f5780634bd7ace5146106115780635297defd1461063c5780635be76f111461066757806364c161631461069057610340565b80634a0e963c146105925780634a62bb65146105bb5780634a74bb02146105e657610340565b806322788f86116102f25780632d03420b116102cc5780632d03420b146104e8578063313ce56714610511578063487a69051461053c57806349bd5a5e1461056757610340565b806322788f861461045557806323b872dd1461048057806327c8f835146104bd57610340565b806306fdde03146103455780630882a86314610370578063095ea7b31461039957806313b4a7f4146103d657806318160ddd146103ff578063220f66961461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610c85565b604051610367919061421e565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190613d9e565b610d17565b005b3480156103a557600080fd5b506103c060048036038101906103bb9190613cb1565b610d9d565b6040516103cd9190614203565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190613bde565b610dbb565b005b34801561040b57600080fd5b50610414610f9b565b6040516104219190614420565b60405180910390f35b34801561043657600080fd5b5061043f610fa5565b60405161044c9190614203565b60405180910390f35b34801561046157600080fd5b5061046a610fb8565b6040516104779190614420565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190613c1e565b610fc2565b6040516104b49190614203565b60405180910390f35b3480156104c957600080fd5b506104d2611140565b6040516104df9190614143565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a9190613cf1565b611164565b005b34801561051d57600080fd5b506105266111fd565b6040516105339190614420565b60405180910390f35b34801561054857600080fd5b50610551611217565b60405161055e9190614420565b60405180910390f35b34801561057357600080fd5b5061057c611221565b6040516105899190614143565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b49190613b17565b611247565b005b3480156105c757600080fd5b506105d061131e565b6040516105dd9190614203565b60405180910390f35b3480156105f257600080fd5b506105fb611331565b6040516106089190614203565b60405180910390f35b34801561061d57600080fd5b50610626611344565b6040516106339190614420565b60405180910390f35b34801561064857600080fd5b5061065161134e565b60405161065e9190614420565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190613b71565b611358565b005b34801561069c57600080fd5b506106a5611424565b6040516106b29190614420565b60405180910390f35b3480156106c757600080fd5b506106e260048036038101906106dd9190613d9e565b61142e565b005b3480156106f057600080fd5b506106f96114d6565b6040516107069190614420565b60405180910390f35b34801561071b57600080fd5b5061073660048036038101906107319190613b17565b6114e0565b6040516107439190614420565b60405180910390f35b34801561075857600080fd5b50610761611529565b005b34801561076f57600080fd5b506107786115b1565b005b34801561078657600080fd5b506107a1600480360381019061079c9190613cf1565b61164a565b005b3480156107af57600080fd5b506107ca60048036038101906107c59190613d9e565b6116e3565b005b3480156107d857600080fd5b506107e1611769565b6040516107ee9190614143565b60405180910390f35b34801561080357600080fd5b5061081e60048036038101906108199190613d9e565b611778565b005b34801561082c57600080fd5b506108356117fe565b6040516108429190614143565b60405180910390f35b34801561085757600080fd5b50610860611827565b60405161086d9190614420565b60405180910390f35b34801561088257600080fd5b5061088b611831565b604051610898919061421e565b60405180910390f35b3480156108ad57600080fd5b506108c860048036038101906108c39190613c71565b6118c3565b005b3480156108d657600080fd5b506108df6119de565b6040516108ec9190614420565b60405180910390f35b34801561090157600080fd5b5061090a6119e8565b6040516109179190614420565b60405180910390f35b34801561092c57600080fd5b506109356119ee565b604051610942919061415e565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d9190613b9e565b611a14565b005b34801561098057600080fd5b5061099b60048036038101906109969190613d9e565b611aeb565b005b3480156109a957600080fd5b506109c460048036038101906109bf9190613cb1565b611b93565b6040516109d19190614203565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc9190613b17565b611bb1565b005b348015610a0f57600080fd5b50610a2a6004803603810190610a259190613b17565b611c88565b604051610a379190614203565b60405180910390f35b348015610a4c57600080fd5b50610a55611ca8565b604051610a629190614420565b60405180910390f35b348015610a7757600080fd5b50610a926004803603810190610a8d9190613b17565b611cb2565b005b348015610aa057600080fd5b50610abb6004803603810190610ab69190613b17565b611d72565b005b348015610ac957600080fd5b50610ae46004803603810190610adf9190613b17565b611e49565b604051610af19190614203565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c9190613d9e565b611e9f565b005b348015610b2f57600080fd5b50610b38611f48565b604051610b459190614203565b60405180910390f35b348015610b5a57600080fd5b50610b756004803603810190610b709190613d9e565b611f5f565b005b348015610b8357600080fd5b50610b9e6004803603810190610b999190613bde565b611fe5565b604051610bab9190614420565b60405180910390f35b348015610bc057600080fd5b50610bc961206c565b604051610bd69190614420565b60405180910390f35b348015610beb57600080fd5b50610bf4612076565b604051610c019190614420565b60405180910390f35b348015610c1657600080fd5b50610c316004803603810190610c2c9190613d9e565b612080565b005b348015610c3f57600080fd5b50610c5a6004803603810190610c559190613b17565b612106565b005b348015610c6857600080fd5b50610c836004803603810190610c7e9190613d4b565b6121fe565b005b606060018054610c9490614777565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc090614777565b8015610d0d5780601f10610ce257610100808354040283529160200191610d0d565b820191906000526020600020905b815481529060010190602001808311610cf057829003601f168201915b5050505050905090565b610d1f61230d565b73ffffffffffffffffffffffffffffffffffffffff16610d3d6117fe565b73ffffffffffffffffffffffffffffffffffffffff1614610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a90614380565b60405180910390fd5b8060198190555050565b6000610db1610daa61230d565b8484612315565b6001905092915050565b610dc361230d565b73ffffffffffffffffffffffffffffffffffffffff16610de16117fe565b73ffffffffffffffffffffffffffffffffffffffff1614610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90614380565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600a54905090565b602260009054906101000a900460ff1681565b6000600954905090565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061100d61230d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561108a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108190614360565b60405180910390fd5b6110958484846124e0565b611135846110a161230d565b84600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110eb61230d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611130919061465c565b612315565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b61116c61230d565b73ffffffffffffffffffffffffffffffffffffffff1661118a6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790614380565b60405180910390fd5b80601d60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600b54905090565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61124f61230d565b73ffffffffffffffffffffffffffffffffffffffff1661126d6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90614380565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600860009054906101000a900460ff1681565b602260019054906101000a900460ff1681565b6000601954905090565b6000602054905090565b61136061230d565b73ffffffffffffffffffffffffffffffffffffffff1661137e6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90614380565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561141f573d6000803e3d6000fd5b505050565b6000602454905090565b61143661230d565b73ffffffffffffffffffffffffffffffffffffffff166114546117fe565b73ffffffffffffffffffffffffffffffffffffffff16146114aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a190614380565b60405180910390fd5b806005819055506064600554600a546114c39190614602565b6114cd91906145d1565b60138190555050565b6000600754905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61153161230d565b73ffffffffffffffffffffffffffffffffffffffff1661154f6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90614380565b60405180910390fd5b6115af6000613216565b565b6115b961230d565b73ffffffffffffffffffffffffffffffffffffffff166115d76117fe565b73ffffffffffffffffffffffffffffffffffffffff161461162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162490614380565b60405180910390fd5b6000600860006101000a81548160ff021916908315150217905550565b61165261230d565b73ffffffffffffffffffffffffffffffffffffffff166116706117fe565b73ffffffffffffffffffffffffffffffffffffffff16146116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90614380565b60405180910390fd5b80602260016101000a81548160ff02191690831515021790555050565b6116eb61230d565b73ffffffffffffffffffffffffffffffffffffffff166117096117fe565b73ffffffffffffffffffffffffffffffffffffffff161461175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690614380565b60405180910390fd5b8060208190555050565b60006117736117fe565b905090565b61178061230d565b73ffffffffffffffffffffffffffffffffffffffff1661179e6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb90614380565b60405180910390fd5b80601e8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601e54905090565b60606002805461184090614777565b80601f016020809104026020016040519081016040528092919081815260200182805461186c90614777565b80156118b95780601f1061188e576101008083540402835291602001916118b9565b820191906000526020600020905b81548152906001019060200180831161189c57829003601f168201915b5050505050905090565b6118cb61230d565b73ffffffffffffffffffffffffffffffffffffffff166118e96117fe565b73ffffffffffffffffffffffffffffffffffffffff161461193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690614380565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c7906142a0565b60405180910390fd5b6119da82826132da565b5050565b6000601b54905090565b600b5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a1c61230d565b73ffffffffffffffffffffffffffffffffffffffff16611a3a6117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8790614380565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611af361230d565b73ffffffffffffffffffffffffffffffffffffffff16611b116117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e90614380565b60405180910390fd5b806006819055506064600654600a54611b809190614602565b611b8a91906145d1565b60148190555050565b6000611ba7611ba061230d565b84846124e0565b6001905092915050565b611bb961230d565b73ffffffffffffffffffffffffffffffffffffffff16611bd76117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490614380565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000601454905090565b611cba61230d565b73ffffffffffffffffffffffffffffffffffffffff16611cd86117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590614380565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d7a61230d565b73ffffffffffffffffffffffffffffffffffffffff16611d986117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590614380565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611ea761230d565b73ffffffffffffffffffffffffffffffffffffffff16611ec56117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1290614380565b60405180910390fd5b806007819055506103e8600754600a54611f359190614602565b611f3f91906145d1565b600b8190555050565b6000601d60009054906101000a900460ff16905090565b611f6761230d565b73ffffffffffffffffffffffffffffffffffffffff16611f856117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd290614380565b60405180910390fd5b8060098190555050565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602354905090565b6000601354905090565b61208861230d565b73ffffffffffffffffffffffffffffffffffffffff166120a66117fe565b73ffffffffffffffffffffffffffffffffffffffff16146120fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f390614380565b60405180910390fd5b80601b8190555050565b61210e61230d565b73ffffffffffffffffffffffffffffffffffffffff1661212c6117fe565b73ffffffffffffffffffffffffffffffffffffffff1614612182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217990614380565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e990614260565b60405180910390fd5b6121fb81613216565b50565b61220661230d565b73ffffffffffffffffffffffffffffffffffffffff166122246117fe565b73ffffffffffffffffffffffffffffffffffffffff161461227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190614380565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016122b5929190614179565b602060405180830381600087803b1580156122cf57600080fd5b505af11580156122e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123079190613d1e565b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237c90614400565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ec90614280565b60405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124d39190614420565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612550576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612547906143e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b790614240565b60405180910390fd5b60008111612603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fa90614300565b60405180910390fd5b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561268a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612681906142c0565b60405180910390fd5b60001515601d60009054906101000a900460ff161515141561278757601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127475750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90614320565b60405180910390fd5b5b600860009054906101000a900460ff1615612b74576127a46117fe565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561281257506127e26117fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561284b5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612885575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612b7357601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561292d5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129d457601454821115612977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296e90614340565b60405180910390fd5b601354612983846114e0565b8361298e919061457b565b11156129cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c6906143a0565b60405180910390fd5b612b72565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a775750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ac657601454821115612ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab8906142e0565b60405180910390fd5b612b71565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b7057601354612b23846114e0565b83612b2e919061457b565b1115612b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b66906143a0565b60405180910390fd5b5b5b5b5b5b6000612b7f306114e0565b9050600b548110158015612ba05750602260009054906101000a900460ff16155b8015612bfa5750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612c125750602260019054906101000a900460ff165b15612c3057600b548110612c2f57600b549050612c2e8161337b565b5b5b600060019050600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cd75750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ce9576000600481905550600090505b6000808215612fe55760011515601560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612da1575060011515601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd8906143c0565b60405180910390fd5b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e885750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15612ee4576000600481905550606460205487612ea59190614602565b612eaf91906145d1565b91506064601e5487612ec19190614602565b612ecb91906145d1565b90508082612ed9919061457b565b600481905550612fe4565b601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f8b5750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612fe35760006004819055506064601b5487612fa89190614602565b612fb291906145d1565b9150606460195487612fc49190614602565b612fce91906145d1565b90508082612fdc919061457b565b6004819055505b5b5b8585612ff1919061465c565b600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808287613041919061465c565b61304b919061465c565b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613099919061457b565b925050819055506000811461319a57600454600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130f9919061457b565b925050819055508060246000828254613112919061457b565b92505081905550816023600082825461312b919061457b565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516131919190614420565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454896131f7919061465c565b6040516132049190614420565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602260006101000a81548160ff0219169083151502179055506133a1602454613411565b6133ac60235461349c565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904816040516133db9190614420565b60405180910390a1600060238190555060006024819055506000602260006101000a81548160ff02191690831515021790555050565b600060028261342091906145d1565b905060008183613430919061465c565b9050600047905061344083613710565b6000814761344e919061465c565b905061345a8382613962565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161348d939291906144ef565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156134b9576134b8614865565b5b6040519080825280602002602001820160405280156134e75781602001602082028036833780820191505090505b50905030816000815181106134ff576134fe614836565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156135a157600080fd5b505afa1580156135b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d99190613b44565b816001815181106135ed576135ec614836565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061365430602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612315565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016136da95949392919061443b565b600060405180830381600087803b1580156136f457600080fd5b505af1158015613708573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff81111561372d5761372c614865565b5b60405190808252806020026020018201604052801561375b5781602001602082028036833780820191505090505b509050308160008151811061377357613772614836565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561381557600080fd5b505afa158015613829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061384d9190613b44565b8160018151811061386157613860614836565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138c830602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612315565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161392c959493929190614495565b600060405180830381600087803b15801561394657600080fd5b505af115801561395a573d6000803e3d6000fd5b505050505050565b61398f30602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612315565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f000000000000000000000000000000000000000000000000000000000000dead426040518863ffffffff1660e01b8152600401613a16969594939291906141a2565b6060604051808303818588803b158015613a2f57600080fd5b505af1158015613a43573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a689190613dcb565b5050505050565b600081359050613a7e81614cb3565b92915050565b600081519050613a9381614cb3565b92915050565b600081359050613aa881614cca565b92915050565b600081359050613abd81614ce1565b92915050565b600081519050613ad281614ce1565b92915050565b600081359050613ae781614cf8565b92915050565b600081359050613afc81614d0f565b92915050565b600081519050613b1181614d0f565b92915050565b600060208284031215613b2d57613b2c614894565b5b6000613b3b84828501613a6f565b91505092915050565b600060208284031215613b5a57613b59614894565b5b6000613b6884828501613a84565b91505092915050565b600060208284031215613b8757613b86614894565b5b6000613b9584828501613a99565b91505092915050565b60008060408385031215613bb557613bb4614894565b5b6000613bc385828601613a99565b9250506020613bd485828601613aae565b9150509250929050565b60008060408385031215613bf557613bf4614894565b5b6000613c0385828601613a6f565b9250506020613c1485828601613a6f565b9150509250929050565b600080600060608486031215613c3757613c36614894565b5b6000613c4586828701613a6f565b9350506020613c5686828701613a6f565b9250506040613c6786828701613aed565b9150509250925092565b60008060408385031215613c8857613c87614894565b5b6000613c9685828601613a6f565b9250506020613ca785828601613aae565b9150509250929050565b60008060408385031215613cc857613cc7614894565b5b6000613cd685828601613a6f565b9250506020613ce785828601613aed565b9150509250929050565b600060208284031215613d0757613d06614894565b5b6000613d1584828501613aae565b91505092915050565b600060208284031215613d3457613d33614894565b5b6000613d4284828501613ac3565b91505092915050565b600080600060608486031215613d6457613d63614894565b5b6000613d7286828701613ad8565b9350506020613d8386828701613a99565b9250506040613d9486828701613aed565b9150509250925092565b600060208284031215613db457613db3614894565b5b6000613dc284828501613aed565b91505092915050565b600080600060608486031215613de457613de3614894565b5b6000613df286828701613b02565b9350506020613e0386828701613b02565b9250506040613e1486828701613b02565b9150509250925092565b6000613e2a8383613e54565b60208301905092915050565b613e3f816146fc565b82525050565b613e4e816146a2565b82525050565b613e5d81614690565b82525050565b613e6c81614690565b82525050565b6000613e7d82614536565b613e878185614559565b9350613e9283614526565b8060005b83811015613ec3578151613eaa8882613e1e565b9750613eb58361454c565b925050600181019050613e96565b5085935050505092915050565b613ed9816146b4565b82525050565b613ee88161470e565b82525050565b6000613ef982614541565b613f03818561456a565b9350613f13818560208601614744565b613f1c81614899565b840191505092915050565b6000613f3460238361456a565b9150613f3f826148aa565b604082019050919050565b6000613f5760268361456a565b9150613f62826148f9565b604082019050919050565b6000613f7a60228361456a565b9150613f8582614948565b604082019050919050565b6000613f9d60398361456a565b9150613fa882614997565b604082019050919050565b6000613fc060268361456a565b9150613fcb826149e6565b604082019050919050565b6000613fe360368361456a565b9150613fee82614a35565b604082019050919050565b600061400660328361456a565b915061401182614a84565b604082019050919050565b6000614029601d8361456a565b915061403482614ad3565b602082019050919050565b600061404c60358361456a565b915061405782614afc565b604082019050919050565b600061406f60288361456a565b915061407a82614b4b565b604082019050919050565b600061409260208361456a565b915061409d82614b9a565b602082019050919050565b60006140b5601b8361456a565b91506140c082614bc3565b602082019050919050565b60006140d860188361456a565b91506140e382614bec565b602082019050919050565b60006140fb60258361456a565b915061410682614c15565b604082019050919050565b600061411e60248361456a565b915061412982614c64565b604082019050919050565b61413d816146f2565b82525050565b60006020820190506141586000830184613e63565b92915050565b60006020820190506141736000830184613e45565b92915050565b600060408201905061418e6000830185613e36565b61419b6020830184614134565b9392505050565b600060c0820190506141b76000830189613e63565b6141c46020830188614134565b6141d16040830187613edf565b6141de6060830186613edf565b6141eb6080830185613e63565b6141f860a0830184614134565b979650505050505050565b60006020820190506142186000830184613ed0565b92915050565b600060208201905081810360008301526142388184613eee565b905092915050565b6000602082019050818103600083015261425981613f27565b9050919050565b6000602082019050818103600083015261427981613f4a565b9050919050565b6000602082019050818103600083015261429981613f6d565b9050919050565b600060208201905081810360008301526142b981613f90565b9050919050565b600060208201905081810360008301526142d981613fb3565b9050919050565b600060208201905081810360008301526142f981613fd6565b9050919050565b6000602082019050818103600083015261431981613ff9565b9050919050565b600060208201905081810360008301526143398161401c565b9050919050565b600060208201905081810360008301526143598161403f565b9050919050565b6000602082019050818103600083015261437981614062565b9050919050565b6000602082019050818103600083015261439981614085565b9050919050565b600060208201905081810360008301526143b9816140a8565b9050919050565b600060208201905081810360008301526143d9816140cb565b9050919050565b600060208201905081810360008301526143f9816140ee565b9050919050565b6000602082019050818103600083015261441981614111565b9050919050565b60006020820190506144356000830184614134565b92915050565b600060a0820190506144506000830188614134565b61445d6020830187613edf565b818103604083015261446f8186613e72565b905061447e6060830185613e36565b61448b6080830184614134565b9695505050505050565b600060a0820190506144aa6000830188614134565b6144b76020830187613edf565b81810360408301526144c98186613e72565b90506144d86060830185613e63565b6144e56080830184614134565b9695505050505050565b60006060820190506145046000830186614134565b6145116020830185614134565b61451e6040830184614134565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614586826146f2565b9150614591836146f2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145c6576145c56147a9565b5b828201905092915050565b60006145dc826146f2565b91506145e7836146f2565b9250826145f7576145f66147d8565b5b828204905092915050565b600061460d826146f2565b9150614618836146f2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614651576146506147a9565b5b828202905092915050565b6000614667826146f2565b9150614672836146f2565b925082821015614685576146846147a9565b5b828203905092915050565b600061469b826146d2565b9050919050565b60006146ad826146d2565b9050919050565b60008115159050919050565b60006146cb82614690565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061470782614720565b9050919050565b6000614719826146f2565b9050919050565b600061472b82614732565b9050919050565b600061473d826146d2565b9050919050565b60005b83811015614762578082015181840152602081019050614747565b83811115614771576000848401525b50505050565b6000600282049050600182168061478f57607f821691505b602082108114156147a3576147a2614807565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b7f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b614cbc81614690565b8114614cc757600080fd5b50565b614cd3816146a2565b8114614cde57600080fd5b50565b614cea816146b4565b8114614cf557600080fd5b50565b614d01816146c0565b8114614d0c57600080fd5b50565b614d18816146f2565b8114614d2357600080fd5b5056fea26469706673582212203ff0d4315cf65a26385ba94aa7e141bdcceb2bd40f9c2a01d534bf7f50d82f6564736f6c63430008070033
Deployed Bytecode Sourcemap
5417:15838:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9996:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20073:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9643:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18791:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9053:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7174:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11495:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10536:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7256:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16989:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9906:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21147:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7722:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18545:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5771:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7209:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11068:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11385:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16803:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8945:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10347:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21044:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9170:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4782:94;;;;;;;;;;;;;:::i;:::-;;9817:81;;;;;;;;;;;;;:::i;:::-;;19225:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20435:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8742:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20316:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4131:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11281:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10078:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19629:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11170:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5926:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6341:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10932:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10176:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9299:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18667:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6255:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20666:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19376:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16010:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11602:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20761:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20941:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19105:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9486:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8834:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20563:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20190:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5031:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16552:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9996:76;10035:13;10062:5;10055:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9996:76;:::o;20073:111::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20167:9:::1;20155;:21;;;;20073:111:::0;:::o;9643:168::-;9720:4;9740:37;9749:12;:10;:12::i;:::-;9762:7;9770:6;9740:8;:37::i;:::-;9799:4;9792:11;;9643:168;;;;:::o;18791:302::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18934:4:::1;18897:17;:34;18923:6;18897:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;18978:4;18949:17;:26;18967:7;18949:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19029:4;18993:16;:33;19018:6;18993:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;19072:4;19044:16;:25;19061:7;19044:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18791:302:::0;;:::o;9053:106::-;9108:7;9138:12;;9131:19;;9053:106;:::o;7174:28::-;;;;;;;;;;;;;:::o;11495:101::-;11546:7;11572:16;;11565:23;;11495:101;:::o;10536:388::-;10668:4;10702:11;:19;10714:6;10702:19;;;;;;;;;;;;;;;:33;10722:12;:10;:12::i;:::-;10702:33;;;;;;;;;;;;;;;;10692:6;:43;;10684:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;10785:36;10795:6;10803:9;10814:6;10785:9;:36::i;:::-;10826:74;10835:6;10843:12;:10;:12::i;:::-;10893:6;10857:11;:19;10869:6;10857:19;;;;;;;;;;;;;;;:33;10877:12;:10;:12::i;:::-;10857:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;10826:8;:74::i;:::-;10912:4;10905:11;;10536:388;;;;;:::o;7256:81::-;;;:::o;16989:90::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17065:6:::1;17050:12;;:21;;;;;;;;;;;;;;;;;;16989:90:::0;:::o;9906:84::-;9947:7;9973:9;;;;;;;;;;;9966:16;;;;9906:84;:::o;21147:105::-;21198:7;21224:20;;21217:27;;21147:105;:::o;7722:28::-;;;;;;;;;;;;;:::o;18545:114::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18647:4:::1;18616:17;:28;18634:9;18616:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18545:114:::0;:::o;5771:33::-;;;;;;;;;;;;;:::o;7209:40::-;;;;;;;;;;;;;:::o;11068:96::-;11117:7;11147:9;;11140:16;;11068:96;:::o;11385:98::-;11435:7;11465:10;;11458:17;;11385:98;:::o;16803:178::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16879:18:::1;16900:21;16879:42;;16940:11;16932:29;;:41;16962:10;16932:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16868:113;16803:178:::0;:::o;8945:99::-;8996:7;9026:9;;9019:16;;8945:99;:::o;10347:175::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10443:6:::1;10423:17;:26;;;;10509:3;10491:17;;10478:12;;:30;;;;:::i;:::-;:34;;;;:::i;:::-;10460:15;:52;;;;10347:175:::0;:::o;21044:97::-;21095:7;21121:12;;21114:19;;21044:97;:::o;9170:118::-;9236:7;9262:9;:18;9272:7;9262:18;;;;;;;;;;;;;;;;9255:25;;9170:118;;;:::o;4782:94::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4847:21:::1;4865:1;4847:9;:21::i;:::-;4782:94::o:0;9817:81::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9885:5:::1;9868:14;;:22;;;;;;;;;;;;;;;;;;9817:81::o:0;19225:113::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19322:8:::1;19298:21;;:32;;;;;;;;;;;;;;;;;;19225:113:::0;:::o;20435:112::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20530:9:::1;20518:10;:21;;;;20435:112:::0;:::o;8742:86::-;8783:7;8813;:5;:7::i;:::-;8806:14;;8742:86;:::o;20316:113::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20412:9:::1;20400:10;:21;;;;20316:113:::0;:::o;4131:87::-;4177:7;4204:6;;;;;;;;;;;4197:13;;4131:87;:::o;11281:98::-;11331:7;11361:10;;11354:17;;11281:98;:::o;10078:88::-;10119:13;10151:7;10144:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10078:88;:::o;19629:242::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19736:13:::1;;;;;;;;;;;19728:21;;:4;:21;;;;19720:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;19822:41;19851:4;19857:5;19822:28;:41::i;:::-;19629:242:::0;;:::o;11170:96::-;11219:7;11249:9;;11242:16;;11170:96;:::o;5926:71::-;;;;:::o;6341:93::-;;;;;;;;;;;;;:::o;10932:130::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11049:5:::1;11023:10;:23;11034:11;11023:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;10932:130:::0;;:::o;10176:164::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10264:6:::1;10248:13;:22;;;;10322:3;10308:13;;10295:12;;:26;;;;:::i;:::-;:30;;;;:::i;:::-;10281:11;:44;;;;10176:164:::0;:::o;9299:176::-;9379:4;9399:40;9409:12;:10;:12::i;:::-;9422:9;9432:6;9399:9;:40::i;:::-;9461:4;9454:11;;9299:176;;;;:::o;18667:116::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18770:5:::1;18740:17;:27;18758:8;18740:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18667:116:::0;:::o;6255:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;20666:89::-;20710:7;20736:11;;20729:18;;20666:89;:::o;19376:118::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19475:10:::1;19448:16;;:38;;;;;;;;;;;;;;;;;;19376:118:::0;:::o;16010:123::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16114:4:::1;16082:17;:29;16100:10;16082:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;16010:123:::0;:::o;11602:118::-;11659:4;11686:17;:26;11704:7;11686:26;;;;;;;;;;;;;;;;;;;;;;;;;11679:33;;11602:118;;;:::o;20761:174::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20847:6:::1;20832:12;:21;;;;20913:4;20900:12;;20887;;:25;;;;:::i;:::-;:30;;;;:::i;:::-;20864:20;:53;;;;20761:174:::0;:::o;20941:97::-;20992:4;21015:12;;;;;;;;;;;21008:19;;20941:97;:::o;19105:112::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19195:12:::1;19176:16;:31;;;;19105:112:::0;:::o;9486:148::-;9569:7;9599:11;:18;9611:5;9599:18;;;;;;;;;;;;;;;:27;9618:7;9599:27;;;;;;;;;;;;;;;;9592:34;;9486:148;;;;:::o;8834:99::-;8885:7;8915:9;;8908:16;;8834:99;:::o;20563:97::-;20611:7;20637:15;;20630:22;;20563:97;:::o;20190:111::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20284:9:::1;20273;:20;;;;20190:111:::0;:::o;5031:192::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5140:1:::1;5120:22;;:8;:22;;;;5112:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5196:19;5206:8;5196:9;:19::i;:::-;5031:192:::0;:::o;16552:243::-;4362:12;:10;:12::i;:::-;4351:23;;:7;:5;:7::i;:::-;:23;;;4343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16745:12:::1;:21;;;16767:11;16780:6;16745:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16552:243:::0;;;:::o;91:98::-;144:7;171:10;164:17;;91:98;:::o;18177:322::-;18286:1;18269:19;;:5;:19;;;;18261:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18361:1;18342:21;;:7;:21;;;;18334:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18439:6;18409:11;:18;18421:5;18409:18;;;;;;;;;;;;;;;:27;18428:7;18409:27;;;;;;;;;;;;;;;:36;;;;18471:7;18455:32;;18464:5;18455:32;;;18480:6;18455:32;;;;;;:::i;:::-;;;;;;;;18177:322;;;:::o;11728:4007::-;11842:1;11826:18;;:4;:18;;;;11818:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11913:1;11899:16;;:2;:16;;;;11891:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11983:1;11974:6;:10;11966:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12049:21;12073:9;:15;12083:4;12073:15;;;;;;;;;;;;;;;;12049:39;;12124:6;12107:13;:23;;12099:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12203:5;12187:21;;:12;;;;;;;;;;;:21;;;12184:141;;;12232:17;:21;12250:2;12232:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;12257:17;:23;12275:4;12257:23;;;;;;;;;;;;;;;;;;;;;;;;;12232:48;12224:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;12184:141;12370:14;;;;;;;;;;;12367:1075;;;12430:7;:5;:7::i;:::-;12422:15;;:4;:15;;;;:49;;;;;12464:7;:5;:7::i;:::-;12458:13;;:2;:13;;;;12422:49;:86;;;;;12506:1;12492:16;;:2;:16;;;;12422:86;:128;;;;;12543:6;12529:21;;:2;:21;;;;12422:128;12400:1031;;;12636:25;:31;12662:4;12636:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;12672:31;:35;12704:2;12672:35;;;;;;;;;;;;;;;;;;;;;;;;;12671:36;12636:71;12632:784;;;12750:11;;12740:6;:21;;12732:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;12876:15;;12859:13;12869:2;12859:9;:13::i;:::-;12850:6;:22;;;;:::i;:::-;:41;;12842:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;12632:784;;;13024:25;:29;13050:2;13024:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;13058:31;:37;13090:4;13058:37;;;;;;;;;;;;;;;;;;;;;;;;;13057:38;13024:71;13020:396;;;13138:11;;13128:6;:21;;13120:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;13020:396;;;13255:31;:35;13287:2;13255:35;;;;;;;;;;;;;;;;;;;;;;;;;13251:165;;13349:15;;13332:13;13342:2;13332:9;:13::i;:::-;13323:6;:22;;;;:::i;:::-;:41;;13315:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;13251:165;13020:396;12632:784;12400:1031;12367:1075;13453:25;13481:24;13499:4;13481:9;:24::i;:::-;13453:52;;13541:20;;13521:17;:40;;:66;;;;;13571:16;;;;;;;;;;;13570:17;13521:66;:96;;;;;13604:13;;;;;;;;;;;13596:21;;:4;:21;;;;13521:96;:126;;;;;13626:21;;;;;;;;;;;13521:126;13518:352;;;13691:20;;13670:17;:41;13667:188;;13756:20;;13736:40;;13799:36;13817:17;13799;:36::i;:::-;13667:188;13518:352;13886:13;13902:4;13886:20;;13952:17;:23;13970:4;13952:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;13979:17;:21;13997:2;13979:21;;;;;;;;;;;;;;;;;;;;;;;;;13952:48;13949:159;;;14037:1;14021:13;:17;;;;14068:5;14057:16;;13949:159;14122:17;14165;14243:8;14240:1023;;;14340:4;14320:24;;:10;:16;14331:4;14320:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;:46;;;;14362:4;14346:20;;:10;:14;14357:2;14346:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;14320:46;14317:127;;;14390:34;;;;;;;;;;:::i;:::-;;;;;;;;14317:127;14498:25;:29;14524:2;14498:29;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;14545:7;;;;;;;;;;;14531:22;;:2;:22;;;;14498:55;14494:734;;;14598:1;14582:13;:17;;;;14658:3;14647:10;;14638:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;14626:35;;14720:3;14709:10;;14700:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;14688:35;;14804:9;14792;:21;;;;:::i;:::-;14776:13;:37;;;;14494:734;;;14888:25;:31;14914:4;14888:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;14939:7;;;;;;;;;;;14923:24;;:4;:24;;;;14888:59;14885:343;;;15010:1;14994:13;:17;;;;15065:3;15055:9;;15046:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;15034:34;;15122:3;15112:9;;15103:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;15091:34;;15198:9;15186;:21;;;;:::i;:::-;15170:13;:37;;;;14885:343;14494:734;14240:1023;15313:6;15297:13;:22;;;;:::i;:::-;15279:9;:15;15289:4;15279:15;;;;;;;;;;;;;;;:40;;;;15372:9;15360;15351:6;:18;;;;:::i;:::-;:30;;;;:::i;:::-;15334:9;:13;15344:2;15334:13;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;15412:1;15399:9;:14;15396:249;;15449:13;;15421:9;:24;15439:4;15421:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;15520:9;15507;;:22;;;;;;;:::i;:::-;;;;;;;;15557:9;15544;;:22;;;;;;;:::i;:::-;;;;;;;;15600:4;15577:44;;15586:4;15577:44;;;15607:13;;15577:44;;;;;;:::i;:::-;;;;;;;;15396:249;15679:2;15664:39;;15673:4;15664:39;;;15689:13;;15682:6;:20;;;;:::i;:::-;15664:39;;;;;;:::i;:::-;;;;;;;;11797:3938;;;;;11728:4007;;;:::o;5231:173::-;5287:16;5306:6;;;;;;;;;;;5287:25;;5332:8;5323:6;;:17;;;;;;;;;;;;;;;;;;5387:8;5356:40;;5377:8;5356:40;;;;;;;;;;;;5276:128;5231:173;:::o;19877:188::-;19994:5;19960:25;:31;19986:4;19960:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20051:5;20017:40;;20045:4;20017:40;;;;;;;;;;;;19877:188;;:::o;15741:262::-;7829:4;7810:16;;:23;;;;;;;;;;;;;;;;;;15821:25:::1;15836:9;;15821:14;:25::i;:::-;15857:30;15877:9;;15857:19;:30::i;:::-;15903:44;15933:13;15903:44;;;;;;:::i;:::-;;;;;;;;15970:1;15958:9;:13;;;;15994:1;15982:9;:13;;;;7863:5:::0;7844:16;;:24;;;;;;;;;;;;;;;;;;15741:262;:::o;17087:388::-;17149:12;17182:1;17164:15;:19;;;;:::i;:::-;17149:34;;17188:17;17226:4;17208:15;:22;;;;:::i;:::-;17188:42;;17235:22;17260:21;17235:46;;17288:22;17305:4;17288:16;:22::i;:::-;17315:18;17361:14;17336:21;:40;;;;:::i;:::-;17315:61;;17384:35;17397:9;17408:10;17384:12;:35::i;:::-;17429:41;17444:4;17449:10;17460:9;17429:41;;;;;;;;:::i;:::-;;;;;;;;17144:331;;;;17087:388;:::o;16139:399::-;16202:21;16240:1;16226:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16202:40;;16265:4;16247;16252:1;16247:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16285:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16275:4;16280:1;16275:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;16304:49;16321:4;16336:7;;;;;;;;;;;16346:6;16304:8;:49::i;:::-;16364:7;;;;;;;;;;;:58;;;16428:6;16440:1;16476:4;16486:16;;;;;;;;;;;16508:15;16364:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16191:347;16139:399;:::o;17483:397::-;17542:21;17580:1;17566:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17542:40;;17605:4;17587;17592:1;17587:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17625:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17615:4;17620:1;17615:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;17644:54;17661:4;17676:7;;;;;;;;;;;17686:11;17644:8;:54::i;:::-;17709:7;;;;;;;;;;;:58;;;17773:11;17790:1;17826:4;17844;17855:15;17709:166;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17537:343;17483:397;:::o;17892:277::-;17965:54;17982:4;17997:7;;;;;;;;;;;18007:11;17965:8;:54::i;:::-;18026:7;;;;;;;;;;;:23;;;18056:9;18080:4;18091:11;18108:1;18115;18122:11;18144:15;18026:138;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17892:277;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:137::-;655:5;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;601:137;;;;:::o;744:165::-;803:5;841:6;828:20;819:29;;857:46;897:5;857:46;:::i;:::-;744:165;;;;:::o;915:139::-;961:5;999:6;986:20;977:29;;1015:33;1042:5;1015:33;:::i;:::-;915:139;;;;:::o;1060:143::-;1117:5;1148:6;1142:13;1133:22;;1164:33;1191:5;1164:33;:::i;:::-;1060:143;;;;:::o;1209:329::-;1268:6;1317:2;1305:9;1296:7;1292:23;1288:32;1285:119;;;1323:79;;:::i;:::-;1285:119;1443:1;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1414:117;1209:329;;;;:::o;1544:351::-;1614:6;1663:2;1651:9;1642:7;1638:23;1634:32;1631:119;;;1669:79;;:::i;:::-;1631:119;1789:1;1814:64;1870:7;1861:6;1850:9;1846:22;1814:64;:::i;:::-;1804:74;;1760:128;1544:351;;;;:::o;1901:345::-;1968:6;2017:2;2005:9;1996:7;1992:23;1988:32;1985:119;;;2023:79;;:::i;:::-;1985:119;2143:1;2168:61;2221:7;2212:6;2201:9;2197:22;2168:61;:::i;:::-;2158:71;;2114:125;1901:345;;;;:::o;2252:484::-;2325:6;2333;2382:2;2370:9;2361:7;2357:23;2353:32;2350:119;;;2388:79;;:::i;:::-;2350:119;2508:1;2533:61;2586:7;2577:6;2566:9;2562:22;2533:61;:::i;:::-;2523:71;;2479:125;2643:2;2669:50;2711:7;2702:6;2691:9;2687:22;2669:50;:::i;:::-;2659:60;;2614:115;2252:484;;;;;:::o;2742:474::-;2810:6;2818;2867:2;2855:9;2846:7;2842:23;2838:32;2835:119;;;2873:79;;:::i;:::-;2835:119;2993:1;3018:53;3063:7;3054:6;3043:9;3039:22;3018:53;:::i;:::-;3008:63;;2964:117;3120:2;3146:53;3191:7;3182:6;3171:9;3167:22;3146:53;:::i;:::-;3136:63;;3091:118;2742:474;;;;;:::o;3222:619::-;3299:6;3307;3315;3364:2;3352:9;3343:7;3339:23;3335:32;3332:119;;;3370:79;;:::i;:::-;3332:119;3490:1;3515:53;3560:7;3551:6;3540:9;3536:22;3515:53;:::i;:::-;3505:63;;3461:117;3617:2;3643:53;3688:7;3679:6;3668:9;3664:22;3643:53;:::i;:::-;3633:63;;3588:118;3745:2;3771:53;3816:7;3807:6;3796:9;3792:22;3771:53;:::i;:::-;3761:63;;3716:118;3222:619;;;;;:::o;3847:468::-;3912:6;3920;3969:2;3957:9;3948:7;3944:23;3940:32;3937:119;;;3975:79;;:::i;:::-;3937:119;4095:1;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4066:117;4222:2;4248:50;4290:7;4281:6;4270:9;4266:22;4248:50;:::i;:::-;4238:60;;4193:115;3847:468;;;;;:::o;4321:474::-;4389:6;4397;4446:2;4434:9;4425:7;4421:23;4417:32;4414:119;;;4452:79;;:::i;:::-;4414:119;4572:1;4597:53;4642:7;4633:6;4622:9;4618:22;4597:53;:::i;:::-;4587:63;;4543:117;4699:2;4725:53;4770:7;4761:6;4750:9;4746:22;4725:53;:::i;:::-;4715:63;;4670:118;4321:474;;;;;:::o;4801:323::-;4857:6;4906:2;4894:9;4885:7;4881:23;4877:32;4874:119;;;4912:79;;:::i;:::-;4874:119;5032:1;5057:50;5099:7;5090:6;5079:9;5075:22;5057:50;:::i;:::-;5047:60;;5003:114;4801:323;;;;:::o;5130:345::-;5197:6;5246:2;5234:9;5225:7;5221:23;5217:32;5214:119;;;5252:79;;:::i;:::-;5214:119;5372:1;5397:61;5450:7;5441:6;5430:9;5426:22;5397:61;:::i;:::-;5387:71;;5343:125;5130:345;;;;:::o;5481:661::-;5579:6;5587;5595;5644:2;5632:9;5623:7;5619:23;5615:32;5612:119;;;5650:79;;:::i;:::-;5612:119;5770:1;5795:66;5853:7;5844:6;5833:9;5829:22;5795:66;:::i;:::-;5785:76;;5741:130;5910:2;5936:61;5989:7;5980:6;5969:9;5965:22;5936:61;:::i;:::-;5926:71;;5881:126;6046:2;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6017:118;5481:661;;;;;:::o;6148:329::-;6207:6;6256:2;6244:9;6235:7;6231:23;6227:32;6224:119;;;6262:79;;:::i;:::-;6224:119;6382:1;6407:53;6452:7;6443:6;6432:9;6428:22;6407:53;:::i;:::-;6397:63;;6353:117;6148:329;;;;:::o;6483:663::-;6571:6;6579;6587;6636:2;6624:9;6615:7;6611:23;6607:32;6604:119;;;6642:79;;:::i;:::-;6604:119;6762:1;6787:64;6843:7;6834:6;6823:9;6819:22;6787:64;:::i;:::-;6777:74;;6733:128;6900:2;6926:64;6982:7;6973:6;6962:9;6958:22;6926:64;:::i;:::-;6916:74;;6871:129;7039:2;7065:64;7121:7;7112:6;7101:9;7097:22;7065:64;:::i;:::-;7055:74;;7010:129;6483:663;;;;;:::o;7152:179::-;7221:10;7242:46;7284:3;7276:6;7242:46;:::i;:::-;7320:4;7315:3;7311:14;7297:28;;7152:179;;;;:::o;7337:147::-;7432:45;7471:5;7432:45;:::i;:::-;7427:3;7420:58;7337:147;;:::o;7490:142::-;7593:32;7619:5;7593:32;:::i;:::-;7588:3;7581:45;7490:142;;:::o;7638:108::-;7715:24;7733:5;7715:24;:::i;:::-;7710:3;7703:37;7638:108;;:::o;7752:118::-;7839:24;7857:5;7839:24;:::i;:::-;7834:3;7827:37;7752:118;;:::o;7906:732::-;8025:3;8054:54;8102:5;8054:54;:::i;:::-;8124:86;8203:6;8198:3;8124:86;:::i;:::-;8117:93;;8234:56;8284:5;8234:56;:::i;:::-;8313:7;8344:1;8329:284;8354:6;8351:1;8348:13;8329:284;;;8430:6;8424:13;8457:63;8516:3;8501:13;8457:63;:::i;:::-;8450:70;;8543:60;8596:6;8543:60;:::i;:::-;8533:70;;8389:224;8376:1;8373;8369:9;8364:14;;8329:284;;;8333:14;8629:3;8622:10;;8030:608;;;7906:732;;;;:::o;8644:109::-;8725:21;8740:5;8725:21;:::i;:::-;8720:3;8713:34;8644:109;;:::o;8759:147::-;8854:45;8893:5;8854:45;:::i;:::-;8849:3;8842:58;8759:147;;:::o;8912:364::-;9000:3;9028:39;9061:5;9028:39;:::i;:::-;9083:71;9147:6;9142:3;9083:71;:::i;:::-;9076:78;;9163:52;9208:6;9203:3;9196:4;9189:5;9185:16;9163:52;:::i;:::-;9240:29;9262:6;9240:29;:::i;:::-;9235:3;9231:39;9224:46;;9004:272;8912:364;;;;:::o;9282:366::-;9424:3;9445:67;9509:2;9504:3;9445:67;:::i;:::-;9438:74;;9521:93;9610:3;9521:93;:::i;:::-;9639:2;9634:3;9630:12;9623:19;;9282:366;;;:::o;9654:::-;9796:3;9817:67;9881:2;9876:3;9817:67;:::i;:::-;9810:74;;9893:93;9982:3;9893:93;:::i;:::-;10011:2;10006:3;10002:12;9995:19;;9654:366;;;:::o;10026:::-;10168:3;10189:67;10253:2;10248:3;10189:67;:::i;:::-;10182:74;;10265:93;10354:3;10265:93;:::i;:::-;10383:2;10378:3;10374:12;10367:19;;10026:366;;;:::o;10398:::-;10540:3;10561:67;10625:2;10620:3;10561:67;:::i;:::-;10554:74;;10637:93;10726:3;10637:93;:::i;:::-;10755:2;10750:3;10746:12;10739:19;;10398:366;;;:::o;10770:::-;10912:3;10933:67;10997:2;10992:3;10933:67;:::i;:::-;10926:74;;11009:93;11098:3;11009:93;:::i;:::-;11127:2;11122:3;11118:12;11111:19;;10770:366;;;:::o;11142:::-;11284:3;11305:67;11369:2;11364:3;11305:67;:::i;:::-;11298:74;;11381:93;11470:3;11381:93;:::i;:::-;11499:2;11494:3;11490:12;11483:19;;11142:366;;;:::o;11514:::-;11656:3;11677:67;11741:2;11736:3;11677:67;:::i;:::-;11670:74;;11753:93;11842:3;11753:93;:::i;:::-;11871:2;11866:3;11862:12;11855:19;;11514:366;;;:::o;11886:::-;12028:3;12049:67;12113:2;12108:3;12049:67;:::i;:::-;12042:74;;12125:93;12214:3;12125:93;:::i;:::-;12243:2;12238:3;12234:12;12227:19;;11886:366;;;:::o;12258:::-;12400:3;12421:67;12485:2;12480:3;12421:67;:::i;:::-;12414:74;;12497:93;12586:3;12497:93;:::i;:::-;12615:2;12610:3;12606:12;12599:19;;12258:366;;;:::o;12630:::-;12772:3;12793:67;12857:2;12852:3;12793:67;:::i;:::-;12786:74;;12869:93;12958:3;12869:93;:::i;:::-;12987:2;12982:3;12978:12;12971:19;;12630:366;;;:::o;13002:::-;13144:3;13165:67;13229:2;13224:3;13165:67;:::i;:::-;13158:74;;13241:93;13330:3;13241:93;:::i;:::-;13359:2;13354:3;13350:12;13343:19;;13002:366;;;:::o;13374:::-;13516:3;13537:67;13601:2;13596:3;13537:67;:::i;:::-;13530:74;;13613:93;13702:3;13613:93;:::i;:::-;13731:2;13726:3;13722:12;13715:19;;13374:366;;;:::o;13746:::-;13888:3;13909:67;13973:2;13968:3;13909:67;:::i;:::-;13902:74;;13985:93;14074:3;13985:93;:::i;:::-;14103:2;14098:3;14094:12;14087:19;;13746:366;;;:::o;14118:::-;14260:3;14281:67;14345:2;14340:3;14281:67;:::i;:::-;14274:74;;14357:93;14446:3;14357:93;:::i;:::-;14475:2;14470:3;14466:12;14459:19;;14118:366;;;:::o;14490:::-;14632:3;14653:67;14717:2;14712:3;14653:67;:::i;:::-;14646:74;;14729:93;14818:3;14729:93;:::i;:::-;14847:2;14842:3;14838:12;14831:19;;14490:366;;;:::o;14862:118::-;14949:24;14967:5;14949:24;:::i;:::-;14944:3;14937:37;14862:118;;:::o;14986:222::-;15079:4;15117:2;15106:9;15102:18;15094:26;;15130:71;15198:1;15187:9;15183:17;15174:6;15130:71;:::i;:::-;14986:222;;;;:::o;15214:254::-;15323:4;15361:2;15350:9;15346:18;15338:26;;15374:87;15458:1;15447:9;15443:17;15434:6;15374:87;:::i;:::-;15214:254;;;;:::o;15474:348::-;15603:4;15641:2;15630:9;15626:18;15618:26;;15654:79;15730:1;15719:9;15715:17;15706:6;15654:79;:::i;:::-;15743:72;15811:2;15800:9;15796:18;15787:6;15743:72;:::i;:::-;15474:348;;;;;:::o;15828:807::-;16077:4;16115:3;16104:9;16100:19;16092:27;;16129:71;16197:1;16186:9;16182:17;16173:6;16129:71;:::i;:::-;16210:72;16278:2;16267:9;16263:18;16254:6;16210:72;:::i;:::-;16292:80;16368:2;16357:9;16353:18;16344:6;16292:80;:::i;:::-;16382;16458:2;16447:9;16443:18;16434:6;16382:80;:::i;:::-;16472:73;16540:3;16529:9;16525:19;16516:6;16472:73;:::i;:::-;16555;16623:3;16612:9;16608:19;16599:6;16555:73;:::i;:::-;15828:807;;;;;;;;;:::o;16641:210::-;16728:4;16766:2;16755:9;16751:18;16743:26;;16779:65;16841:1;16830:9;16826:17;16817:6;16779:65;:::i;:::-;16641:210;;;;:::o;16857:313::-;16970:4;17008:2;16997:9;16993:18;16985:26;;17057:9;17051:4;17047:20;17043:1;17032:9;17028:17;17021:47;17085:78;17158:4;17149:6;17085:78;:::i;:::-;17077:86;;16857:313;;;;:::o;17176:419::-;17342:4;17380:2;17369:9;17365:18;17357:26;;17429:9;17423:4;17419:20;17415:1;17404:9;17400:17;17393:47;17457:131;17583:4;17457:131;:::i;:::-;17449:139;;17176:419;;;:::o;17601:::-;17767:4;17805:2;17794:9;17790:18;17782:26;;17854:9;17848:4;17844:20;17840:1;17829:9;17825:17;17818:47;17882:131;18008:4;17882:131;:::i;:::-;17874:139;;17601:419;;;:::o;18026:::-;18192:4;18230:2;18219:9;18215:18;18207:26;;18279:9;18273:4;18269:20;18265:1;18254:9;18250:17;18243:47;18307:131;18433:4;18307:131;:::i;:::-;18299:139;;18026:419;;;:::o;18451:::-;18617:4;18655:2;18644:9;18640:18;18632:26;;18704:9;18698:4;18694:20;18690:1;18679:9;18675:17;18668:47;18732:131;18858:4;18732:131;:::i;:::-;18724:139;;18451:419;;;:::o;18876:::-;19042:4;19080:2;19069:9;19065:18;19057:26;;19129:9;19123:4;19119:20;19115:1;19104:9;19100:17;19093:47;19157:131;19283:4;19157:131;:::i;:::-;19149:139;;18876:419;;;:::o;19301:::-;19467:4;19505:2;19494:9;19490:18;19482:26;;19554:9;19548:4;19544:20;19540:1;19529:9;19525:17;19518:47;19582:131;19708:4;19582:131;:::i;:::-;19574:139;;19301:419;;;:::o;19726:::-;19892:4;19930:2;19919:9;19915:18;19907:26;;19979:9;19973:4;19969:20;19965:1;19954:9;19950:17;19943:47;20007:131;20133:4;20007:131;:::i;:::-;19999:139;;19726:419;;;:::o;20151:::-;20317:4;20355:2;20344:9;20340:18;20332:26;;20404:9;20398:4;20394:20;20390:1;20379:9;20375:17;20368:47;20432:131;20558:4;20432:131;:::i;:::-;20424:139;;20151:419;;;:::o;20576:::-;20742:4;20780:2;20769:9;20765:18;20757:26;;20829:9;20823:4;20819:20;20815:1;20804:9;20800:17;20793:47;20857:131;20983:4;20857:131;:::i;:::-;20849:139;;20576:419;;;:::o;21001:::-;21167:4;21205:2;21194:9;21190:18;21182:26;;21254:9;21248:4;21244:20;21240:1;21229:9;21225:17;21218:47;21282:131;21408:4;21282:131;:::i;:::-;21274:139;;21001:419;;;:::o;21426:::-;21592:4;21630:2;21619:9;21615:18;21607:26;;21679:9;21673:4;21669:20;21665:1;21654:9;21650:17;21643:47;21707:131;21833:4;21707:131;:::i;:::-;21699:139;;21426:419;;;:::o;21851:::-;22017:4;22055:2;22044:9;22040:18;22032:26;;22104:9;22098:4;22094:20;22090:1;22079:9;22075:17;22068:47;22132:131;22258:4;22132:131;:::i;:::-;22124:139;;21851:419;;;:::o;22276:::-;22442:4;22480:2;22469:9;22465:18;22457:26;;22529:9;22523:4;22519:20;22515:1;22504:9;22500:17;22493:47;22557:131;22683:4;22557:131;:::i;:::-;22549:139;;22276:419;;;:::o;22701:::-;22867:4;22905:2;22894:9;22890:18;22882:26;;22954:9;22948:4;22944:20;22940:1;22929:9;22925:17;22918:47;22982:131;23108:4;22982:131;:::i;:::-;22974:139;;22701:419;;;:::o;23126:::-;23292:4;23330:2;23319:9;23315:18;23307:26;;23379:9;23373:4;23369:20;23365:1;23354:9;23350:17;23343:47;23407:131;23533:4;23407:131;:::i;:::-;23399:139;;23126:419;;;:::o;23551:222::-;23644:4;23682:2;23671:9;23667:18;23659:26;;23695:71;23763:1;23752:9;23748:17;23739:6;23695:71;:::i;:::-;23551:222;;;;:::o;23779:847::-;24050:4;24088:3;24077:9;24073:19;24065:27;;24102:71;24170:1;24159:9;24155:17;24146:6;24102:71;:::i;:::-;24183:80;24259:2;24248:9;24244:18;24235:6;24183:80;:::i;:::-;24310:9;24304:4;24300:20;24295:2;24284:9;24280:18;24273:48;24338:108;24441:4;24432:6;24338:108;:::i;:::-;24330:116;;24456:80;24532:2;24521:9;24517:18;24508:6;24456:80;:::i;:::-;24546:73;24614:3;24603:9;24599:19;24590:6;24546:73;:::i;:::-;23779:847;;;;;;;;:::o;24632:831::-;24895:4;24933:3;24922:9;24918:19;24910:27;;24947:71;25015:1;25004:9;25000:17;24991:6;24947:71;:::i;:::-;25028:80;25104:2;25093:9;25089:18;25080:6;25028:80;:::i;:::-;25155:9;25149:4;25145:20;25140:2;25129:9;25125:18;25118:48;25183:108;25286:4;25277:6;25183:108;:::i;:::-;25175:116;;25301:72;25369:2;25358:9;25354:18;25345:6;25301:72;:::i;:::-;25383:73;25451:3;25440:9;25436:19;25427:6;25383:73;:::i;:::-;24632:831;;;;;;;;:::o;25469:442::-;25618:4;25656:2;25645:9;25641:18;25633:26;;25669:71;25737:1;25726:9;25722:17;25713:6;25669:71;:::i;:::-;25750:72;25818:2;25807:9;25803:18;25794:6;25750:72;:::i;:::-;25832;25900:2;25889:9;25885:18;25876:6;25832:72;:::i;:::-;25469:442;;;;;;:::o;25998:132::-;26065:4;26088:3;26080:11;;26118:4;26113:3;26109:14;26101:22;;25998:132;;;:::o;26136:114::-;26203:6;26237:5;26231:12;26221:22;;26136:114;;;:::o;26256:99::-;26308:6;26342:5;26336:12;26326:22;;26256:99;;;:::o;26361:113::-;26431:4;26463;26458:3;26454:14;26446:22;;26361:113;;;:::o;26480:184::-;26579:11;26613:6;26608:3;26601:19;26653:4;26648:3;26644:14;26629:29;;26480:184;;;;:::o;26670:169::-;26754:11;26788:6;26783:3;26776:19;26828:4;26823:3;26819:14;26804:29;;26670:169;;;;:::o;26845:305::-;26885:3;26904:20;26922:1;26904:20;:::i;:::-;26899:25;;26938:20;26956:1;26938:20;:::i;:::-;26933:25;;27092:1;27024:66;27020:74;27017:1;27014:81;27011:107;;;27098:18;;:::i;:::-;27011:107;27142:1;27139;27135:9;27128:16;;26845:305;;;;:::o;27156:185::-;27196:1;27213:20;27231:1;27213:20;:::i;:::-;27208:25;;27247:20;27265:1;27247:20;:::i;:::-;27242:25;;27286:1;27276:35;;27291:18;;:::i;:::-;27276:35;27333:1;27330;27326:9;27321:14;;27156:185;;;;:::o;27347:348::-;27387:7;27410:20;27428:1;27410:20;:::i;:::-;27405:25;;27444:20;27462:1;27444:20;:::i;:::-;27439:25;;27632:1;27564:66;27560:74;27557:1;27554:81;27549:1;27542:9;27535:17;27531:105;27528:131;;;27639:18;;:::i;:::-;27528:131;27687:1;27684;27680:9;27669:20;;27347:348;;;;:::o;27701:191::-;27741:4;27761:20;27779:1;27761:20;:::i;:::-;27756:25;;27795:20;27813:1;27795:20;:::i;:::-;27790:25;;27834:1;27831;27828:8;27825:34;;;27839:18;;:::i;:::-;27825:34;27884:1;27881;27877:9;27869:17;;27701:191;;;;:::o;27898:96::-;27935:7;27964:24;27982:5;27964:24;:::i;:::-;27953:35;;27898:96;;;:::o;28000:104::-;28045:7;28074:24;28092:5;28074:24;:::i;:::-;28063:35;;28000:104;;;:::o;28110:90::-;28144:7;28187:5;28180:13;28173:21;28162:32;;28110:90;;;:::o;28206:109::-;28256:7;28285:24;28303:5;28285:24;:::i;:::-;28274:35;;28206:109;;;:::o;28321:126::-;28358:7;28398:42;28391:5;28387:54;28376:65;;28321:126;;;:::o;28453:77::-;28490:7;28519:5;28508:16;;28453:77;;;:::o;28536:134::-;28594:9;28627:37;28658:5;28627:37;:::i;:::-;28614:50;;28536:134;;;:::o;28676:121::-;28734:9;28767:24;28785:5;28767:24;:::i;:::-;28754:37;;28676:121;;;:::o;28803:126::-;28853:9;28886:37;28917:5;28886:37;:::i;:::-;28873:50;;28803:126;;;:::o;28935:113::-;28985:9;29018:24;29036:5;29018:24;:::i;:::-;29005:37;;28935:113;;;:::o;29054:307::-;29122:1;29132:113;29146:6;29143:1;29140:13;29132:113;;;29231:1;29226:3;29222:11;29216:18;29212:1;29207:3;29203:11;29196:39;29168:2;29165:1;29161:10;29156:15;;29132:113;;;29263:6;29260:1;29257:13;29254:101;;;29343:1;29334:6;29329:3;29325:16;29318:27;29254:101;29103:258;29054:307;;;:::o;29367:320::-;29411:6;29448:1;29442:4;29438:12;29428:22;;29495:1;29489:4;29485:12;29516:18;29506:81;;29572:4;29564:6;29560:17;29550:27;;29506:81;29634:2;29626:6;29623:14;29603:18;29600:38;29597:84;;;29653:18;;:::i;:::-;29597:84;29418:269;29367:320;;;:::o;29693:180::-;29741:77;29738:1;29731:88;29838:4;29835:1;29828:15;29862:4;29859:1;29852:15;29879:180;29927:77;29924:1;29917:88;30024:4;30021:1;30014:15;30048:4;30045:1;30038:15;30065:180;30113:77;30110:1;30103:88;30210:4;30207:1;30200:15;30234:4;30231:1;30224:15;30251:180;30299:77;30296:1;30289:88;30396:4;30393:1;30386:15;30420:4;30417:1;30410:15;30437:180;30485:77;30482:1;30475:88;30582:4;30579:1;30572:15;30606:4;30603:1;30596:15;30746:117;30855:1;30852;30845:12;30869:102;30910:6;30961:2;30957:7;30952:2;30945:5;30941:14;30937:28;30927:38;;30869:102;;;:::o;30977:222::-;31117:34;31113:1;31105:6;31101:14;31094:58;31186:5;31181:2;31173:6;31169:15;31162:30;30977:222;:::o;31205:225::-;31345:34;31341:1;31333:6;31329:14;31322:58;31414:8;31409:2;31401:6;31397:15;31390:33;31205:225;:::o;31436:221::-;31576:34;31572:1;31564:6;31560:14;31553:58;31645:4;31640:2;31632:6;31628:15;31621:29;31436:221;:::o;31663:244::-;31803:34;31799:1;31791:6;31787:14;31780:58;31872:27;31867:2;31859:6;31855:15;31848:52;31663:244;:::o;31913:225::-;32053:34;32049:1;32041:6;32037:14;32030:58;32122:8;32117:2;32109:6;32105:15;32098:33;31913:225;:::o;32144:241::-;32284:34;32280:1;32272:6;32268:14;32261:58;32353:24;32348:2;32340:6;32336:15;32329:49;32144:241;:::o;32391:237::-;32531:34;32527:1;32519:6;32515:14;32508:58;32600:20;32595:2;32587:6;32583:15;32576:45;32391:237;:::o;32634:179::-;32774:31;32770:1;32762:6;32758:14;32751:55;32634:179;:::o;32819:240::-;32959:34;32955:1;32947:6;32943:14;32936:58;33028:23;33023:2;33015:6;33011:15;33004:48;32819:240;:::o;33065:227::-;33205:34;33201:1;33193:6;33189:14;33182:58;33274:10;33269:2;33261:6;33257:15;33250:35;33065:227;:::o;33298:182::-;33438:34;33434:1;33426:6;33422:14;33415:58;33298:182;:::o;33486:177::-;33626:29;33622:1;33614:6;33610:14;33603:53;33486:177;:::o;33669:174::-;33809:26;33805:1;33797:6;33793:14;33786:50;33669:174;:::o;33849:224::-;33989:34;33985:1;33977:6;33973:14;33966:58;34058:7;34053:2;34045:6;34041:15;34034:32;33849:224;:::o;34079:223::-;34219:34;34215:1;34207:6;34203:14;34196:58;34288:6;34283:2;34275:6;34271:15;34264:31;34079:223;:::o;34308:122::-;34381:24;34399:5;34381:24;:::i;:::-;34374:5;34371:35;34361:63;;34420:1;34417;34410:12;34361:63;34308:122;:::o;34436:138::-;34517:32;34543:5;34517:32;:::i;:::-;34510:5;34507:43;34497:71;;34564:1;34561;34554:12;34497:71;34436:138;:::o;34580:116::-;34650:21;34665:5;34650:21;:::i;:::-;34643:5;34640:32;34630:60;;34686:1;34683;34676:12;34630:60;34580:116;:::o;34702:148::-;34788:37;34819:5;34788:37;:::i;:::-;34781:5;34778:48;34768:76;;34840:1;34837;34830:12;34768:76;34702:148;:::o;34856:122::-;34929:24;34947:5;34929:24;:::i;:::-;34922:5;34919:35;34909:63;;34968:1;34965;34958:12;34909:63;34856:122;:::o
Swarm Source
ipfs://3ff0d4315cf65a26385ba94aa7e141bdcceb2bd40f9c2a01d534bf7f50d82f65
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,658.79 | 0.00000778 | $0.020682 |
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.