More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 150 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18118538 | 494 days ago | IN | 0 ETH | 0.00023867 | ||||
Approve | 17019775 | 648 days ago | IN | 0 ETH | 0.00136785 | ||||
Approve | 17012990 | 649 days ago | IN | 0 ETH | 0.00087192 | ||||
Approve | 17012929 | 649 days ago | IN | 0 ETH | 0.00084591 | ||||
Transfer | 17012913 | 649 days ago | IN | 0 ETH | 0.00128764 | ||||
Transfer | 17012895 | 649 days ago | IN | 0 ETH | 0.00131994 | ||||
Approve | 17012862 | 649 days ago | IN | 0 ETH | 0.0011103 | ||||
Approve | 16997762 | 652 days ago | IN | 0 ETH | 0.00140185 | ||||
Approve | 16987800 | 653 days ago | IN | 0 ETH | 0.00110527 | ||||
Approve | 16978923 | 654 days ago | IN | 0 ETH | 0.00136066 | ||||
Approve | 16971655 | 655 days ago | IN | 0 ETH | 0.00108499 | ||||
Approve | 16957869 | 657 days ago | IN | 0 ETH | 0.00076263 | ||||
Approve | 16957855 | 657 days ago | IN | 0 ETH | 0.00077077 | ||||
Approve | 16957847 | 657 days ago | IN | 0 ETH | 0.00083976 | ||||
Approve | 16957826 | 657 days ago | IN | 0 ETH | 0.00089524 | ||||
Approve | 16957236 | 657 days ago | IN | 0 ETH | 0.00076886 | ||||
Transfer | 16955079 | 658 days ago | IN | 0 ETH | 0.00594782 | ||||
Transfer | 16955063 | 658 days ago | IN | 0 ETH | 0.00154893 | ||||
Approve | 16954837 | 658 days ago | IN | 0 ETH | 0.00104783 | ||||
Approve | 16954448 | 658 days ago | IN | 0 ETH | 0.00109759 | ||||
Approve | 16954305 | 658 days ago | IN | 0 ETH | 0.00097942 | ||||
Approve | 16952887 | 658 days ago | IN | 0 ETH | 0.00098407 | ||||
Approve | 16952094 | 658 days ago | IN | 0 ETH | 0.00100982 | ||||
Approve | 16951385 | 658 days ago | IN | 0 ETH | 0.00109128 | ||||
Approve | 16950286 | 658 days ago | IN | 0 ETH | 0.00108022 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16971658 | 655 days ago | 0.00221906 ETH | ||||
16971658 | 655 days ago | 0.00887625 ETH | ||||
16971658 | 655 days ago | 0.01109531 ETH | ||||
16955638 | 658 days ago | 0.00894591 ETH | ||||
16955638 | 658 days ago | 0.03578364 ETH | ||||
16955638 | 658 days ago | 0.04472955 ETH | ||||
16955079 | 658 days ago | 0.02069599 ETH | ||||
16955079 | 658 days ago | 0.08278396 ETH | ||||
16955079 | 658 days ago | 0.10347995 ETH | ||||
16954304 | 658 days ago | 0.00482187 ETH | ||||
16954304 | 658 days ago | 0.01928748 ETH | ||||
16954304 | 658 days ago | 0.02410935 ETH | ||||
16950293 | 658 days ago | 0.01372412 ETH | ||||
16950293 | 658 days ago | 0.0548965 ETH | ||||
16950293 | 658 days ago | 0.06862063 ETH | ||||
16949028 | 658 days ago | 0.00919757 ETH | ||||
16949028 | 658 days ago | 0.03679028 ETH | ||||
16949028 | 658 days ago | 0.04598785 ETH | ||||
16948069 | 659 days ago | 0.03767787 ETH | ||||
16948069 | 659 days ago | 0.15071151 ETH | ||||
16948069 | 659 days ago | 0.18838939 ETH | ||||
16945523 | 659 days ago | 0.00653474 ETH | ||||
16945523 | 659 days ago | 0.02613899 ETH | ||||
16945523 | 659 days ago | 0.03267374 ETH | ||||
16943455 | 659 days ago | 0.00538544 ETH |
Loading...
Loading
Contract Name:
SafeMars_ETH
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-30 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.18; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 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 SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } 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); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function waiveOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 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 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 SafeMars_ETH is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private _name = "SafeMars ETH"; string private _symbol = "SMARS"; uint8 private _decimals = 9; address payable public marketingWalletAddress = payable(0x31839E6B4C03ADF0499dFCD87d838D7d1bC4Cde7); // Marketing Address 4% address payable public developmentWalletAddress = payable(0x55862C3d2343B07178E60ab740Ad69B0D5a11DdE); // Utility development Address 1% address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isWalletLimitExempt; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public isMarketPair; uint256 public _buyLiquidityFee = 0; uint256 public _buyMarketingFee = 4; uint256 public _buyDevelopmentFee = 1; uint256 public _sellLiquidityFee = 0; uint256 public _sellMarketingFee = 4; uint256 public _sellDevelopmentFee = 1; uint256 public _liquidityShare = 0; uint256 public _marketingShare = 8; uint256 public _developmentShare = 2; uint256 public _totalTaxIfBuying = 5; uint256 public _totalTaxIfSelling = 5; uint256 public _totalDistributionShares = 10; uint256 private _totalSupply = 1e6 * 10**9 * 10**9; uint256 public _maxTxAmount = 30000 * 10**9 * 10**9; uint256 public _walletMax = 30000 * 10**9 * 10**9; uint256 private minimumTokensBeforeSwap = 7500 * 10**9 * 10**9; IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public swapAndLiquifyByLimitOnly = true; bool public checkWalletLimit = true; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _allowances[address(this)][address(uniswapV2Router)] = _totalSupply; isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDevelopmentFee); _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDevelopmentFee); _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_developmentShare); isWalletLimitExempt[owner()] = true; isWalletLimitExempt[address(uniswapPair)] = true; isWalletLimitExempt[address(this)] = true; isTxLimitExempt[owner()] = true; isTxLimitExempt[address(this)] = true; isMarketPair[address(uniswapPair)] = true; _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function minimumTokensBeforeSwapAmount() public view returns (uint256) { return minimumTokensBeforeSwap; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function setMarketPairStatus(address account, bool newValue) public onlyOwner { isMarketPair[account] = newValue; } function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function setIsExcludedFromFee(address account, bool newValue) public onlyOwner { isExcludedFromFee[account] = newValue; } function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() { _buyLiquidityFee = newLiquidityTax; _buyMarketingFee = newMarketingTax; _buyDevelopmentFee = newDevelopmentTax; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDevelopmentFee); require(_totalTaxIfBuying <= 35, "Buy tax must be less than 35%"); } function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() { _sellLiquidityFee = newLiquidityTax; _sellMarketingFee = newMarketingTax; _sellDevelopmentFee = newDevelopmentTax; _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDevelopmentFee); require(_totalTaxIfSelling <= 35, "Sell tax must be less than 35%"); } function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newDevelopmentShare) external onlyOwner() { _liquidityShare = newLiquidityShare; _marketingShare = newMarketingShare; _developmentShare = newDevelopmentShare; _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_developmentShare); require(_totalDistributionShares <=70, "Distribution Shares must be less than 70%"); } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { require(maxTxAmount >= _totalSupply / 200, "Cannot set MaxTxAmount lower than 0.5%"); _maxTxAmount = maxTxAmount; } function enableDisableWalletLimit(bool newValue) external onlyOwner { checkWalletLimit = newValue; } function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner { isWalletLimitExempt[holder] = exempt; } function setWalletLimit(uint256 newLimit) external onlyOwner { require(newLimit >= _totalSupply / 200, "Cannot set MaxWallet lower than 0.5%"); _walletMax = newLimit; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() { require(newLimit > 1, "NumTokensBeforeSwap should be not 0"); minimumTokensBeforeSwap = newLimit; } function setMarketingWalletAddress(address newAddress) external onlyOwner() { marketingWalletAddress = payable(newAddress); } function setDevelopmentWalletAddress(address newAddress) external onlyOwner() { developmentWalletAddress = payable(newAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner { swapAndLiquifyByLimitOnly = newValue; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) { if(swapAndLiquifyByLimitOnly) contractTokenBalance = minimumTokensBeforeSwap; swapAndLiquify(contractTokenBalance); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? amount : takeFee(sender, recipient, amount); if(checkWalletLimit && !isWalletLimitExempt[recipient]) require(balanceOf(recipient).add(finalAmount) <= _walletMax); _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify(uint256 tAmount) private lockTheSwap { uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2); uint256 tokensForSwap = tAmount.sub(tokensForLP); swapTokensForEth(tokensForSwap); uint256 amountReceived = address(this).balance; uint256 totalETHFee = _totalDistributionShares.sub(_liquidityShare.div(2)); uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2); uint256 amountETHDevelopment = amountReceived.mul(_developmentShare).div(totalETHFee); uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(amountETHDevelopment); if(amountETHMarketing > 0) transferToAddressETH(marketingWalletAddress, amountETHMarketing); if(amountETHDevelopment > 0) transferToAddressETH(developmentWalletAddress, amountETHDevelopment); if(amountETHLiquidity > 0 && tokensForLP > 0) addLiquidity(tokensForLP, amountETHLiquidity); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeAmount = 0; if(isMarketPair[sender]) { feeAmount = amount.mul(_totalTaxIfBuying).div(100); } else if(isMarketPair[recipient]) { feeAmount = amount.mul(_totalTaxIfSelling).div(100); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } }
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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevelopmentWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280600c81526020017f536166654d617273204554480000000000000000000000000000000000000000815250600390816200004a919062000d85565b506040518060400160405280600581526020017f534d4152530000000000000000000000000000000000000000000000000000008152506004908162000091919062000d85565b506009600560006101000a81548160ff021916908360ff1602179055507331839e6b4c03adf0499dfcd87d838d7d1bc4cde7600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507355862c3d2343b07178e60ab740ad69b0d5a11dde600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506000600d556004600e556001600f5560006010556004601155600160125560006013556008601455600260155560056016556005601755600a60185569d3c21bcecceda100000060195569065a4da25d3016c00000601a5569065a4da25d3016c00000601b556901969368974c05b00000601c556001601e60156101000a81548160ff0219169083151502179055506001601e60166101000a81548160ff0219169083151502179055506001601e60176101000a81548160ff0219169083151502179055503480156200025f57600080fd5b5060006200027262000a7760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000375573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039b919062000ed6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000403573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000429919062000ed6565b6040518363ffffffff1660e01b81526004016200044892919062000f19565b6020604051808303816000875af115801562000468573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048e919062000ed6565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601954600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000620005ca62000a7f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006ac600f5462000698600e54600d5462000aa860201b6200259e1790919060201c565b62000aa860201b6200259e1790919060201c565b601681905550620006eb601254620006d760115460105462000aa860201b6200259e1790919060201c565b62000aa860201b6200259e1790919060201c565b6017819055506200072a6015546200071660145460135462000aa860201b6200259e1790919060201c565b62000aa860201b6200259e1790919060201c565b6018819055506001600a60006200074662000a7f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200087f62000a7f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060195460076000620009b962000a7760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000a0762000a7760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60195460405162000a68919062000f57565b60405180910390a35062001061565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000ab9919062000fa3565b90508381101562000b01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af8906200103f565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b8d57607f821691505b60208210810362000ba35762000ba262000b45565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c0d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bce565b62000c19868362000bce565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c6662000c6062000c5a8462000c31565b62000c3b565b62000c31565b9050919050565b6000819050919050565b62000c828362000c45565b62000c9a62000c918262000c6d565b84845462000bdb565b825550505050565b600090565b62000cb162000ca2565b62000cbe81848462000c77565b505050565b5b8181101562000ce65762000cda60008262000ca7565b60018101905062000cc4565b5050565b601f82111562000d355762000cff8162000ba9565b62000d0a8462000bbe565b8101602085101562000d1a578190505b62000d3262000d298562000bbe565b83018262000cc3565b50505b505050565b600082821c905092915050565b600062000d5a6000198460080262000d3a565b1980831691505092915050565b600062000d75838362000d47565b9150826002028217905092915050565b62000d908262000b0b565b67ffffffffffffffff81111562000dac5762000dab62000b16565b5b62000db8825462000b74565b62000dc582828562000cea565b600060209050601f83116001811462000dfd576000841562000de8578287015190505b62000df4858262000d67565b86555062000e64565b601f19841662000e0d8662000ba9565b60005b8281101562000e375784890151825560018201915060208501945060208101905062000e10565b8683101562000e57578489015162000e53601f89168262000d47565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e9e8262000e71565b9050919050565b62000eb08162000e91565b811462000ebc57600080fd5b50565b60008151905062000ed08162000ea5565b92915050565b60006020828403121562000eef5762000eee62000e6c565b5b600062000eff8482850162000ebf565b91505092915050565b62000f138162000e91565b82525050565b600060408201905062000f30600083018562000f08565b62000f3f602083018462000f08565b9392505050565b62000f518162000c31565b82525050565b600060208201905062000f6e600083018462000f46565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fb08262000c31565b915062000fbd8362000c31565b925082820190508082111562000fd85762000fd762000f74565b5b92915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001027601b8362000fde565b9150620010348262000fef565b602082019050919050565b600060208201905081810360008301526200105a8162001018565b9050919050565b608051614af5620010846000396000818161137b01526113a70152614af56000f3fe60806040526004361061037a5760003560e01c806388790a68116101d1578063c816841b11610102578063ec28438a116100a0578063f2fde38b1161006f578063f2fde38b14610d03578063f331c7b014610d2c578063f84ba65d14610d57578063f872858a14610d8057610381565b8063ec28438a14610c5d578063ef422a1814610c86578063f0cd1dac14610caf578063f1d5f51714610cda57610381565b8063d158272d116100dc578063d158272d14610b9f578063da00097d14610bca578063dc44b6a014610bf5578063dd62ed3e14610c2057610381565b8063c816841b14610b0c578063c860795214610b37578063c867d60b14610b6257610381565b8063a0dd80401161016f578063a9059cbb11610149578063a9059cbb14610a52578063c2d4640e14610a8f578063c49b9a8014610ab8578063c5d2418914610ae157610381565b8063a0dd8040146109c1578063a457c2d7146109ec578063a5d69d1f14610a2957610381565b8063914eb66a116101ab578063914eb66a1461092957806395d89b4114610940578063a073d37f1461096b578063a08e671f1461099657610381565b806388790a68146108965780638b42507f146108c15780638da5cb5b146108fe57610381565b806339509351116102ab57806361a23c69116102495780637d7846ff116102235780637d7846ff146107ee578063807c2d9c1461081757806382eefb4314610842578063844d591c1461086d57610381565b806361a23c691461075b57806370a08231146107865780637d1db4a5146107c357610381565b80634a74bb02116102855780634a74bb021461069f5780634cb80fd5146106ca5780635342acb4146106f357806357a5802f1461073057610381565b806339509351146105fc5780633b97084a146106395780633ecad2711461066257610381565b80632198cf6c1161031857806327c8f835116102f257806327c8f835146105505780632b112e491461057b578063313ce567146105a657806337249b65146105d157610381565b80632198cf6c146104c157806323b872dd146104ea5780632563ae831461052757610381565b80631694505e116103545780631694505e1461041757806318160ddd14610442578063182a47601461046d5780631870517a1461049857610381565b806306fdde031461038657806308733214146103b1578063095ea7b3146103da57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610dab565b6040516103a891906139ac565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d39190613a09565b610e3d565b005b3480156103e657600080fd5b5061040160048036038101906103fc9190613aba565b610f63565b60405161040e9190613b15565b60405180910390f35b34801561042357600080fd5b5061042c610f81565b6040516104399190613b8f565b60405180910390f35b34801561044e57600080fd5b50610457610fa7565b6040516104649190613bb9565b60405180910390f35b34801561047957600080fd5b50610482610fb1565b60405161048f9190613bf5565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190613a09565b610fd7565b005b3480156104cd57600080fd5b506104e860048036038101906104e39190613c3c565b6110fd565b005b3480156104f657600080fd5b50610511600480360381019061050c9190613c7c565b6111ed565b60405161051e9190613b15565b60405180910390f35b34801561053357600080fd5b5061054e60048036038101906105499190613ccf565b6112c7565b005b34801561055c57600080fd5b50610565611379565b6040516105729190613d0b565b60405180910390f35b34801561058757600080fd5b5061059061139d565b60405161059d9190613bb9565b60405180910390f35b3480156105b257600080fd5b506105bb6113e1565b6040516105c89190613d42565b60405180910390f35b3480156105dd57600080fd5b506105e66113f8565b6040516105f39190613bb9565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e9190613aba565b6113fe565b6040516106309190613b15565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190613d5d565b6114b1565b005b34801561066e57600080fd5b5061068960048036038101906106849190613d8a565b611593565b6040516106969190613b15565b60405180910390f35b3480156106ab57600080fd5b506106b46115b3565b6040516106c19190613b15565b60405180910390f35b3480156106d657600080fd5b506106f160048036038101906106ec9190613d8a565b6115c6565b005b3480156106ff57600080fd5b5061071a60048036038101906107159190613d8a565b61169f565b6040516107279190613b15565b60405180910390f35b34801561073c57600080fd5b506107456116bf565b6040516107529190613bb9565b60405180910390f35b34801561076757600080fd5b506107706116c5565b60405161077d9190613bb9565b60405180910390f35b34801561079257600080fd5b506107ad60048036038101906107a89190613d8a565b6116cb565b6040516107ba9190613bb9565b60405180910390f35b3480156107cf57600080fd5b506107d8611714565b6040516107e59190613bb9565b60405180910390f35b3480156107fa57600080fd5b5061081560048036038101906108109190613d8a565b61171a565b005b34801561082357600080fd5b5061082c6117f3565b6040516108399190613bb9565b60405180910390f35b34801561084e57600080fd5b506108576117f9565b6040516108649190613bb9565b60405180910390f35b34801561087957600080fd5b50610894600480360381019061088f9190613c3c565b6117ff565b005b3480156108a257600080fd5b506108ab6118ef565b6040516108b89190613bb9565b60405180910390f35b3480156108cd57600080fd5b506108e860048036038101906108e39190613d8a565b6118f5565b6040516108f59190613b15565b60405180910390f35b34801561090a57600080fd5b50610913611915565b6040516109209190613d0b565b60405180910390f35b34801561093557600080fd5b5061093e61193e565b005b34801561094c57600080fd5b50610955611a91565b60405161096291906139ac565b60405180910390f35b34801561097757600080fd5b50610980611b23565b60405161098d9190613bb9565b60405180910390f35b3480156109a257600080fd5b506109ab611b2d565b6040516109b89190613bb9565b60405180910390f35b3480156109cd57600080fd5b506109d6611b33565b6040516109e39190613bb9565b60405180910390f35b3480156109f857600080fd5b50610a136004803603810190610a0e9190613aba565b611b39565b604051610a209190613b15565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b9190613ccf565b611c06565b005b348015610a5e57600080fd5b50610a796004803603810190610a749190613aba565b611cb8565b604051610a869190613b15565b60405180910390f35b348015610a9b57600080fd5b50610ab66004803603810190610ab19190613a09565b611cd7565b005b348015610ac457600080fd5b50610adf6004803603810190610ada9190613ccf565b611dfd565b005b348015610aed57600080fd5b50610af6611ee6565b604051610b039190613bb9565b60405180910390f35b348015610b1857600080fd5b50610b21611eec565b604051610b2e9190613d0b565b60405180910390f35b348015610b4357600080fd5b50610b4c611f12565b604051610b599190613bb9565b60405180910390f35b348015610b6e57600080fd5b50610b896004803603810190610b849190613d8a565b611f18565b604051610b969190613b15565b60405180910390f35b348015610bab57600080fd5b50610bb4611f38565b604051610bc19190613bf5565b60405180910390f35b348015610bd657600080fd5b50610bdf611f5e565b604051610bec9190613b15565b60405180910390f35b348015610c0157600080fd5b50610c0a611f71565b604051610c179190613bb9565b60405180910390f35b348015610c2c57600080fd5b50610c476004803603810190610c429190613db7565b611f77565b604051610c549190613bb9565b60405180910390f35b348015610c6957600080fd5b50610c846004803603810190610c7f9190613d5d565b611ffe565b005b348015610c9257600080fd5b50610cad6004803603810190610ca89190613c3c565b6120ee565b005b348015610cbb57600080fd5b50610cc46121de565b604051610cd19190613bb9565b60405180910390f35b348015610ce657600080fd5b50610d016004803603810190610cfc9190613d5d565b6121e4565b005b348015610d0f57600080fd5b50610d2a6004803603810190610d259190613d8a565b6122d4565b005b348015610d3857600080fd5b50610d41612495565b604051610d4e9190613bb9565b60405180910390f35b348015610d6357600080fd5b50610d7e6004803603810190610d799190613c3c565b61249b565b005b348015610d8c57600080fd5b50610d9561258b565b604051610da29190613b15565b60405180910390f35b606060038054610dba90613e26565b80601f0160208091040260200160405190810160405280929190818152602001828054610de690613e26565b8015610e335780601f10610e0857610100808354040283529160200191610e33565b820191906000526020600020905b815481529060010190602001808311610e1657829003601f168201915b5050505050905090565b610e456125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990613ea3565b60405180910390fd5b826010819055508160118190555080601281905550610f12601254610f0460115460105461259e90919063ffffffff16565b61259e90919063ffffffff16565b60178190555060236017541115610f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5590613f0f565b60405180910390fd5b505050565b6000610f77610f706125fc565b8484612604565b6001905092915050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fdf6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106390613ea3565b60405180910390fd5b82600d8190555081600e8190555080600f819055506110ac600f5461109e600e54600d5461259e90919063ffffffff16565b61259e90919063ffffffff16565b601681905550602360165411156110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ef90613f7b565b60405180910390fd5b505050565b6111056125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990613ea3565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006111fa8484846127cd565b506112bc846112076125fc565b6112b785604051806060016040528060288152602001614a7360289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061126d6125fc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612db09092919063ffffffff16565b612604565b600190509392505050565b6112cf6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135390613ea3565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006113dc6113cb7f00000000000000000000000000000000000000000000000000000000000000006116cb565b601954612e1490919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b60125481565b60006114a761140b6125fc565b846114a2856008600061141c6125fc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259e90919063ffffffff16565b612604565b6001905092915050565b6114b96125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90613ea3565b60405180910390fd5b60018111611589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115809061400d565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b6115ce6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165290613ea3565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b60135481565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b6117226125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a690613ea3565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5481565b60175481565b6118076125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b90613ea3565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119466125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90613ea3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060048054611aa090613e26565b80601f0160208091040260200160405190810160405280929190818152602001828054611acc90613e26565b8015611b195780601f10611aee57610100808354040283529160200191611b19565b820191906000526020600020905b815481529060010190602001808311611afc57829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b60155481565b6000611bfc611b466125fc565b84611bf785604051806060016040528060258152602001614a9b6025913960086000611b706125fc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612db09092919063ffffffff16565b612604565b6001905092915050565b611c0e6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9290613ea3565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b6000611ccc611cc56125fc565b84846127cd565b506001905092915050565b611cdf6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6390613ea3565b60405180910390fd5b826013819055508160148190555080601581905550611dac601554611d9e60145460135461259e90919063ffffffff16565b61259e90919063ffffffff16565b60188190555060466018541115611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def9061409f565b60405180910390fd5b505050565b611e056125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8990613ea3565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611edb9190613b15565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120066125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90613ea3565b60405180910390fd5b60c86019546120a2919061411d565b8110156120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120db906141c0565b60405180910390fd5b80601a8190555050565b6120f66125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217a90613ea3565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b6121ec6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227090613ea3565b60405180910390fd5b60c8601954612288919061411d565b8110156122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190614252565b60405180910390fd5b80601b8190555050565b6122dc6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236090613ea3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf906142e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b6124a36125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252790613ea3565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b60008082846125ad9190614304565b9050838110156125f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e990614384565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266a90614416565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d9906144a8565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127c09190613bb9565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361283d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128349061453a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a3906145cc565b60405180910390fd5b601e60149054906101000a900460ff16156128d3576128cc848484612e5e565b9050612da9565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129775750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129c257601a548211156129c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b89061465e565b60405180910390fd5b5b60006129cd306116cb565b90506000601c5482101590508080156129f35750601e60149054906101000a900460ff16155b8015612a495750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a615750601e60159054906101000a900460ff165b15612a8b57601e60169054906101000a900460ff1615612a8157601c5491505b612a8a82613031565b5b612b14846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612db09092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bfa5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c0e57612c09878787613222565b612c10565b845b9050601e60179054906101000a900460ff168015612c785750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ca757601b54612c9b82612c8d896116cb565b61259e90919063ffffffff16565b1115612ca657600080fd5b5b612cf981600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259e90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d999190613bb9565b60405180910390a3600193505050505b9392505050565b6000838311158290612df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612def91906139ac565b60405180910390fd5b5060008385612e07919061467e565b9050809150509392505050565b6000612e5683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612db0565b905092915050565b6000612ee9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612db09092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f7e82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259e90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161301e9190613bb9565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff021916908315150217905550600061308a600261307c60185461306e6013548761344990919063ffffffff16565b6134c390919063ffffffff16565b6134c390919063ffffffff16565b905060006130a18284612e1490919063ffffffff16565b90506130ac8161350d565b600047905060006130dd6130cc60026013546134c390919063ffffffff16565b601854612e1490919063ffffffff16565b9050600061311b600261310d846130ff6013548861344990919063ffffffff16565b6134c390919063ffffffff16565b6134c390919063ffffffff16565b90506000613146836131386015548761344990919063ffffffff16565b6134c390919063ffffffff16565b9050600061316f826131618588612e1490919063ffffffff16565b612e1490919063ffffffff16565b905060008111156131a7576131a6600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613789565b5b60008211156131dd576131dc600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613789565b5b6000831180156131ed5750600087115b156131fd576131fc87846137d4565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132aa576132a360646132956016548661344990919063ffffffff16565b6134c390919063ffffffff16565b9050613328565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133275761332460646133166017548661344990919063ffffffff16565b6134c390919063ffffffff16565b90505b5b600081111561342c5761338381600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259e90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134239190613bb9565b60405180910390a35b61343f8184612e1490919063ffffffff16565b9150509392505050565b600080830361345b57600090506134bd565b6000828461346991906146b2565b9050828482613478919061411d565b146134b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134af90614766565b60405180910390fd5b809150505b92915050565b600061350583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138b9565b905092915050565b6000600267ffffffffffffffff81111561352a57613529614786565b5b6040519080825280602002602001820160405280156135585781602001602082028036833780820191505090505b50905030816000815181106135705761356f6147b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363b91906147f9565b8160018151811061364f5761364e6147b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506136b630601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612604565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161371a95949392919061491f565b600060405180830381600087803b15801561373457600080fd5b505af1158015613748573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161377d929190614979565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156137cf573d6000803e3d6000fd5b505050565b61380130601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612604565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061384d611915565b426040518863ffffffff1660e01b815260040161386f969594939291906149a9565b60606040518083038185885af115801561388d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138b29190614a1f565b5050505050565b60008083118290613900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f791906139ac565b60405180910390fd5b506000838561390f919061411d565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561395657808201518184015260208101905061393b565b60008484015250505050565b6000601f19601f8301169050919050565b600061397e8261391c565b6139888185613927565b9350613998818560208601613938565b6139a181613962565b840191505092915050565b600060208201905081810360008301526139c68184613973565b905092915050565b600080fd5b6000819050919050565b6139e6816139d3565b81146139f157600080fd5b50565b600081359050613a03816139dd565b92915050565b600080600060608486031215613a2257613a216139ce565b5b6000613a30868287016139f4565b9350506020613a41868287016139f4565b9250506040613a52868287016139f4565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a8782613a5c565b9050919050565b613a9781613a7c565b8114613aa257600080fd5b50565b600081359050613ab481613a8e565b92915050565b60008060408385031215613ad157613ad06139ce565b5b6000613adf85828601613aa5565b9250506020613af0858286016139f4565b9150509250929050565b60008115159050919050565b613b0f81613afa565b82525050565b6000602082019050613b2a6000830184613b06565b92915050565b6000819050919050565b6000613b55613b50613b4b84613a5c565b613b30565b613a5c565b9050919050565b6000613b6782613b3a565b9050919050565b6000613b7982613b5c565b9050919050565b613b8981613b6e565b82525050565b6000602082019050613ba46000830184613b80565b92915050565b613bb3816139d3565b82525050565b6000602082019050613bce6000830184613baa565b92915050565b6000613bdf82613a5c565b9050919050565b613bef81613bd4565b82525050565b6000602082019050613c0a6000830184613be6565b92915050565b613c1981613afa565b8114613c2457600080fd5b50565b600081359050613c3681613c10565b92915050565b60008060408385031215613c5357613c526139ce565b5b6000613c6185828601613aa5565b9250506020613c7285828601613c27565b9150509250929050565b600080600060608486031215613c9557613c946139ce565b5b6000613ca386828701613aa5565b9350506020613cb486828701613aa5565b9250506040613cc5868287016139f4565b9150509250925092565b600060208284031215613ce557613ce46139ce565b5b6000613cf384828501613c27565b91505092915050565b613d0581613a7c565b82525050565b6000602082019050613d206000830184613cfc565b92915050565b600060ff82169050919050565b613d3c81613d26565b82525050565b6000602082019050613d576000830184613d33565b92915050565b600060208284031215613d7357613d726139ce565b5b6000613d81848285016139f4565b91505092915050565b600060208284031215613da057613d9f6139ce565b5b6000613dae84828501613aa5565b91505092915050565b60008060408385031215613dce57613dcd6139ce565b5b6000613ddc85828601613aa5565b9250506020613ded85828601613aa5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e3e57607f821691505b602082108103613e5157613e50613df7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613e8d602083613927565b9150613e9882613e57565b602082019050919050565b60006020820190508181036000830152613ebc81613e80565b9050919050565b7f53656c6c20746178206d757374206265206c657373207468616e203335250000600082015250565b6000613ef9601e83613927565b9150613f0482613ec3565b602082019050919050565b60006020820190508181036000830152613f2881613eec565b9050919050565b7f42757920746178206d757374206265206c657373207468616e20333525000000600082015250565b6000613f65601d83613927565b9150613f7082613f2f565b602082019050919050565b60006020820190508181036000830152613f9481613f58565b9050919050565b7f4e756d546f6b656e734265666f7265537761702073686f756c64206265206e6f60008201527f7420300000000000000000000000000000000000000000000000000000000000602082015250565b6000613ff7602383613927565b915061400282613f9b565b604082019050919050565b6000602082019050818103600083015261402681613fea565b9050919050565b7f446973747269627574696f6e20536861726573206d757374206265206c65737360008201527f207468616e203730250000000000000000000000000000000000000000000000602082015250565b6000614089602983613927565b91506140948261402d565b604082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614128826139d3565b9150614133836139d3565b925082614143576141426140bf565b5b828204905092915050565b7f43616e6e6f7420736574204d61785478416d6f756e74206c6f7765722074686160008201527f6e20302e35250000000000000000000000000000000000000000000000000000602082015250565b60006141aa602683613927565b91506141b58261414e565b604082019050919050565b600060208201905081810360008301526141d98161419d565b9050919050565b7f43616e6e6f7420736574204d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061423c602483613927565b9150614247826141e0565b604082019050919050565b6000602082019050818103600083015261426b8161422f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142ce602683613927565b91506142d982614272565b604082019050919050565b600060208201905081810360008301526142fd816142c1565b9050919050565b600061430f826139d3565b915061431a836139d3565b9250828201905080821115614332576143316140ee565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061436e601b83613927565b915061437982614338565b602082019050919050565b6000602082019050818103600083015261439d81614361565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614400602483613927565b915061440b826143a4565b604082019050919050565b6000602082019050818103600083015261442f816143f3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614492602283613927565b915061449d82614436565b604082019050919050565b600060208201905081810360008301526144c181614485565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614524602583613927565b915061452f826144c8565b604082019050919050565b6000602082019050818103600083015261455381614517565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145b6602383613927565b91506145c18261455a565b604082019050919050565b600060208201905081810360008301526145e5816145a9565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614648602883613927565b9150614653826145ec565b604082019050919050565b600060208201905081810360008301526146778161463b565b9050919050565b6000614689826139d3565b9150614694836139d3565b92508282039050818111156146ac576146ab6140ee565b5b92915050565b60006146bd826139d3565b91506146c8836139d3565b92508282026146d6816139d3565b915082820484148315176146ed576146ec6140ee565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614750602183613927565b915061475b826146f4565b604082019050919050565b6000602082019050818103600083015261477f81614743565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506147f381613a8e565b92915050565b60006020828403121561480f5761480e6139ce565b5b600061481d848285016147e4565b91505092915050565b6000819050919050565b600061484b61484661484184614826565b613b30565b6139d3565b9050919050565b61485b81614830565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61489681613a7c565b82525050565b60006148a8838361488d565b60208301905092915050565b6000602082019050919050565b60006148cc82614861565b6148d6818561486c565b93506148e18361487d565b8060005b838110156149125781516148f9888261489c565b9750614904836148b4565b9250506001810190506148e5565b5085935050505092915050565b600060a0820190506149346000830188613baa565b6149416020830187614852565b818103604083015261495381866148c1565b90506149626060830185613cfc565b61496f6080830184613baa565b9695505050505050565b600060408201905061498e6000830185613baa565b81810360208301526149a081846148c1565b90509392505050565b600060c0820190506149be6000830189613cfc565b6149cb6020830188613baa565b6149d86040830187614852565b6149e56060830186614852565b6149f26080830185613cfc565b6149ff60a0830184613baa565b979650505050505050565b600081519050614a19816139dd565b92915050565b600080600060608486031215614a3857614a376139ce565b5b6000614a4686828701614a0a565b9350506020614a5786828701614a0a565b9250506040614a6886828701614a0a565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207a42ec559492693d850a89c27e88b65732ece789ae89352d599a5d0062131a0764736f6c63430008120033
Deployed Bytecode
0x60806040526004361061037a5760003560e01c806388790a68116101d1578063c816841b11610102578063ec28438a116100a0578063f2fde38b1161006f578063f2fde38b14610d03578063f331c7b014610d2c578063f84ba65d14610d57578063f872858a14610d8057610381565b8063ec28438a14610c5d578063ef422a1814610c86578063f0cd1dac14610caf578063f1d5f51714610cda57610381565b8063d158272d116100dc578063d158272d14610b9f578063da00097d14610bca578063dc44b6a014610bf5578063dd62ed3e14610c2057610381565b8063c816841b14610b0c578063c860795214610b37578063c867d60b14610b6257610381565b8063a0dd80401161016f578063a9059cbb11610149578063a9059cbb14610a52578063c2d4640e14610a8f578063c49b9a8014610ab8578063c5d2418914610ae157610381565b8063a0dd8040146109c1578063a457c2d7146109ec578063a5d69d1f14610a2957610381565b8063914eb66a116101ab578063914eb66a1461092957806395d89b4114610940578063a073d37f1461096b578063a08e671f1461099657610381565b806388790a68146108965780638b42507f146108c15780638da5cb5b146108fe57610381565b806339509351116102ab57806361a23c69116102495780637d7846ff116102235780637d7846ff146107ee578063807c2d9c1461081757806382eefb4314610842578063844d591c1461086d57610381565b806361a23c691461075b57806370a08231146107865780637d1db4a5146107c357610381565b80634a74bb02116102855780634a74bb021461069f5780634cb80fd5146106ca5780635342acb4146106f357806357a5802f1461073057610381565b806339509351146105fc5780633b97084a146106395780633ecad2711461066257610381565b80632198cf6c1161031857806327c8f835116102f257806327c8f835146105505780632b112e491461057b578063313ce567146105a657806337249b65146105d157610381565b80632198cf6c146104c157806323b872dd146104ea5780632563ae831461052757610381565b80631694505e116103545780631694505e1461041757806318160ddd14610442578063182a47601461046d5780631870517a1461049857610381565b806306fdde031461038657806308733214146103b1578063095ea7b3146103da57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610dab565b6040516103a891906139ac565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d39190613a09565b610e3d565b005b3480156103e657600080fd5b5061040160048036038101906103fc9190613aba565b610f63565b60405161040e9190613b15565b60405180910390f35b34801561042357600080fd5b5061042c610f81565b6040516104399190613b8f565b60405180910390f35b34801561044e57600080fd5b50610457610fa7565b6040516104649190613bb9565b60405180910390f35b34801561047957600080fd5b50610482610fb1565b60405161048f9190613bf5565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190613a09565b610fd7565b005b3480156104cd57600080fd5b506104e860048036038101906104e39190613c3c565b6110fd565b005b3480156104f657600080fd5b50610511600480360381019061050c9190613c7c565b6111ed565b60405161051e9190613b15565b60405180910390f35b34801561053357600080fd5b5061054e60048036038101906105499190613ccf565b6112c7565b005b34801561055c57600080fd5b50610565611379565b6040516105729190613d0b565b60405180910390f35b34801561058757600080fd5b5061059061139d565b60405161059d9190613bb9565b60405180910390f35b3480156105b257600080fd5b506105bb6113e1565b6040516105c89190613d42565b60405180910390f35b3480156105dd57600080fd5b506105e66113f8565b6040516105f39190613bb9565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e9190613aba565b6113fe565b6040516106309190613b15565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190613d5d565b6114b1565b005b34801561066e57600080fd5b5061068960048036038101906106849190613d8a565b611593565b6040516106969190613b15565b60405180910390f35b3480156106ab57600080fd5b506106b46115b3565b6040516106c19190613b15565b60405180910390f35b3480156106d657600080fd5b506106f160048036038101906106ec9190613d8a565b6115c6565b005b3480156106ff57600080fd5b5061071a60048036038101906107159190613d8a565b61169f565b6040516107279190613b15565b60405180910390f35b34801561073c57600080fd5b506107456116bf565b6040516107529190613bb9565b60405180910390f35b34801561076757600080fd5b506107706116c5565b60405161077d9190613bb9565b60405180910390f35b34801561079257600080fd5b506107ad60048036038101906107a89190613d8a565b6116cb565b6040516107ba9190613bb9565b60405180910390f35b3480156107cf57600080fd5b506107d8611714565b6040516107e59190613bb9565b60405180910390f35b3480156107fa57600080fd5b5061081560048036038101906108109190613d8a565b61171a565b005b34801561082357600080fd5b5061082c6117f3565b6040516108399190613bb9565b60405180910390f35b34801561084e57600080fd5b506108576117f9565b6040516108649190613bb9565b60405180910390f35b34801561087957600080fd5b50610894600480360381019061088f9190613c3c565b6117ff565b005b3480156108a257600080fd5b506108ab6118ef565b6040516108b89190613bb9565b60405180910390f35b3480156108cd57600080fd5b506108e860048036038101906108e39190613d8a565b6118f5565b6040516108f59190613b15565b60405180910390f35b34801561090a57600080fd5b50610913611915565b6040516109209190613d0b565b60405180910390f35b34801561093557600080fd5b5061093e61193e565b005b34801561094c57600080fd5b50610955611a91565b60405161096291906139ac565b60405180910390f35b34801561097757600080fd5b50610980611b23565b60405161098d9190613bb9565b60405180910390f35b3480156109a257600080fd5b506109ab611b2d565b6040516109b89190613bb9565b60405180910390f35b3480156109cd57600080fd5b506109d6611b33565b6040516109e39190613bb9565b60405180910390f35b3480156109f857600080fd5b50610a136004803603810190610a0e9190613aba565b611b39565b604051610a209190613b15565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b9190613ccf565b611c06565b005b348015610a5e57600080fd5b50610a796004803603810190610a749190613aba565b611cb8565b604051610a869190613b15565b60405180910390f35b348015610a9b57600080fd5b50610ab66004803603810190610ab19190613a09565b611cd7565b005b348015610ac457600080fd5b50610adf6004803603810190610ada9190613ccf565b611dfd565b005b348015610aed57600080fd5b50610af6611ee6565b604051610b039190613bb9565b60405180910390f35b348015610b1857600080fd5b50610b21611eec565b604051610b2e9190613d0b565b60405180910390f35b348015610b4357600080fd5b50610b4c611f12565b604051610b599190613bb9565b60405180910390f35b348015610b6e57600080fd5b50610b896004803603810190610b849190613d8a565b611f18565b604051610b969190613b15565b60405180910390f35b348015610bab57600080fd5b50610bb4611f38565b604051610bc19190613bf5565b60405180910390f35b348015610bd657600080fd5b50610bdf611f5e565b604051610bec9190613b15565b60405180910390f35b348015610c0157600080fd5b50610c0a611f71565b604051610c179190613bb9565b60405180910390f35b348015610c2c57600080fd5b50610c476004803603810190610c429190613db7565b611f77565b604051610c549190613bb9565b60405180910390f35b348015610c6957600080fd5b50610c846004803603810190610c7f9190613d5d565b611ffe565b005b348015610c9257600080fd5b50610cad6004803603810190610ca89190613c3c565b6120ee565b005b348015610cbb57600080fd5b50610cc46121de565b604051610cd19190613bb9565b60405180910390f35b348015610ce657600080fd5b50610d016004803603810190610cfc9190613d5d565b6121e4565b005b348015610d0f57600080fd5b50610d2a6004803603810190610d259190613d8a565b6122d4565b005b348015610d3857600080fd5b50610d41612495565b604051610d4e9190613bb9565b60405180910390f35b348015610d6357600080fd5b50610d7e6004803603810190610d799190613c3c565b61249b565b005b348015610d8c57600080fd5b50610d9561258b565b604051610da29190613b15565b60405180910390f35b606060038054610dba90613e26565b80601f0160208091040260200160405190810160405280929190818152602001828054610de690613e26565b8015610e335780601f10610e0857610100808354040283529160200191610e33565b820191906000526020600020905b815481529060010190602001808311610e1657829003601f168201915b5050505050905090565b610e456125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990613ea3565b60405180910390fd5b826010819055508160118190555080601281905550610f12601254610f0460115460105461259e90919063ffffffff16565b61259e90919063ffffffff16565b60178190555060236017541115610f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5590613f0f565b60405180910390fd5b505050565b6000610f77610f706125fc565b8484612604565b6001905092915050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fdf6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106390613ea3565b60405180910390fd5b82600d8190555081600e8190555080600f819055506110ac600f5461109e600e54600d5461259e90919063ffffffff16565b61259e90919063ffffffff16565b601681905550602360165411156110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ef90613f7b565b60405180910390fd5b505050565b6111056125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990613ea3565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006111fa8484846127cd565b506112bc846112076125fc565b6112b785604051806060016040528060288152602001614a7360289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061126d6125fc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612db09092919063ffffffff16565b612604565b600190509392505050565b6112cf6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135390613ea3565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006113dc6113cb7f000000000000000000000000000000000000000000000000000000000000dead6116cb565b601954612e1490919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b60125481565b60006114a761140b6125fc565b846114a2856008600061141c6125fc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259e90919063ffffffff16565b612604565b6001905092915050565b6114b96125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90613ea3565b60405180910390fd5b60018111611589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115809061400d565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b6115ce6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165290613ea3565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b60135481565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b6117226125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a690613ea3565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5481565b60175481565b6118076125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b90613ea3565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119466125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90613ea3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060048054611aa090613e26565b80601f0160208091040260200160405190810160405280929190818152602001828054611acc90613e26565b8015611b195780601f10611aee57610100808354040283529160200191611b19565b820191906000526020600020905b815481529060010190602001808311611afc57829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b60155481565b6000611bfc611b466125fc565b84611bf785604051806060016040528060258152602001614a9b6025913960086000611b706125fc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612db09092919063ffffffff16565b612604565b6001905092915050565b611c0e6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9290613ea3565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b6000611ccc611cc56125fc565b84846127cd565b506001905092915050565b611cdf6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6390613ea3565b60405180910390fd5b826013819055508160148190555080601581905550611dac601554611d9e60145460135461259e90919063ffffffff16565b61259e90919063ffffffff16565b60188190555060466018541115611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def9061409f565b60405180910390fd5b505050565b611e056125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8990613ea3565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611edb9190613b15565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120066125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90613ea3565b60405180910390fd5b60c86019546120a2919061411d565b8110156120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120db906141c0565b60405180910390fd5b80601a8190555050565b6120f66125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217a90613ea3565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b6121ec6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227090613ea3565b60405180910390fd5b60c8601954612288919061411d565b8110156122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190614252565b60405180910390fd5b80601b8190555050565b6122dc6125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236090613ea3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf906142e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b6124a36125fc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252790613ea3565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b60008082846125ad9190614304565b9050838110156125f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e990614384565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266a90614416565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d9906144a8565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127c09190613bb9565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361283d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128349061453a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a3906145cc565b60405180910390fd5b601e60149054906101000a900460ff16156128d3576128cc848484612e5e565b9050612da9565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129775750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129c257601a548211156129c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b89061465e565b60405180910390fd5b5b60006129cd306116cb565b90506000601c5482101590508080156129f35750601e60149054906101000a900460ff16155b8015612a495750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a615750601e60159054906101000a900460ff165b15612a8b57601e60169054906101000a900460ff1615612a8157601c5491505b612a8a82613031565b5b612b14846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612db09092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bfa5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c0e57612c09878787613222565b612c10565b845b9050601e60179054906101000a900460ff168015612c785750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ca757601b54612c9b82612c8d896116cb565b61259e90919063ffffffff16565b1115612ca657600080fd5b5b612cf981600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259e90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d999190613bb9565b60405180910390a3600193505050505b9392505050565b6000838311158290612df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612def91906139ac565b60405180910390fd5b5060008385612e07919061467e565b9050809150509392505050565b6000612e5683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612db0565b905092915050565b6000612ee9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612db09092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f7e82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259e90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161301e9190613bb9565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff021916908315150217905550600061308a600261307c60185461306e6013548761344990919063ffffffff16565b6134c390919063ffffffff16565b6134c390919063ffffffff16565b905060006130a18284612e1490919063ffffffff16565b90506130ac8161350d565b600047905060006130dd6130cc60026013546134c390919063ffffffff16565b601854612e1490919063ffffffff16565b9050600061311b600261310d846130ff6013548861344990919063ffffffff16565b6134c390919063ffffffff16565b6134c390919063ffffffff16565b90506000613146836131386015548761344990919063ffffffff16565b6134c390919063ffffffff16565b9050600061316f826131618588612e1490919063ffffffff16565b612e1490919063ffffffff16565b905060008111156131a7576131a6600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613789565b5b60008211156131dd576131dc600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613789565b5b6000831180156131ed5750600087115b156131fd576131fc87846137d4565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132aa576132a360646132956016548661344990919063ffffffff16565b6134c390919063ffffffff16565b9050613328565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133275761332460646133166017548661344990919063ffffffff16565b6134c390919063ffffffff16565b90505b5b600081111561342c5761338381600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259e90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134239190613bb9565b60405180910390a35b61343f8184612e1490919063ffffffff16565b9150509392505050565b600080830361345b57600090506134bd565b6000828461346991906146b2565b9050828482613478919061411d565b146134b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134af90614766565b60405180910390fd5b809150505b92915050565b600061350583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138b9565b905092915050565b6000600267ffffffffffffffff81111561352a57613529614786565b5b6040519080825280602002602001820160405280156135585781602001602082028036833780820191505090505b50905030816000815181106135705761356f6147b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363b91906147f9565b8160018151811061364f5761364e6147b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506136b630601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612604565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161371a95949392919061491f565b600060405180830381600087803b15801561373457600080fd5b505af1158015613748573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161377d929190614979565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156137cf573d6000803e3d6000fd5b505050565b61380130601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612604565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061384d611915565b426040518863ffffffff1660e01b815260040161386f969594939291906149a9565b60606040518083038185885af115801561388d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138b29190614a1f565b5050505050565b60008083118290613900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f791906139ac565b60405180910390fd5b506000838561390f919061411d565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561395657808201518184015260208101905061393b565b60008484015250505050565b6000601f19601f8301169050919050565b600061397e8261391c565b6139888185613927565b9350613998818560208601613938565b6139a181613962565b840191505092915050565b600060208201905081810360008301526139c68184613973565b905092915050565b600080fd5b6000819050919050565b6139e6816139d3565b81146139f157600080fd5b50565b600081359050613a03816139dd565b92915050565b600080600060608486031215613a2257613a216139ce565b5b6000613a30868287016139f4565b9350506020613a41868287016139f4565b9250506040613a52868287016139f4565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a8782613a5c565b9050919050565b613a9781613a7c565b8114613aa257600080fd5b50565b600081359050613ab481613a8e565b92915050565b60008060408385031215613ad157613ad06139ce565b5b6000613adf85828601613aa5565b9250506020613af0858286016139f4565b9150509250929050565b60008115159050919050565b613b0f81613afa565b82525050565b6000602082019050613b2a6000830184613b06565b92915050565b6000819050919050565b6000613b55613b50613b4b84613a5c565b613b30565b613a5c565b9050919050565b6000613b6782613b3a565b9050919050565b6000613b7982613b5c565b9050919050565b613b8981613b6e565b82525050565b6000602082019050613ba46000830184613b80565b92915050565b613bb3816139d3565b82525050565b6000602082019050613bce6000830184613baa565b92915050565b6000613bdf82613a5c565b9050919050565b613bef81613bd4565b82525050565b6000602082019050613c0a6000830184613be6565b92915050565b613c1981613afa565b8114613c2457600080fd5b50565b600081359050613c3681613c10565b92915050565b60008060408385031215613c5357613c526139ce565b5b6000613c6185828601613aa5565b9250506020613c7285828601613c27565b9150509250929050565b600080600060608486031215613c9557613c946139ce565b5b6000613ca386828701613aa5565b9350506020613cb486828701613aa5565b9250506040613cc5868287016139f4565b9150509250925092565b600060208284031215613ce557613ce46139ce565b5b6000613cf384828501613c27565b91505092915050565b613d0581613a7c565b82525050565b6000602082019050613d206000830184613cfc565b92915050565b600060ff82169050919050565b613d3c81613d26565b82525050565b6000602082019050613d576000830184613d33565b92915050565b600060208284031215613d7357613d726139ce565b5b6000613d81848285016139f4565b91505092915050565b600060208284031215613da057613d9f6139ce565b5b6000613dae84828501613aa5565b91505092915050565b60008060408385031215613dce57613dcd6139ce565b5b6000613ddc85828601613aa5565b9250506020613ded85828601613aa5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e3e57607f821691505b602082108103613e5157613e50613df7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613e8d602083613927565b9150613e9882613e57565b602082019050919050565b60006020820190508181036000830152613ebc81613e80565b9050919050565b7f53656c6c20746178206d757374206265206c657373207468616e203335250000600082015250565b6000613ef9601e83613927565b9150613f0482613ec3565b602082019050919050565b60006020820190508181036000830152613f2881613eec565b9050919050565b7f42757920746178206d757374206265206c657373207468616e20333525000000600082015250565b6000613f65601d83613927565b9150613f7082613f2f565b602082019050919050565b60006020820190508181036000830152613f9481613f58565b9050919050565b7f4e756d546f6b656e734265666f7265537761702073686f756c64206265206e6f60008201527f7420300000000000000000000000000000000000000000000000000000000000602082015250565b6000613ff7602383613927565b915061400282613f9b565b604082019050919050565b6000602082019050818103600083015261402681613fea565b9050919050565b7f446973747269627574696f6e20536861726573206d757374206265206c65737360008201527f207468616e203730250000000000000000000000000000000000000000000000602082015250565b6000614089602983613927565b91506140948261402d565b604082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614128826139d3565b9150614133836139d3565b925082614143576141426140bf565b5b828204905092915050565b7f43616e6e6f7420736574204d61785478416d6f756e74206c6f7765722074686160008201527f6e20302e35250000000000000000000000000000000000000000000000000000602082015250565b60006141aa602683613927565b91506141b58261414e565b604082019050919050565b600060208201905081810360008301526141d98161419d565b9050919050565b7f43616e6e6f7420736574204d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061423c602483613927565b9150614247826141e0565b604082019050919050565b6000602082019050818103600083015261426b8161422f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142ce602683613927565b91506142d982614272565b604082019050919050565b600060208201905081810360008301526142fd816142c1565b9050919050565b600061430f826139d3565b915061431a836139d3565b9250828201905080821115614332576143316140ee565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061436e601b83613927565b915061437982614338565b602082019050919050565b6000602082019050818103600083015261439d81614361565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614400602483613927565b915061440b826143a4565b604082019050919050565b6000602082019050818103600083015261442f816143f3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614492602283613927565b915061449d82614436565b604082019050919050565b600060208201905081810360008301526144c181614485565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614524602583613927565b915061452f826144c8565b604082019050919050565b6000602082019050818103600083015261455381614517565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145b6602383613927565b91506145c18261455a565b604082019050919050565b600060208201905081810360008301526145e5816145a9565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614648602883613927565b9150614653826145ec565b604082019050919050565b600060208201905081810360008301526146778161463b565b9050919050565b6000614689826139d3565b9150614694836139d3565b92508282039050818111156146ac576146ab6140ee565b5b92915050565b60006146bd826139d3565b91506146c8836139d3565b92508282026146d6816139d3565b915082820484148315176146ed576146ec6140ee565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614750602183613927565b915061475b826146f4565b604082019050919050565b6000602082019050818103600083015261477f81614743565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506147f381613a8e565b92915050565b60006020828403121561480f5761480e6139ce565b5b600061481d848285016147e4565b91505092915050565b6000819050919050565b600061484b61484661484184614826565b613b30565b6139d3565b9050919050565b61485b81614830565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61489681613a7c565b82525050565b60006148a8838361488d565b60208301905092915050565b6000602082019050919050565b60006148cc82614861565b6148d6818561486c565b93506148e18361487d565b8060005b838110156149125781516148f9888261489c565b9750614904836148b4565b9250506001810190506148e5565b5085935050505092915050565b600060a0820190506149346000830188613baa565b6149416020830187614852565b818103604083015261495381866148c1565b90506149626060830185613cfc565b61496f6080830184613baa565b9695505050505050565b600060408201905061498e6000830185613baa565b81810360208301526149a081846148c1565b90509392505050565b600060c0820190506149be6000830189613cfc565b6149cb6020830188613baa565b6149d86040830187614852565b6149e56060830186614852565b6149f26080830185613cfc565b6149ff60a0830184613baa565b979650505050505050565b600081519050614a19816139dd565b92915050565b600080600060608486031215614a3857614a376139ce565b5b6000614a4686828701614a0a565b9350506020614a5786828701614a0a565b9250506040614a6886828701614a0a565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207a42ec559492693d850a89c27e88b65732ece789ae89352d599a5d0062131a0764736f6c63430008120033
Deployed Bytecode Sourcemap
14264:14699:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18004:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20676:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19298:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16007:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18281:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14648:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20231:437;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21962:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23661:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21841:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14790:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23122:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18190:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15450:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18667:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22305:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15182:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16122:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22508:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15011:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15497:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15538;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18389:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15821:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22655:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15879:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15667:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19812:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15364:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15127:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5801:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6026:145;;;;;;;;;;;;;:::i;:::-;;18095:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19170:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15711:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15579:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18893:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22985:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23486:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21135:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22806:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15278:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16055:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15407:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15068:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14517:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16169:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15236:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18516:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21627:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20088:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15624:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22105:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6179:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15320:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19949:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16220:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18004:83;18041:13;18074:5;18067:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18004:83;:::o;20676:447::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20827:15:::1;20807:17;:35;;;;20873:15;20853:17;:35;;;;20921:17;20899:19;:39;;;;20972:65;21017:19;;20972:40;20994:17;;20972;;:21;;:40;;;;:::i;:::-;:44;;:65;;;;:::i;:::-;20951:18;:86;;;;21078:2;21056:18;;:24;;21048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20676:447:::0;;;:::o;19298:161::-;19373:4;19390:39;19399:12;:10;:12::i;:::-;19413:7;19422:6;19390:8;:39::i;:::-;19447:4;19440:11;;19298:161;;;;:::o;16007:41::-;;;;;;;;;;;;;:::o;18281:100::-;18334:7;18361:12;;18354:19;;18281:100;:::o;14648:101::-;;;;;;;;;;;;;:::o;20231:437::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20380:15:::1;20361:16;:34;;;;20425:15;20406:16;:34;;;;20472:17;20451:18;:38;;;;20522:62;20565:18;;20522:38;20543:16;;20522;;:20;;:38;;;;:::i;:::-;:42;;:62;;;;:::i;:::-;20502:17;:82;;;;20624:2;20603:17;;:23;;20595:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20231:437:::0;;;:::o;21962:135::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22083:6:::1;22053:19;:27;22073:6;22053:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21962:135:::0;;:::o;23661:313::-;23759:4;23776:36;23786:6;23794:9;23805:6;23776:9;:36::i;:::-;;23823:121;23832:6;23840:12;:10;:12::i;:::-;23854:89;23892:6;23854:89;;;;;;;;;;;;;;;;;:11;:19;23866:6;23854:19;;;;;;;;;;;;;;;:33;23874:12;:10;:12::i;:::-;23854:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;23823:8;:121::i;:::-;23962:4;23955:11;;23661:313;;;;;:::o;21841:113::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21938:8:::1;21919:16;;:27;;;;;;;;;;;;;;;;;;21841:113:::0;:::o;14790:81::-;;;:::o;23122:128::-;23175:7;23202:40;23219:22;23229:11;23219:9;:22::i;:::-;23202:12;;:16;;:40;;;;:::i;:::-;23195:47;;23122:128;:::o;18190:83::-;18231:5;18256:9;;;;;;;;;;;18249:16;;18190:83;:::o;15450:38::-;;;;:::o;18667:218::-;18755:4;18772:83;18781:12;:10;:12::i;:::-;18795:7;18804:50;18843:10;18804:11;:25;18816:12;:10;:12::i;:::-;18804:25;;;;;;;;;;;;;;;:34;18830:7;18804:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18772:8;:83::i;:::-;18873:4;18866:11;;18667:218;;;;:::o;22305:195::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22406:1:::1;22395:8;:12;22387:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22484:8;22458:23;:34;;;;22305:195:::0;:::o;15182:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;16122:40::-;;;;;;;;;;;;;:::o;22508:139::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22628:10:::1;22595:22;;:44;;;;;;;;;;;;;;;;;;22508:139:::0;:::o;15011:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;15497:34::-;;;;:::o;15538:::-;;;;:::o;18389:119::-;18455:7;18482:9;:18;18492:7;18482:18;;;;;;;;;;;;;;;;18475:25;;18389:119;;;:::o;15821:51::-;;;;:::o;22655:143::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22779:10:::1;22744:24;;:46;;;;;;;;;;;;;;;;;;22655:143:::0;:::o;15879:49::-;;;;:::o;15667:37::-;;;;:::o;19812:129::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19925:8:::1;19901:12;:21;19914:7;19901:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19812:129:::0;;:::o;15364:36::-;;;;:::o;15127:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5801:79::-;5839:7;5866:6;;;;;;;;;;;5859:13;;5801:79;:::o;6026:145::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6130:1:::1;6093:40;;6114:6;::::0;::::1;;;;;;;;6093:40;;;;;;;;;;;;6161:1;6144:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6026:145::o:0;18095:87::-;18134:13;18167:7;18160:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18095:87;:::o;19170:120::-;19232:7;19259:23;;19252:30;;19170:120;:::o;15711:44::-;;;;:::o;15579:36::-;;;;:::o;18893:269::-;18986:4;19003:129;19012:12;:10;:12::i;:::-;19026:7;19035:96;19074:15;19035:96;;;;;;;;;;;;;;;;;:11;:25;19047:12;:10;:12::i;:::-;19035:25;;;;;;;;;;;;;;;:34;19061:7;19035:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19003:8;:129::i;:::-;19150:4;19143:11;;18893:269;;;;:::o;22985:125::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23094:8:::1;23066:25;;:36;;;;;;;;;;;;;;;;;;22985:125:::0;:::o;23486:167::-;23564:4;23581:42;23591:12;:10;:12::i;:::-;23605:9;23616:6;23581:9;:42::i;:::-;;23641:4;23634:11;;23486:167;;;;:::o;21135:480::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21301:17:::1;21283:15;:35;;;;21347:17;21329:15;:35;;;;21395:19;21375:17;:39;;;;21454:59;21495:17;;21454:36;21474:15;;21454;;:19;;:36;;;;:::i;:::-;:40;;:59;;;;:::i;:::-;21427:24;:86;;;;21559:2;21532:24;;:29;;21524:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21135:480:::0;;;:::o;22806:171::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22907:8:::1;22883:21;;:32;;;;;;;;;;;;;;;;;;22931:38;22960:8;22931:38;;;;;;:::i;:::-;;;;;;;;22806:171:::0;:::o;15278:35::-;;;;:::o;16055:26::-;;;;;;;;;;;;;:::o;15407:36::-;;;;:::o;15068:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;14517:99::-;;;;;;;;;;;;;:::o;16169:44::-;;;;;;;;;;;;;:::o;15236:35::-;;;;:::o;18516:143::-;18597:7;18624:11;:18;18636:5;18624:18;;;;;;;;;;;;;;;:27;18643:7;18624:27;;;;;;;;;;;;;;;;18617:34;;18516:143;;;;:::o;21627:206::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21742:3:::1;21727:12;;:18;;;;:::i;:::-;21712:11;:33;;21704:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;21814:11;21799:12;:26;;;;21627:206:::0;:::o;20088:135::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20207:8:::1;20178:17;:26;20196:7;20178:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20088:135:::0;;:::o;15624:36::-;;;;:::o;22105:192::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22212:3:::1;22197:12;;:18;;;;:::i;:::-;22185:8;:30;;22177:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;22281:8;22267:10;:22;;;;22105:192:::0;:::o;6179:244::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6288:1:::1;6268:22;;:8;:22;;::::0;6260:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6378:8;6349:38;;6370:6;::::0;::::1;;;;;;;;6349:38;;;;;;;;;;;;6407:8;6398:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6179:244:::0;:::o;15320:37::-;;;;:::o;19949:127::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20062:6:::1;20036:15;:23;20052:6;20036:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19949:127:::0;;:::o;16220:35::-;;;;;;;;;;;;;:::o;1171:181::-;1229:7;1249:9;1265:1;1261;:5;;;;:::i;:::-;1249:17;;1290:1;1285;:6;;1277:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1343:1;1336:8;;;1171:181;;;;:::o;103:115::-;156:15;199:10;184:26;;103:115;:::o;19467:337::-;19577:1;19560:19;;:5;:19;;;19552:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19658:1;19639:21;;:7;:21;;;19631:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19742:6;19712:11;:18;19724:5;19712:18;;;;;;;;;;;;;;;:27;19731:7;19712:27;;;;;;;;;;;;;;;:36;;;;19780:7;19764:32;;19773:5;19764:32;;;19789:6;19764:32;;;;;;:::i;:::-;;;;;;;;19467:337;;;:::o;23982:1707::-;24069:4;24114:1;24096:20;;:6;:20;;;24088:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24198:1;24177:23;;:9;:23;;;24169:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24256:16;;;;;;;;;;;24253:1429;;;24306:41;24321:6;24329:9;24340:6;24306:14;:41::i;:::-;24299:48;;;;24253:1429;24403:15;:23;24419:6;24403:23;;;;;;;;;;;;;;;;;;;;;;;;;24402:24;:55;;;;;24431:15;:26;24447:9;24431:26;;;;;;;;;;;;;;;;;;;;;;;;;24430:27;24402:55;24399:170;;;24496:12;;24486:6;:22;;24478:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;24399:170;24597:28;24628:24;24646:4;24628:9;:24::i;:::-;24597:55;;24667:28;24722:23;;24698:20;:47;;24667:78;;24778:23;:44;;;;;24806:16;;;;;;;;;;;24805:17;24778:44;:69;;;;;24827:12;:20;24840:6;24827:20;;;;;;;;;;;;;;;;;;;;;;;;;24826:21;24778:69;:94;;;;;24851:21;;;;;;;;;;;24778:94;24774:305;;;24910:25;;;;;;;;;;;24907:97;;;24981:23;;24958:46;;24907:97;25023:36;25038:20;25023:14;:36::i;:::-;24774:305;25115:53;25137:6;25115:53;;;;;;;;;;;;;;;;;:9;:17;25125:6;25115:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25095:9;:17;25105:6;25095:17;;;;;;;;;;;;;;;:73;;;;25185:19;25208:17;:25;25226:6;25208:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;25237:17;:28;25255:9;25237:28;;;;;;;;;;;;;;;;;;;;;;;;;25208:57;25207:148;;25321:34;25329:6;25337:9;25348:6;25321:7;:34::i;:::-;25207:148;;;25312:6;25207:148;25185:170;;25375:16;;;;;;;;;;;:51;;;;;25396:19;:30;25416:9;25396:30;;;;;;;;;;;;;;;;;;;;;;;;;25395:31;25375:51;25372:133;;;25494:10;;25453:37;25478:11;25453:20;25463:9;25453;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;25445:60;;;;;;25372:133;25545:37;25570:11;25545:9;:20;25555:9;25545:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;25522:9;:20;25532:9;25522:20;;;;;;;;;;;;;;;:60;;;;25621:9;25604:40;;25613:6;25604:40;;;25632:11;25604:40;;;;;;:::i;:::-;;;;;;;;25666:4;25659:11;;;;;23982:1707;;;;;;:::o;1504:192::-;1590:7;1623:1;1618;:6;;1626:12;1610:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1650:9;1666:1;1662;:5;;;;:::i;:::-;1650:17;;1687:1;1680:8;;;1504:192;;;;;:::o;1360:136::-;1418:7;1445:43;1449:1;1452;1445:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1438:50;;1360:136;;;;:::o;25697:330::-;25790:4;25827:53;25849:6;25827:53;;;;;;;;;;;;;;;;;:9;:17;25837:6;25827:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25807:9;:17;25817:6;25807:17;;;;;;;;;;;;;;;:73;;;;25914:32;25939:6;25914:9;:20;25924:9;25914:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;25891:9;:20;25901:9;25891:20;;;;;;;;;;;;;;;:55;;;;25979:9;25962:35;;25971:6;25962:35;;;25990:6;25962:35;;;;;;:::i;:::-;;;;;;;;26015:4;26008:11;;25697:330;;;;;:::o;26035:1090::-;16697:4;16678:16;;:23;;;;;;;;;;;;;;;;;;26117:19:::1;26139:65;26202:1;26139:58;26172:24;;26139:28;26151:15;;26139:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;26117:87;;26215:21;26239:24;26251:11;26239:7;:11;;:24;;;;:::i;:::-;26215:48;;26276:31;26293:13;26276:16;:31::i;:::-;26318:22;26343:21;26318:46;;26377:19;26399:52;26428:22;26448:1;26428:15;;:19;;:22;;;;:::i;:::-;26399:24;;:28;;:52;;;;:::i;:::-;26377:74;;26472:26;26501:59;26558:1;26501:52;26541:11;26501:35;26520:15;;26501:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;26472:88;;26571:28;26602:54;26644:11;26602:37;26621:17;;26602:14;:18;;:37;;;;:::i;:::-;:41;;:54;;;;:::i;:::-;26571:85;;26667:26;26696:64;26739:20;26696:38;26715:18;26696:14;:18;;:38;;;;:::i;:::-;:42;;:64;;;;:::i;:::-;26667:93;;26797:1;26776:18;:22;26773:104;;;26813:64;26834:22;;;;;;;;;;;26858:18;26813:20;:64::i;:::-;26773:104;26916:1;26893:20;:24;26890:110;;;26932:68;26953:24;;;;;;;;;;;26979:20;26932;:68::i;:::-;26890:110;27037:1;27016:18;:22;:41;;;;;27056:1;27042:11;:15;27016:41;27013:104;;;27072:45;27085:11;27098:18;27072:12;:45::i;:::-;27013:104;26096:1029;;;;;;;16743:5:::0;16724:16;;:24;;;;;;;;;;;;;;;;;;26035:1090;:::o;28332:622::-;28418:7;28448:17;28468:1;28448:21;;28493:12;:20;28506:6;28493:20;;;;;;;;;;;;;;;;;;;;;;;;;28490:223;;;28542:38;28576:3;28542:29;28553:17;;28542:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;28530:50;;28490:223;;;28610:12;:23;28623:9;28610:23;;;;;;;;;;;;;;;;;;;;;;;;;28607:106;;;28662:39;28697:3;28662:30;28673:18;;28662:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;28650:51;;28607:106;28490:223;28748:1;28736:9;:13;28733:173;;;28793:39;28822:9;28793;:24;28811:4;28793:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;28766:9;:24;28784:4;28766:24;;;;;;;;;;;;;;;:66;;;;28877:4;28852:42;;28861:6;28852:42;;;28884:9;28852:42;;;;;;:::i;:::-;;;;;;;;28733:173;28925:21;28936:9;28925:6;:10;;:21;;;;:::i;:::-;28918:28;;;28332:622;;;;;:::o;1704:250::-;1762:7;1791:1;1786;:6;1782:47;;1816:1;1809:8;;;;1782:47;1841:9;1857:1;1853;:5;;;;:::i;:::-;1841:17;;1886:1;1881;1877;:5;;;;:::i;:::-;:10;1869:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1945:1;1938:8;;;1704:250;;;;;:::o;1962:132::-;2020:7;2047:39;2051:1;2054;2047:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2040:46;;1962:132;;;;:::o;27137:666::-;27263:21;27301:1;27287:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27263:40;;27332:4;27314;27319:1;27314:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27358:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27348:4;27353:1;27348:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27393:62;27410:4;27425:15;;;;;;;;;;;27443:11;27393:8;:62::i;:::-;27494:15;;;;;;;;;;;:66;;;27575:11;27601:1;27645:4;27672;27708:15;27494:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27760:35;27777:11;27790:4;27760:35;;;;;;;:::i;:::-;;;;;;;;27192:611;27137:666;:::o;23258:126::-;23350:9;:18;;:26;23369:6;23350:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23258:126;;:::o;27811:513::-;27959:62;27976:4;27991:15;;;;;;;;;;;28009:11;27959:8;:62::i;:::-;28064:15;;;;;;;;;;;:31;;;28103:9;28136:4;28156:11;28182:1;28225;28268:7;:5;:7::i;:::-;28290:15;28064:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27811:513;;:::o;2102:278::-;2188:7;2220:1;2216;:5;2223:12;2208:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2247:9;2263:1;2259;:5;;;;:::i;:::-;2247:17;;2371:1;2364:8;;;2102:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:619::-;2109:6;2117;2125;2174:2;2162:9;2153:7;2149:23;2145:32;2142:119;;;2180:79;;:::i;:::-;2142:119;2300:1;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2271:117;2427:2;2453:53;2498:7;2489:6;2478:9;2474:22;2453:53;:::i;:::-;2443:63;;2398:118;2555:2;2581:53;2626:7;2617:6;2606:9;2602:22;2581:53;:::i;:::-;2571:63;;2526:118;2032:619;;;;;:::o;2657:126::-;2694:7;2734:42;2727:5;2723:54;2712:65;;2657:126;;;:::o;2789:96::-;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:474::-;3232:6;3240;3289:2;3277:9;3268:7;3264:23;3260:32;3257:119;;;3295:79;;:::i;:::-;3257:119;3415:1;3440:53;3485:7;3476:6;3465:9;3461:22;3440:53;:::i;:::-;3430:63;;3386:117;3542:2;3568:53;3613:7;3604:6;3593:9;3589:22;3568:53;:::i;:::-;3558:63;;3513:118;3164:474;;;;;:::o;3644:90::-;3678:7;3721:5;3714:13;3707:21;3696:32;;3644:90;;;:::o;3740:109::-;3821:21;3836:5;3821:21;:::i;:::-;3816:3;3809:34;3740:109;;:::o;3855:210::-;3942:4;3980:2;3969:9;3965:18;3957:26;;3993:65;4055:1;4044:9;4040:17;4031:6;3993:65;:::i;:::-;3855:210;;;;:::o;4071:60::-;4099:3;4120:5;4113:12;;4071:60;;;:::o;4137:142::-;4187:9;4220:53;4238:34;4247:24;4265:5;4247:24;:::i;:::-;4238:34;:::i;:::-;4220:53;:::i;:::-;4207:66;;4137:142;;;:::o;4285:126::-;4335:9;4368:37;4399:5;4368:37;:::i;:::-;4355:50;;4285:126;;;:::o;4417:153::-;4494:9;4527:37;4558:5;4527:37;:::i;:::-;4514:50;;4417:153;;;:::o;4576:185::-;4690:64;4748:5;4690:64;:::i;:::-;4685:3;4678:77;4576:185;;:::o;4767:276::-;4887:4;4925:2;4914:9;4910:18;4902:26;;4938:98;5033:1;5022:9;5018:17;5009:6;4938:98;:::i;:::-;4767:276;;;;:::o;5049:118::-;5136:24;5154:5;5136:24;:::i;:::-;5131:3;5124:37;5049:118;;:::o;5173:222::-;5266:4;5304:2;5293:9;5289:18;5281:26;;5317:71;5385:1;5374:9;5370:17;5361:6;5317:71;:::i;:::-;5173:222;;;;:::o;5401:104::-;5446:7;5475:24;5493:5;5475:24;:::i;:::-;5464:35;;5401:104;;;:::o;5511:142::-;5614:32;5640:5;5614:32;:::i;:::-;5609:3;5602:45;5511:142;;:::o;5659:254::-;5768:4;5806:2;5795:9;5791:18;5783:26;;5819:87;5903:1;5892:9;5888:17;5879:6;5819:87;:::i;:::-;5659:254;;;;:::o;5919:116::-;5989:21;6004:5;5989:21;:::i;:::-;5982:5;5979:32;5969:60;;6025:1;6022;6015:12;5969:60;5919:116;:::o;6041:133::-;6084:5;6122:6;6109:20;6100:29;;6138:30;6162:5;6138:30;:::i;:::-;6041:133;;;;:::o;6180:468::-;6245:6;6253;6302:2;6290:9;6281:7;6277:23;6273:32;6270:119;;;6308:79;;:::i;:::-;6270:119;6428:1;6453:53;6498:7;6489:6;6478:9;6474:22;6453:53;:::i;:::-;6443:63;;6399:117;6555:2;6581:50;6623:7;6614:6;6603:9;6599:22;6581:50;:::i;:::-;6571:60;;6526:115;6180:468;;;;;:::o;6654:619::-;6731:6;6739;6747;6796:2;6784:9;6775:7;6771:23;6767:32;6764:119;;;6802:79;;:::i;:::-;6764:119;6922:1;6947:53;6992:7;6983:6;6972:9;6968:22;6947:53;:::i;:::-;6937:63;;6893:117;7049:2;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7020:118;7177:2;7203:53;7248:7;7239:6;7228:9;7224:22;7203:53;:::i;:::-;7193:63;;7148:118;6654:619;;;;;:::o;7279:323::-;7335:6;7384:2;7372:9;7363:7;7359:23;7355:32;7352:119;;;7390:79;;:::i;:::-;7352:119;7510:1;7535:50;7577:7;7568:6;7557:9;7553:22;7535:50;:::i;:::-;7525:60;;7481:114;7279:323;;;;:::o;7608:118::-;7695:24;7713:5;7695:24;:::i;:::-;7690:3;7683:37;7608:118;;:::o;7732:222::-;7825:4;7863:2;7852:9;7848:18;7840:26;;7876:71;7944:1;7933:9;7929:17;7920:6;7876:71;:::i;:::-;7732:222;;;;:::o;7960:86::-;7995:7;8035:4;8028:5;8024:16;8013:27;;7960:86;;;:::o;8052:112::-;8135:22;8151:5;8135:22;:::i;:::-;8130:3;8123:35;8052:112;;:::o;8170:214::-;8259:4;8297:2;8286:9;8282:18;8274:26;;8310:67;8374:1;8363:9;8359:17;8350:6;8310:67;:::i;:::-;8170:214;;;;:::o;8390:329::-;8449:6;8498:2;8486:9;8477:7;8473:23;8469:32;8466:119;;;8504:79;;:::i;:::-;8466:119;8624:1;8649:53;8694:7;8685:6;8674:9;8670:22;8649:53;:::i;:::-;8639:63;;8595:117;8390:329;;;;:::o;8725:::-;8784:6;8833:2;8821:9;8812:7;8808:23;8804:32;8801:119;;;8839:79;;:::i;:::-;8801:119;8959:1;8984:53;9029:7;9020:6;9009:9;9005:22;8984:53;:::i;:::-;8974:63;;8930:117;8725:329;;;;:::o;9060:474::-;9128:6;9136;9185:2;9173:9;9164:7;9160:23;9156:32;9153:119;;;9191:79;;:::i;:::-;9153:119;9311:1;9336:53;9381:7;9372:6;9361:9;9357:22;9336:53;:::i;:::-;9326:63;;9282:117;9438:2;9464:53;9509:7;9500:6;9489:9;9485:22;9464:53;:::i;:::-;9454:63;;9409:118;9060:474;;;;;:::o;9540:180::-;9588:77;9585:1;9578:88;9685:4;9682:1;9675:15;9709:4;9706:1;9699:15;9726:320;9770:6;9807:1;9801:4;9797:12;9787:22;;9854:1;9848:4;9844:12;9875:18;9865:81;;9931:4;9923:6;9919:17;9909:27;;9865:81;9993:2;9985:6;9982:14;9962:18;9959:38;9956:84;;10012:18;;:::i;:::-;9956:84;9777:269;9726:320;;;:::o;10052:182::-;10192:34;10188:1;10180:6;10176:14;10169:58;10052:182;:::o;10240:366::-;10382:3;10403:67;10467:2;10462:3;10403:67;:::i;:::-;10396:74;;10479:93;10568:3;10479:93;:::i;:::-;10597:2;10592:3;10588:12;10581:19;;10240:366;;;:::o;10612:419::-;10778:4;10816:2;10805:9;10801:18;10793:26;;10865:9;10859:4;10855:20;10851:1;10840:9;10836:17;10829:47;10893:131;11019:4;10893:131;:::i;:::-;10885:139;;10612:419;;;:::o;11037:180::-;11177:32;11173:1;11165:6;11161:14;11154:56;11037:180;:::o;11223:366::-;11365:3;11386:67;11450:2;11445:3;11386:67;:::i;:::-;11379:74;;11462:93;11551:3;11462:93;:::i;:::-;11580:2;11575:3;11571:12;11564:19;;11223:366;;;:::o;11595:419::-;11761:4;11799:2;11788:9;11784:18;11776:26;;11848:9;11842:4;11838:20;11834:1;11823:9;11819:17;11812:47;11876:131;12002:4;11876:131;:::i;:::-;11868:139;;11595:419;;;:::o;12020:179::-;12160:31;12156:1;12148:6;12144:14;12137:55;12020:179;:::o;12205:366::-;12347:3;12368:67;12432:2;12427:3;12368:67;:::i;:::-;12361:74;;12444:93;12533:3;12444:93;:::i;:::-;12562:2;12557:3;12553:12;12546:19;;12205:366;;;:::o;12577:419::-;12743:4;12781:2;12770:9;12766:18;12758:26;;12830:9;12824:4;12820:20;12816:1;12805:9;12801:17;12794:47;12858:131;12984:4;12858:131;:::i;:::-;12850:139;;12577:419;;;:::o;13002:222::-;13142:34;13138:1;13130:6;13126:14;13119:58;13211:5;13206:2;13198:6;13194:15;13187:30;13002:222;:::o;13230:366::-;13372:3;13393:67;13457:2;13452:3;13393:67;:::i;:::-;13386:74;;13469:93;13558:3;13469:93;:::i;:::-;13587:2;13582:3;13578:12;13571:19;;13230:366;;;:::o;13602:419::-;13768:4;13806:2;13795:9;13791:18;13783:26;;13855:9;13849:4;13845:20;13841:1;13830:9;13826:17;13819:47;13883:131;14009:4;13883:131;:::i;:::-;13875:139;;13602:419;;;:::o;14027:228::-;14167:34;14163:1;14155:6;14151:14;14144:58;14236:11;14231:2;14223:6;14219:15;14212:36;14027:228;:::o;14261:366::-;14403:3;14424:67;14488:2;14483:3;14424:67;:::i;:::-;14417:74;;14500:93;14589:3;14500:93;:::i;:::-;14618:2;14613:3;14609:12;14602:19;;14261:366;;;:::o;14633:419::-;14799:4;14837:2;14826:9;14822:18;14814:26;;14886:9;14880:4;14876:20;14872:1;14861:9;14857:17;14850:47;14914:131;15040:4;14914:131;:::i;:::-;14906:139;;14633:419;;;:::o;15058:180::-;15106:77;15103:1;15096:88;15203:4;15200:1;15193:15;15227:4;15224:1;15217:15;15244:180;15292:77;15289:1;15282:88;15389:4;15386:1;15379:15;15413:4;15410:1;15403:15;15430:185;15470:1;15487:20;15505:1;15487:20;:::i;:::-;15482:25;;15521:20;15539:1;15521:20;:::i;:::-;15516:25;;15560:1;15550:35;;15565:18;;:::i;:::-;15550:35;15607:1;15604;15600:9;15595:14;;15430:185;;;;:::o;15621:225::-;15761:34;15757:1;15749:6;15745:14;15738:58;15830:8;15825:2;15817:6;15813:15;15806:33;15621:225;:::o;15852:366::-;15994:3;16015:67;16079:2;16074:3;16015:67;:::i;:::-;16008:74;;16091:93;16180:3;16091:93;:::i;:::-;16209:2;16204:3;16200:12;16193:19;;15852:366;;;:::o;16224:419::-;16390:4;16428:2;16417:9;16413:18;16405:26;;16477:9;16471:4;16467:20;16463:1;16452:9;16448:17;16441:47;16505:131;16631:4;16505:131;:::i;:::-;16497:139;;16224:419;;;:::o;16649:223::-;16789:34;16785:1;16777:6;16773:14;16766:58;16858:6;16853:2;16845:6;16841:15;16834:31;16649:223;:::o;16878:366::-;17020:3;17041:67;17105:2;17100:3;17041:67;:::i;:::-;17034:74;;17117:93;17206:3;17117:93;:::i;:::-;17235:2;17230:3;17226:12;17219:19;;16878:366;;;:::o;17250:419::-;17416:4;17454:2;17443:9;17439:18;17431:26;;17503:9;17497:4;17493:20;17489:1;17478:9;17474:17;17467:47;17531:131;17657:4;17531:131;:::i;:::-;17523:139;;17250:419;;;:::o;17675:225::-;17815:34;17811:1;17803:6;17799:14;17792:58;17884:8;17879:2;17871:6;17867:15;17860:33;17675:225;:::o;17906:366::-;18048:3;18069:67;18133:2;18128:3;18069:67;:::i;:::-;18062:74;;18145:93;18234:3;18145:93;:::i;:::-;18263:2;18258:3;18254:12;18247:19;;17906:366;;;:::o;18278:419::-;18444:4;18482:2;18471:9;18467:18;18459:26;;18531:9;18525:4;18521:20;18517:1;18506:9;18502:17;18495:47;18559:131;18685:4;18559:131;:::i;:::-;18551:139;;18278:419;;;:::o;18703:191::-;18743:3;18762:20;18780:1;18762:20;:::i;:::-;18757:25;;18796:20;18814:1;18796:20;:::i;:::-;18791:25;;18839:1;18836;18832:9;18825:16;;18860:3;18857:1;18854:10;18851:36;;;18867:18;;:::i;:::-;18851:36;18703:191;;;;:::o;18900:177::-;19040:29;19036:1;19028:6;19024:14;19017:53;18900:177;:::o;19083:366::-;19225:3;19246:67;19310:2;19305:3;19246:67;:::i;:::-;19239:74;;19322:93;19411:3;19322:93;:::i;:::-;19440:2;19435:3;19431:12;19424:19;;19083:366;;;:::o;19455:419::-;19621:4;19659:2;19648:9;19644:18;19636:26;;19708:9;19702:4;19698:20;19694:1;19683:9;19679:17;19672:47;19736:131;19862:4;19736:131;:::i;:::-;19728:139;;19455:419;;;:::o;19880:223::-;20020:34;20016:1;20008:6;20004:14;19997:58;20089:6;20084:2;20076:6;20072:15;20065:31;19880:223;:::o;20109:366::-;20251:3;20272:67;20336:2;20331:3;20272:67;:::i;:::-;20265:74;;20348:93;20437:3;20348:93;:::i;:::-;20466:2;20461:3;20457:12;20450:19;;20109:366;;;:::o;20481:419::-;20647:4;20685:2;20674:9;20670:18;20662:26;;20734:9;20728:4;20724:20;20720:1;20709:9;20705:17;20698:47;20762:131;20888:4;20762:131;:::i;:::-;20754:139;;20481:419;;;:::o;20906:221::-;21046:34;21042:1;21034:6;21030:14;21023:58;21115:4;21110:2;21102:6;21098:15;21091:29;20906:221;:::o;21133:366::-;21275:3;21296:67;21360:2;21355:3;21296:67;:::i;:::-;21289:74;;21372:93;21461:3;21372:93;:::i;:::-;21490:2;21485:3;21481:12;21474:19;;21133:366;;;:::o;21505:419::-;21671:4;21709:2;21698:9;21694:18;21686:26;;21758:9;21752:4;21748:20;21744:1;21733:9;21729:17;21722:47;21786:131;21912:4;21786:131;:::i;:::-;21778:139;;21505:419;;;:::o;21930:224::-;22070:34;22066:1;22058:6;22054:14;22047:58;22139:7;22134:2;22126:6;22122:15;22115:32;21930:224;:::o;22160:366::-;22302:3;22323:67;22387:2;22382:3;22323:67;:::i;:::-;22316:74;;22399:93;22488:3;22399:93;:::i;:::-;22517:2;22512:3;22508:12;22501:19;;22160:366;;;:::o;22532:419::-;22698:4;22736:2;22725:9;22721:18;22713:26;;22785:9;22779:4;22775:20;22771:1;22760:9;22756:17;22749:47;22813:131;22939:4;22813:131;:::i;:::-;22805:139;;22532:419;;;:::o;22957:222::-;23097:34;23093:1;23085:6;23081:14;23074:58;23166:5;23161:2;23153:6;23149:15;23142:30;22957:222;:::o;23185:366::-;23327:3;23348:67;23412:2;23407:3;23348:67;:::i;:::-;23341:74;;23424:93;23513:3;23424:93;:::i;:::-;23542:2;23537:3;23533:12;23526:19;;23185:366;;;:::o;23557:419::-;23723:4;23761:2;23750:9;23746:18;23738:26;;23810:9;23804:4;23800:20;23796:1;23785:9;23781:17;23774:47;23838:131;23964:4;23838:131;:::i;:::-;23830:139;;23557:419;;;:::o;23982:227::-;24122:34;24118:1;24110:6;24106:14;24099:58;24191:10;24186:2;24178:6;24174:15;24167:35;23982:227;:::o;24215:366::-;24357:3;24378:67;24442:2;24437:3;24378:67;:::i;:::-;24371:74;;24454:93;24543:3;24454:93;:::i;:::-;24572:2;24567:3;24563:12;24556:19;;24215:366;;;:::o;24587:419::-;24753:4;24791:2;24780:9;24776:18;24768:26;;24840:9;24834:4;24830:20;24826:1;24815:9;24811:17;24804:47;24868:131;24994:4;24868:131;:::i;:::-;24860:139;;24587:419;;;:::o;25012:194::-;25052:4;25072:20;25090:1;25072:20;:::i;:::-;25067:25;;25106:20;25124:1;25106:20;:::i;:::-;25101:25;;25150:1;25147;25143:9;25135:17;;25174:1;25168:4;25165:11;25162:37;;;25179:18;;:::i;:::-;25162:37;25012:194;;;;:::o;25212:410::-;25252:7;25275:20;25293:1;25275:20;:::i;:::-;25270:25;;25309:20;25327:1;25309:20;:::i;:::-;25304:25;;25364:1;25361;25357:9;25386:30;25404:11;25386:30;:::i;:::-;25375:41;;25565:1;25556:7;25552:15;25549:1;25546:22;25526:1;25519:9;25499:83;25476:139;;25595:18;;:::i;:::-;25476:139;25260:362;25212:410;;;;:::o;25628:220::-;25768:34;25764:1;25756:6;25752:14;25745:58;25837:3;25832:2;25824:6;25820:15;25813:28;25628:220;:::o;25854:366::-;25996:3;26017:67;26081:2;26076:3;26017:67;:::i;:::-;26010:74;;26093:93;26182:3;26093:93;:::i;:::-;26211:2;26206:3;26202:12;26195:19;;25854:366;;;:::o;26226:419::-;26392:4;26430:2;26419:9;26415:18;26407:26;;26479:9;26473:4;26469:20;26465:1;26454:9;26450:17;26443:47;26507:131;26633:4;26507:131;:::i;:::-;26499:139;;26226:419;;;:::o;26651:180::-;26699:77;26696:1;26689:88;26796:4;26793:1;26786:15;26820:4;26817:1;26810:15;26837:180;26885:77;26882:1;26875:88;26982:4;26979:1;26972:15;27006:4;27003:1;26996:15;27023:143;27080:5;27111:6;27105:13;27096:22;;27127:33;27154:5;27127:33;:::i;:::-;27023:143;;;;:::o;27172:351::-;27242:6;27291:2;27279:9;27270:7;27266:23;27262:32;27259:119;;;27297:79;;:::i;:::-;27259:119;27417:1;27442:64;27498:7;27489:6;27478:9;27474:22;27442:64;:::i;:::-;27432:74;;27388:128;27172:351;;;;:::o;27529:85::-;27574:7;27603:5;27592:16;;27529:85;;;:::o;27620:158::-;27678:9;27711:61;27729:42;27738:32;27764:5;27738:32;:::i;:::-;27729:42;:::i;:::-;27711:61;:::i;:::-;27698:74;;27620:158;;;:::o;27784:147::-;27879:45;27918:5;27879:45;:::i;:::-;27874:3;27867:58;27784:147;;:::o;27937:114::-;28004:6;28038:5;28032:12;28022:22;;27937:114;;;:::o;28057:184::-;28156:11;28190:6;28185:3;28178:19;28230:4;28225:3;28221:14;28206:29;;28057:184;;;;:::o;28247:132::-;28314:4;28337:3;28329:11;;28367:4;28362:3;28358:14;28350:22;;28247:132;;;:::o;28385:108::-;28462:24;28480:5;28462:24;:::i;:::-;28457:3;28450:37;28385:108;;:::o;28499:179::-;28568:10;28589:46;28631:3;28623:6;28589:46;:::i;:::-;28667:4;28662:3;28658:14;28644:28;;28499:179;;;;:::o;28684:113::-;28754:4;28786;28781:3;28777:14;28769:22;;28684:113;;;:::o;28833:732::-;28952:3;28981:54;29029:5;28981:54;:::i;:::-;29051:86;29130:6;29125:3;29051:86;:::i;:::-;29044:93;;29161:56;29211:5;29161:56;:::i;:::-;29240:7;29271:1;29256:284;29281:6;29278:1;29275:13;29256:284;;;29357:6;29351:13;29384:63;29443:3;29428:13;29384:63;:::i;:::-;29377:70;;29470:60;29523:6;29470:60;:::i;:::-;29460:70;;29316:224;29303:1;29300;29296:9;29291:14;;29256:284;;;29260:14;29556:3;29549:10;;28957:608;;;28833:732;;;;:::o;29571:831::-;29834:4;29872:3;29861:9;29857:19;29849:27;;29886:71;29954:1;29943:9;29939:17;29930:6;29886:71;:::i;:::-;29967:80;30043:2;30032:9;30028:18;30019:6;29967:80;:::i;:::-;30094:9;30088:4;30084:20;30079:2;30068:9;30064:18;30057:48;30122:108;30225:4;30216:6;30122:108;:::i;:::-;30114:116;;30240:72;30308:2;30297:9;30293:18;30284:6;30240:72;:::i;:::-;30322:73;30390:3;30379:9;30375:19;30366:6;30322:73;:::i;:::-;29571:831;;;;;;;;:::o;30408:483::-;30579:4;30617:2;30606:9;30602:18;30594:26;;30630:71;30698:1;30687:9;30683:17;30674:6;30630:71;:::i;:::-;30748:9;30742:4;30738:20;30733:2;30722:9;30718:18;30711:48;30776:108;30879:4;30870:6;30776:108;:::i;:::-;30768:116;;30408:483;;;;;:::o;30897:807::-;31146:4;31184:3;31173:9;31169:19;31161:27;;31198:71;31266:1;31255:9;31251:17;31242:6;31198:71;:::i;:::-;31279:72;31347:2;31336:9;31332:18;31323:6;31279:72;:::i;:::-;31361:80;31437:2;31426:9;31422:18;31413:6;31361:80;:::i;:::-;31451;31527:2;31516:9;31512:18;31503:6;31451:80;:::i;:::-;31541:73;31609:3;31598:9;31594:19;31585:6;31541:73;:::i;:::-;31624;31692:3;31681:9;31677:19;31668:6;31624:73;:::i;:::-;30897:807;;;;;;;;;:::o;31710:143::-;31767:5;31798:6;31792:13;31783:22;;31814:33;31841:5;31814:33;:::i;:::-;31710:143;;;;:::o;31859:663::-;31947:6;31955;31963;32012:2;32000:9;31991:7;31987:23;31983:32;31980:119;;;32018:79;;:::i;:::-;31980:119;32138:1;32163:64;32219:7;32210:6;32199:9;32195:22;32163:64;:::i;:::-;32153:74;;32109:128;32276:2;32302:64;32358:7;32349:6;32338:9;32334:22;32302:64;:::i;:::-;32292:74;;32247:129;32415:2;32441:64;32497:7;32488:6;32477:9;32473:22;32441:64;:::i;:::-;32431:74;;32386:129;31859:663;;;;;:::o
Swarm Source
ipfs://7a42ec559492693d850a89c27e88b65732ece789ae89352d599a5d0062131a07
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.