Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Fitness
Overview
Max Total Supply
689,167,681.710147764 DGI
Holders
1,337 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
13,115.159693122 DGIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Digifit
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-23 */ /** *Submitted for verification at Etherscan.io on 2021-12-18 */ pragma solidity 0.6.12; // SPDX-License-Identifier: Unlicensed abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return 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 Address { function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } 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"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } 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) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } 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) { require(b > 0, "SafeMath: division by zero"); return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = now + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(now > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Digifit is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned;// with reward mapping (address => uint256) private _tOwned; // without reward mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isIncludedInFee; mapping (address => bool) private _isExcluded; //from reward address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 700000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; //marketing wallet address public marketingWallet; //switches bool public marketingwalletenabled = true; bool public liquidityenabled = true; bool public burnenabled = true; bool public rewardenabled = true; uint256 public marketingwalletpercent = 2; //2% uint256 public burnpercent = 1; //1% uint256 public rewardpercent = 1; //1% uint256 public prevmarketingwalletpercent= marketingwalletpercent; uint256 public prevburnpercent = burnpercent; uint256 public prevrewardpercent = rewardpercent; string private _name = "DIGIFIT"; string private _symbol = "DGI"; uint8 private _decimals = 9; uint256 public _liquidityFee = 1; uint256 private _previousLiquidityFee = _liquidityFee; //1% event Switchburn(bool enabled, uint256 value); event Switchesupdated(bool markenabled, uint256 markvalue,bool burnenabled, uint256 burnvalue,bool rewardenabled, uint256 rewardvalue); event Switchwallet(bool enabled, uint256 value); event UpdatedMarketingwallet(address wallet); event excludedFromFee(address wallet); event includedInFee(address wallet); event excluded(address wallet); event included(address wallet); event burned(address account,uint256 amount); IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool public inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 private numTokensSellToAddToLiquidity = 700000000 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor (address _marketingwallet) public { require(_marketingwallet != address(0)); _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; marketingWallet = _marketingwallet; emit Transfer(address(0), _msgSender(), _tTotal); } 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 _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function 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 burn(uint256 amount) external returns (bool) { _burn(_msgSender(), amount); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function reflect(uint256 tAmount) external { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function excludeFromFee(address account) public onlyOwner { _isIncludedInFee[account] = false; } function includeInFee(address account) public onlyOwner { _isIncludedInFee[account] = true; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function setLiqiditySaleTokenNumber(uint256 limit) external onlyOwner() { numTokensSellToAddToLiquidity = limit; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function isIncludedInFee(address account) public view returns(bool) { return _isIncludedInFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = false; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isIncludedInFee[from] || _isIncludedInFee[to]){ takeFee = true; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function burningTransfer(uint256 tAmount) private { uint256 tBurn; (tBurn) = _getBurnValues(tAmount); uint256 rbamount = tBurn.mul(_getRate()); _tTotal = _tTotal.sub(tBurn); _rTotal = _rTotal.sub(rbamount); } 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 _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); require(balanceOf(account) >= amount, "ERC20: burn amount exceeds balance"); uint256 rbamount=amount.mul(_getRate()); _tTotal = _tTotal.sub(amount); _rTotal = _rTotal.sub(rbamount); _rOwned[account] = _rOwned[account].sub(rbamount); if(_isExcluded[account]) { _tOwned[account] = _tOwned[account].sub(amount); } emit burned(account,amount); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); uint256 rwalletfee = 0; if(marketingwalletenabled) { (rwalletfee) = _getWalletValues(tAmount); _rOwned[marketingWallet] = _rOwned[marketingWallet].add(rwalletfee); } if(burnenabled) { burningTransfer(tAmount); } _takeLiquidity(tLiquidity); _reflectFee(rFee.sub(rwalletfee), tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); uint256 rwalletfee = 0; if(marketingwalletenabled) { (rwalletfee) = _getWalletValues(tAmount); _rOwned[marketingWallet] = _rOwned[marketingWallet].add(rwalletfee); } if(burnenabled) { burningTransfer(tAmount); } _takeLiquidity(tLiquidity); _reflectFee(rFee.sub(rwalletfee), tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); uint256 rwalletfee = 0; if(marketingwalletenabled) { (rwalletfee) = _getWalletValues(tAmount); _rOwned[marketingWallet] = _rOwned[marketingWallet].add(rwalletfee); } if(burnenabled) { burningTransfer(tAmount); } _takeLiquidity(tLiquidity); _reflectFee(rFee.sub(rwalletfee), tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); uint256 rwalletfee = 0; if(marketingwalletenabled) { (rwalletfee) = _getWalletValues(tAmount); _rOwned[marketingWallet] = _rOwned[marketingWallet].add(rwalletfee); } if(burnenabled) { burningTransfer(tAmount); } _takeLiquidity(tLiquidity); _reflectFee(rFee.sub(rwalletfee), tFee); emit Transfer(sender, recipient, tTransferAmount); } function _getWalletValues(uint256 tAmount) private view returns ( uint256) { uint256 currentRate = _getRate(); //wallet amount uint256 twalletfee = tAmount.div(100).mul(marketingwalletpercent); uint256 rwalletfee= twalletfee.mul(currentRate); return (rwalletfee); } function _getBurnValues(uint256 tAmount) private view returns (uint256) { //burn amount uint256 tBurn = tAmount.div(100).mul(burnpercent); return (tBurn); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 totaltax = _getTotalTax(); uint256 tFee = tAmount.div(100).mul(totaltax); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function updateSwitches(bool _marketingwalletenabled,uint256 markvalue,bool _burnenabled,uint256 burnvalue,bool _rewardholderenabled,uint256 _rewardvalue) external onlyOwner { require(burnvalue <= 100 && _rewardvalue <= 100 && markvalue<=100 , "TaxFee exceed 100"); rewardenabled = _rewardholderenabled; rewardpercent = _rewardvalue; burnenabled = _burnenabled; burnpercent = burnvalue; marketingwalletenabled = _marketingwalletenabled; marketingwalletpercent = markvalue; emit Switchesupdated(marketingwalletenabled,marketingwalletpercent,burnenabled,burnpercent,rewardenabled,rewardpercent); } function updateMarketingWallet(address _marketingwallet) external onlyOwner { require(_marketingwallet != address(0), "new marketing Wallet is the zero address"); marketingWallet = _marketingwallet; emit UpdatedMarketingwallet(_marketingwallet); } function _getTotalTax() private view returns(uint256) { uint256 totaltax = rewardpercent; if(burnenabled) totaltax += burnpercent; if(marketingwalletenabled) totaltax += marketingwalletpercent; return (totaltax); } function removeAllFee() private { if(marketingwalletpercent==0 && _liquidityFee==0 && burnpercent==0 && rewardpercent==0 ) return; prevmarketingwalletpercent = marketingwalletpercent; _previousLiquidityFee = _liquidityFee; prevburnpercent = burnpercent; prevrewardpercent = rewardpercent; marketingwalletpercent = 0; _liquidityFee = 0; burnpercent = 0; rewardpercent = 0; } function restoreAllFee() private { marketingwalletpercent = prevmarketingwalletpercent; // _liquidityFee = _previousLiquidityFee; burnpercent = prevburnpercent; rewardpercent = prevrewardpercent; // holders } // Exclusion Module function excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_marketingwallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Switchburn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"markenabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"markvalue","type":"uint256"},{"indexed":false,"internalType":"bool","name":"burnenabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"burnvalue","type":"uint256"},{"indexed":false,"internalType":"bool","name":"rewardenabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"rewardvalue","type":"uint256"}],"name":"Switchesupdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Switchwallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"UpdatedMarketingwallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"excluded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"excludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"included","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"includedInFee","type":"event"},{"inputs":[],"name":"_liquidityFee","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnenabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnpercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isIncludedInFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityenabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingwalletenabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingwalletpercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prevburnpercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prevmarketingwalletpercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prevrewardpercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardenabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardpercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setLiqiditySaleTokenNumber","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingwallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_marketingwalletenabled","type":"bool"},{"internalType":"uint256","name":"markvalue","type":"uint256"},{"internalType":"bool","name":"_burnenabled","type":"bool"},{"internalType":"uint256","name":"burnvalue","type":"uint256"},{"internalType":"bool","name":"_rewardholderenabled","type":"bool"},{"internalType":"uint256","name":"_rewardvalue","type":"uint256"}],"name":"updateSwitches","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526709b6e64a8ec60000600955600954600019816200001e57fe5b0660001903600a556001600c60146101000a81548160ff0219169083151502179055506001600c60156101000a81548160ff0219169083151502179055506001600c60166101000a81548160ff0219169083151502179055506001600c60176101000a81548160ff0219169083151502179055506002600d556001600e556001600f55600d54601055600e54601155600f546012556040518060400160405280600781526020017f444947494649540000000000000000000000000000000000000000000000000081525060139080519060200190620001009291906200063a565b506040518060400160405280600381526020017f4447490000000000000000000000000000000000000000000000000000000000815250601490805190602001906200014e9291906200063a565b506009601560006101000a81548160ff021916908360ff16021790555060016016556016546017556001601860016101000a81548160ff0219169083151502179055506709b6e64a8ec60000601955348015620001aa57600080fd5b50604051620066cb380380620066cb83398181016040526020811015620001d057600080fd5b81019080805190602001909291905050506000620001f36200063260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620002cc57600080fd5b600a5460036000620002e36200063260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200042157600080fd5b505afa15801562000436573d6000803e3d6000fd5b505050506040513d60208110156200044d57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004c857600080fd5b505af1158015620004dd573d6000803e3d6000fd5b505050506040513d6020811015620004f457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005c36200063260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a35050620006e0565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200067d57805160ff1916838001178555620006ae565b82800160010185558215620006ae579182015b82811115620006ad57825182559160200191906001019062000690565b5b509050620006bd9190620006c1565b5090565b5b80821115620006dc576000816000905550600101620006c2565b5090565b60805160601c60a05160601c615fa36200072860003980611ccf528061393d52508061133d5280614820528061490c52806149335280614a3e5280614a655250615fa36000f3fe6080604052600436106102cd5760003560e01c806375f0a87411610175578063aacebbe3116100dc578063dd46706411610095578063f2fde38b1161006f578063f2fde38b14610fca578063fbac48371461101b578063fcb1264d14611082578063fd34f4eb146110af576102d4565b8063dd46706414610eb9578063dd62ed3e14610ef4578063ea2f0b3714610f79576102d4565b8063aacebbe314610d35578063b41ed69714610d86578063b6c5232414610df9578063c49b9a8014610e24578063d5c3fadb14610e61578063d63cf30814610e8e576102d4565b80638ee88c531161012e5780638ee88c5314610b3657806395d89b4114610b7157806399ae886f14610c01578063a457c2d714610c3c578063a69df4b514610cad578063a9059cbb14610cc4576102d4565b806375f0a874146109ca578063766818b214610a0b578063830b75c614610a3657806385d67cd214610a6157806388f8202014610a8e5780638da5cb5b14610af5576102d4565b80633685d419116102345780634549b039116101ed57806352390c02116101c757806352390c02146108d25780636bc87c3a1461092357806370a082311461094e578063715018a6146109b3576102d4565b80634549b0391461080957806349bd5a5e146108645780634a74bb02146108a5576102d4565b80633685d4191461063d578063395093511461068e5780633bd5d173146106ff5780633fbb2f041461073a57806342966c6814610767578063437823ec146107b8576102d4565b806318160ddd1161028657806318160ddd146104ac5780631cad8758146104d7578063220f66961461050257806323b872dd1461052f5780632d838119146105c0578063313ce5671461060f576102d4565b8063053ab182146102d957806306fdde0314610314578063095ea7b3146103a457806312f1e30b1461041557806313114a9d146104405780631694505e1461046b576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b50610312600480360360208110156102fc57600080fd5b81019080803590602001909291905050506110da565b005b34801561032057600080fd5b5061032961126b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036957808201518184015260208101905061034e565b50505050905090810190601f1680156103965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b057600080fd5b506103fd600480360360408110156103c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061130d565b60405180821515815260200191505060405180910390f35b34801561042157600080fd5b5061042a61132b565b6040518082815260200191505060405180910390f35b34801561044c57600080fd5b50610455611331565b6040518082815260200191505060405180910390f35b34801561047757600080fd5b5061048061133b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104b857600080fd5b506104c161135f565b6040518082815260200191505060405180910390f35b3480156104e357600080fd5b506104ec611369565b6040518082815260200191505060405180910390f35b34801561050e57600080fd5b5061051761136f565b60405180821515815260200191505060405180910390f35b34801561053b57600080fd5b506105a86004803603606081101561055257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611382565b60405180821515815260200191505060405180910390f35b3480156105cc57600080fd5b506105f9600480360360208110156105e357600080fd5b810190808035906020019092919050505061145b565b6040518082815260200191505060405180910390f35b34801561061b57600080fd5b506106246114df565b604051808260ff16815260200191505060405180910390f35b34801561064957600080fd5b5061068c6004803603602081101561066057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f6565b005b34801561069a57600080fd5b506106e7600480360360408110156106b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611880565b60405180821515815260200191505060405180910390f35b34801561070b57600080fd5b506107386004803603602081101561072257600080fd5b8101908080359060200190929190505050611933565b005b34801561074657600080fd5b5061074f611ac4565b60405180821515815260200191505060405180910390f35b34801561077357600080fd5b506107a06004803603602081101561078a57600080fd5b8101908080359060200190929190505050611ad7565b60405180821515815260200191505060405180910390f35b3480156107c457600080fd5b50610807600480360360208110156107db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611af3565b005b34801561081557600080fd5b5061084e6004803603604081101561082c57600080fd5b8101908080359060200190929190803515159060200190929190505050611c16565b6040518082815260200191505060405180910390f35b34801561087057600080fd5b50610879611ccd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108b157600080fd5b506108ba611cf1565b60405180821515815260200191505060405180910390f35b3480156108de57600080fd5b50610921600480360360208110156108f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d04565b005b34801561092f57600080fd5b5061093861201e565b6040518082815260200191505060405180910390f35b34801561095a57600080fd5b5061099d6004803603602081101561097157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612024565b6040518082815260200191505060405180910390f35b3480156109bf57600080fd5b506109c861210f565b005b3480156109d657600080fd5b506109df612295565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a1757600080fd5b50610a206122bb565b6040518082815260200191505060405180910390f35b348015610a4257600080fd5b50610a4b6122c1565b6040518082815260200191505060405180910390f35b348015610a6d57600080fd5b50610a766122c7565b60405180821515815260200191505060405180910390f35b348015610a9a57600080fd5b50610add60048036036020811015610ab157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122da565b60405180821515815260200191505060405180910390f35b348015610b0157600080fd5b50610b0a612330565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b4257600080fd5b50610b6f60048036036020811015610b5957600080fd5b8101908080359060200190929190505050612359565b005b348015610b7d57600080fd5b50610b8661242b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bc6578082015181840152602081019050610bab565b50505050905090810190601f168015610bf35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c0d57600080fd5b50610c3a60048036036020811015610c2457600080fd5b81019080803590602001909291905050506124cd565b005b348015610c4857600080fd5b50610c9560048036036040811015610c5f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061259f565b60405180821515815260200191505060405180910390f35b348015610cb957600080fd5b50610cc261266c565b005b348015610cd057600080fd5b50610d1d60048036036040811015610ce757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612889565b60405180821515815260200191505060405180910390f35b348015610d4157600080fd5b50610d8460048036036020811015610d5857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a7565b005b348015610d9257600080fd5b50610df7600480360360c0811015610da957600080fd5b81019080803515159060200190929190803590602001909291908035151590602001909291908035906020019092919080351515906020019092919080359060200190929190505050612a86565b005b348015610e0557600080fd5b50610e0e612ce2565b6040518082815260200191505060405180910390f35b348015610e3057600080fd5b50610e5f60048036036020811015610e4757600080fd5b81019080803515159060200190929190505050612cec565b005b348015610e6d57600080fd5b50610e76612e0a565b60405180821515815260200191505060405180910390f35b348015610e9a57600080fd5b50610ea3612e1d565b6040518082815260200191505060405180910390f35b348015610ec557600080fd5b50610ef260048036036020811015610edc57600080fd5b8101908080359060200190929190505050612e23565b005b348015610f0057600080fd5b50610f6360048036036040811015610f1757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613014565b6040518082815260200191505060405180910390f35b348015610f8557600080fd5b50610fc860048036036020811015610f9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061309b565b005b348015610fd657600080fd5b5061101960048036036020811015610fed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131be565b005b34801561102757600080fd5b5061106a6004803603602081101561103e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133c9565b60405180821515815260200191505060405180910390f35b34801561108e57600080fd5b5061109761341f565b60405180821515815260200191505060405180910390f35b3480156110bb57600080fd5b506110c4613432565b6040518082815260200191505060405180910390f35b60006110e4613438565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615efa602c913960400191505060405180910390fd5b600061119483613440565b505050505090506111ed81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061124581600a5461349c90919063ffffffff16565b600a8190555061126083600b5461351f90919063ffffffff16565b600b81905550505050565b606060138054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113035780601f106112d857610100808354040283529160200191611303565b820191906000526020600020905b8154815290600101906020018083116112e657829003601f168201915b5050505050905090565b600061132161131a613438565b84846135a7565b6001905092915050565b600d5481565b6000600b54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600954905090565b60105481565b601860009054906101000a900460ff1681565b600061138f84848461379e565b6114508461139b613438565b61144b85604051806060016040528060288152602001615e3f60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611401613438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a799092919063ffffffff16565b6135a7565b600190509392505050565b6000600a548211156114b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615d84602a913960400191505060405180910390fd5b60006114c2613b33565b90506114d78184613b5e90919063ffffffff16565b915050919050565b6000601560009054906101000a900460ff16905090565b6114fe613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60088054905081101561187c578173ffffffffffffffffffffffffffffffffffffffff16600882815481106116b157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561186f5760086001600880549050038154811061170d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061174557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061183557fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561187c565b8080600101915050611680565b5050565b600061192961188d613438565b84611924856005600061189e613438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b6135a7565b6001905092915050565b600061193d613438565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615efa602c913960400191505060405180910390fd5b60006119ed83613440565b50505050509050611a4681600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a9e81600a5461349c90919063ffffffff16565b600a81905550611ab983600b5461351f90919063ffffffff16565b600b81905550505050565b600c60179054906101000a900460ff1681565b6000611aea611ae4613438565b83613be7565b60019050919050565b611afb613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115611c90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611cb0576000611ca084613440565b5050505050905080915050611cc7565b6000611cbb84613440565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601860019054906101000a900460ff1681565b611d0c613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f6057611f1c600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461145b565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120bf57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061210a565b612107600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461145b565b90505b919050565b612117613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b60125481565b600c60169054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612361613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612421576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b606060148054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124c35780601f10612498576101008083540402835291602001916124c3565b820191906000526020600020905b8154815290600101906020018083116124a657829003601f168201915b5050505050905090565b6124d5613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612595576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060198190555050565b60006126626125ac613438565b8461265d85604051806060016040528060258152602001615f4960259139600560006125d6613438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a799092919063ffffffff16565b6135a7565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615f266023913960400191505060405180910390fd5b6002544211612789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061289d612896613438565b848461379e565b6001905092915050565b6128af613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461296f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615df66028913960400191505060405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdd6c02f7a126a3a76f947c9fb5d2e7ff8fa954cec25609c44c4fc37745b5ef0881604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b612a8e613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60648311158015612b60575060648111155b8015612b6d575060648511155b612bdf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f546178466565206578636565642031303000000000000000000000000000000081525060200191505060405180910390fd5b81600c60176101000a81548160ff02191690831515021790555080600f8190555083600c60166101000a81548160ff02191690831515021790555082600e8190555085600c60146101000a81548160ff02191690831515021790555084600d819055507f9273371678e747b9b5765dffc4961bbb33fe1ba000734fd0cdb8eaa80e336634600c60149054906101000a900460ff16600d54600c60169054906101000a900460ff16600e54600c60179054906101000a900460ff16600f5460405180871515815260200186815260200185151581526020018481526020018315158152602001828152602001965050505050505060405180910390a1505050505050565b6000600254905090565b612cf4613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612db4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601860016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b600c60149054906101000a900460ff1681565b600e5481565b612e2b613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612eeb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6130a3613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613163576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6131c6613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613286576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561330c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615dae6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c60159054906101000a900460ff1681565b60115481565b600033905090565b60008060008060008060008060006134578a613ef9565b92509250925060008060006134758d8686613470613b33565b613f7d565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b600082821115613514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b60008082840190508381101561359d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561362d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615ed66024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615dd46022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613824576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615eb16025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615d3f6023913960400191505060405180910390fd5b60008111613903576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615e676029913960400191505060405180910390fd5b600061390e30612024565b9050600060195482101590508080156139345750601860009054906101000a900460ff16155b801561398c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156139a45750601860019054906101000a900460ff165b156139b85760195491506139b782614006565b5b6000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a5b5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613a6557600190505b613a71868686846140e8565b505050505050565b6000838311158290613b26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613aeb578082015181840152602081019050613ad0565b50505050905090810190601f168015613b185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b6000806000613b406143f9565b91509150613b578183613b5e90919063ffffffff16565b9250505090565b6000808211613bd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b818381613bde57fe5b04905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615e906021913960400191505060405180910390fd5b80613c7783612024565b1015613cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615d626022913960400191505060405180910390fd5b6000613cea613cdb613b33565b8361468a90919063ffffffff16565b9050613d018260095461349c90919063ffffffff16565b600981905550613d1c81600a5461349c90919063ffffffff16565b600a81905550613d7481600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e9f57613e5b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b7f8b1897d4e7a3b42570088bb1182eb6518c96a754d44bc9edd4669568bfa983268383604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b600080600080613f07614710565b90506000613f3182613f23606489613b5e90919063ffffffff16565b61468a90919063ffffffff16565b90506000613f3e87614759565b90506000613f6782613f59858b61349c90919063ffffffff16565b61349c90919063ffffffff16565b9050808383965096509650505050509193909250565b600080600080613f96858961468a90919063ffffffff16565b90506000613fad868961468a90919063ffffffff16565b90506000613fc4878961468a90919063ffffffff16565b90506000613fed82613fdf858761349c90919063ffffffff16565b61349c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6001601860006101000a81548160ff0219169083151502179055506000614037600283613b5e90919063ffffffff16565b9050600061404e828461349c90919063ffffffff16565b9050600047905061405e8361478a565b6000614073824761349c90919063ffffffff16565b905061407f8382614a38565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a1505050506000601860006101000a81548160ff02191690831515021790555050565b806140f6576140f5614b89565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156141995750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156141ae576141a9848484614c0a565b6143e5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156142515750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561426657614261848484614f98565b6143e4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561430a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561431f5761431a848484615326565b6143e3565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156143c15750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156143d6576143d184848461561f565b6143e2565b6143e1848484615326565b5b5b5b5b806143f3576143f2615a42565b5b50505050565b6000806000600a5490506000600954905060005b60088054905081101561464d5782600360006008848154811061442c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061451357508160046000600884815481106144ab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561452a57600a5460095494509450505050614686565b6145b3600360006008848154811061453e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461349c90919063ffffffff16565b925061463e60046000600884815481106145c957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361349c90919063ffffffff16565b9150808060010191505061440d565b50614665600954600a54613b5e90919063ffffffff16565b82101561467d57600a54600954935093505050614686565b81819350935050505b9091565b60008083141561469d576000905061470a565b60008284029050828482816146ae57fe5b0414614705576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615e1e6021913960400191505060405180910390fd5b809150505b92915050565b600080600f549050600c60169054906101000a900460ff161561473557600e54810190505b600c60149054906101000a900460ff161561475257600d54810190505b8091505090565b600061478360646147756016548561468a90919063ffffffff16565b613b5e90919063ffffffff16565b9050919050565b6060600267ffffffffffffffff811180156147a457600080fd5b506040519080825280602002602001820160405280156147d35781602001602082028036833780820191505090505b50905030816000815181106147e457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561488457600080fd5b505afa158015614898573d6000803e3d6000fd5b505050506040513d60208110156148ae57600080fd5b8101908080519060200190929190505050816001815181106148cc57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614931307f0000000000000000000000000000000000000000000000000000000000000000846135a7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156149f35780820151818401526020810190506149d8565b505050509050019650505050505050600060405180830381600087803b158015614a1c57600080fd5b505af1158015614a30573d6000803e3d6000fd5b505050505050565b614a63307f0000000000000000000000000000000000000000000000000000000000000000846135a7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614aad612330565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015614b3257600080fd5b505af1158015614b46573d6000803e3d6000fd5b50505050506040513d6060811015614b5d57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b6000600d54148015614b9d57506000601654145b8015614bab57506000600e54145b8015614bb957506000600f54145b15614bc357614c08565b600d54601081905550601654601781905550600e54601181905550600f546012819055506000600d8190555060006016819055506000600e819055506000600f819055505b565b600080600080600080614c1c87613440565b955095509550955095509550614c7a87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d0f86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614da485600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60149054906101000a900460ff1615614ee357614e0788615a68565b9050614e7d8160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b60036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c60169054906101000a900460ff1615614f0257614f0188615ac3565b5b614f0b82615b29565b614f27614f21828761349c90919063ffffffff16565b84615cce565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b600080600080600080614faa87613440565b95509550955095509550955061500886600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061509d83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061513285600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60149054906101000a900460ff16156152715761519588615a68565b905061520b8160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b60036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c60169054906101000a900460ff16156152905761528f88615ac3565b5b61529982615b29565b6152b56152af828761349c90919063ffffffff16565b84615cce565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060008061533887613440565b95509550955095509550955061539686600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061542b85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60149054906101000a900460ff161561556a5761548e88615a68565b90506155048160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b60036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c60169054906101000a900460ff16156155895761558888615ac3565b5b61559282615b29565b6155ae6155a8828761349c90919063ffffffff16565b84615cce565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060008061563187613440565b95509550955095509550955061568f87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061572486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506157b983600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061584e85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60149054906101000a900460ff161561598d576158b188615a68565b90506159278160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b60036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c60169054906101000a900460ff16156159ac576159ab88615ac3565b5b6159b582615b29565b6159d16159cb828761349c90919063ffffffff16565b84615cce565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b601054600d81905550601754601681905550601154600e81905550601254600f81905550565b600080615a73613b33565b90506000615a9f600d54615a91606487613b5e90919063ffffffff16565b61468a90919063ffffffff16565b90506000615ab6838361468a90919063ffffffff16565b9050809350505050919050565b6000615ace82615d08565b90506000615aec615add613b33565b8361468a90919063ffffffff16565b9050615b038260095461349c90919063ffffffff16565b600981905550615b1e81600a5461349c90919063ffffffff16565b600a81905550505050565b6000615b33613b33565b90506000615b4a828461468a90919063ffffffff16565b9050615b9e81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615cc957615c8583600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b615ce382600a5461349c90919063ffffffff16565b600a81905550615cfe81600b5461351f90919063ffffffff16565b600b819055505050565b600080615d33600e54615d25606486613b5e90919063ffffffff16565b61468a90919063ffffffff16565b90508091505091905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736e6577206d61726b6574696e672057616c6c657420697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204ba4d0543e955a530789fbf98ebbaca79b71e22b25c9ace5e892d1915ae56f9c64736f6c634300060c003300000000000000000000000093abe9a5214ea5463200bdc4c613d2ef9b591822
Deployed Bytecode
0x6080604052600436106102cd5760003560e01c806375f0a87411610175578063aacebbe3116100dc578063dd46706411610095578063f2fde38b1161006f578063f2fde38b14610fca578063fbac48371461101b578063fcb1264d14611082578063fd34f4eb146110af576102d4565b8063dd46706414610eb9578063dd62ed3e14610ef4578063ea2f0b3714610f79576102d4565b8063aacebbe314610d35578063b41ed69714610d86578063b6c5232414610df9578063c49b9a8014610e24578063d5c3fadb14610e61578063d63cf30814610e8e576102d4565b80638ee88c531161012e5780638ee88c5314610b3657806395d89b4114610b7157806399ae886f14610c01578063a457c2d714610c3c578063a69df4b514610cad578063a9059cbb14610cc4576102d4565b806375f0a874146109ca578063766818b214610a0b578063830b75c614610a3657806385d67cd214610a6157806388f8202014610a8e5780638da5cb5b14610af5576102d4565b80633685d419116102345780634549b039116101ed57806352390c02116101c757806352390c02146108d25780636bc87c3a1461092357806370a082311461094e578063715018a6146109b3576102d4565b80634549b0391461080957806349bd5a5e146108645780634a74bb02146108a5576102d4565b80633685d4191461063d578063395093511461068e5780633bd5d173146106ff5780633fbb2f041461073a57806342966c6814610767578063437823ec146107b8576102d4565b806318160ddd1161028657806318160ddd146104ac5780631cad8758146104d7578063220f66961461050257806323b872dd1461052f5780632d838119146105c0578063313ce5671461060f576102d4565b8063053ab182146102d957806306fdde0314610314578063095ea7b3146103a457806312f1e30b1461041557806313114a9d146104405780631694505e1461046b576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b50610312600480360360208110156102fc57600080fd5b81019080803590602001909291905050506110da565b005b34801561032057600080fd5b5061032961126b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036957808201518184015260208101905061034e565b50505050905090810190601f1680156103965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b057600080fd5b506103fd600480360360408110156103c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061130d565b60405180821515815260200191505060405180910390f35b34801561042157600080fd5b5061042a61132b565b6040518082815260200191505060405180910390f35b34801561044c57600080fd5b50610455611331565b6040518082815260200191505060405180910390f35b34801561047757600080fd5b5061048061133b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104b857600080fd5b506104c161135f565b6040518082815260200191505060405180910390f35b3480156104e357600080fd5b506104ec611369565b6040518082815260200191505060405180910390f35b34801561050e57600080fd5b5061051761136f565b60405180821515815260200191505060405180910390f35b34801561053b57600080fd5b506105a86004803603606081101561055257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611382565b60405180821515815260200191505060405180910390f35b3480156105cc57600080fd5b506105f9600480360360208110156105e357600080fd5b810190808035906020019092919050505061145b565b6040518082815260200191505060405180910390f35b34801561061b57600080fd5b506106246114df565b604051808260ff16815260200191505060405180910390f35b34801561064957600080fd5b5061068c6004803603602081101561066057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f6565b005b34801561069a57600080fd5b506106e7600480360360408110156106b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611880565b60405180821515815260200191505060405180910390f35b34801561070b57600080fd5b506107386004803603602081101561072257600080fd5b8101908080359060200190929190505050611933565b005b34801561074657600080fd5b5061074f611ac4565b60405180821515815260200191505060405180910390f35b34801561077357600080fd5b506107a06004803603602081101561078a57600080fd5b8101908080359060200190929190505050611ad7565b60405180821515815260200191505060405180910390f35b3480156107c457600080fd5b50610807600480360360208110156107db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611af3565b005b34801561081557600080fd5b5061084e6004803603604081101561082c57600080fd5b8101908080359060200190929190803515159060200190929190505050611c16565b6040518082815260200191505060405180910390f35b34801561087057600080fd5b50610879611ccd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108b157600080fd5b506108ba611cf1565b60405180821515815260200191505060405180910390f35b3480156108de57600080fd5b50610921600480360360208110156108f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d04565b005b34801561092f57600080fd5b5061093861201e565b6040518082815260200191505060405180910390f35b34801561095a57600080fd5b5061099d6004803603602081101561097157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612024565b6040518082815260200191505060405180910390f35b3480156109bf57600080fd5b506109c861210f565b005b3480156109d657600080fd5b506109df612295565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a1757600080fd5b50610a206122bb565b6040518082815260200191505060405180910390f35b348015610a4257600080fd5b50610a4b6122c1565b6040518082815260200191505060405180910390f35b348015610a6d57600080fd5b50610a766122c7565b60405180821515815260200191505060405180910390f35b348015610a9a57600080fd5b50610add60048036036020811015610ab157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122da565b60405180821515815260200191505060405180910390f35b348015610b0157600080fd5b50610b0a612330565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b4257600080fd5b50610b6f60048036036020811015610b5957600080fd5b8101908080359060200190929190505050612359565b005b348015610b7d57600080fd5b50610b8661242b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bc6578082015181840152602081019050610bab565b50505050905090810190601f168015610bf35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c0d57600080fd5b50610c3a60048036036020811015610c2457600080fd5b81019080803590602001909291905050506124cd565b005b348015610c4857600080fd5b50610c9560048036036040811015610c5f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061259f565b60405180821515815260200191505060405180910390f35b348015610cb957600080fd5b50610cc261266c565b005b348015610cd057600080fd5b50610d1d60048036036040811015610ce757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612889565b60405180821515815260200191505060405180910390f35b348015610d4157600080fd5b50610d8460048036036020811015610d5857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a7565b005b348015610d9257600080fd5b50610df7600480360360c0811015610da957600080fd5b81019080803515159060200190929190803590602001909291908035151590602001909291908035906020019092919080351515906020019092919080359060200190929190505050612a86565b005b348015610e0557600080fd5b50610e0e612ce2565b6040518082815260200191505060405180910390f35b348015610e3057600080fd5b50610e5f60048036036020811015610e4757600080fd5b81019080803515159060200190929190505050612cec565b005b348015610e6d57600080fd5b50610e76612e0a565b60405180821515815260200191505060405180910390f35b348015610e9a57600080fd5b50610ea3612e1d565b6040518082815260200191505060405180910390f35b348015610ec557600080fd5b50610ef260048036036020811015610edc57600080fd5b8101908080359060200190929190505050612e23565b005b348015610f0057600080fd5b50610f6360048036036040811015610f1757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613014565b6040518082815260200191505060405180910390f35b348015610f8557600080fd5b50610fc860048036036020811015610f9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061309b565b005b348015610fd657600080fd5b5061101960048036036020811015610fed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131be565b005b34801561102757600080fd5b5061106a6004803603602081101561103e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133c9565b60405180821515815260200191505060405180910390f35b34801561108e57600080fd5b5061109761341f565b60405180821515815260200191505060405180910390f35b3480156110bb57600080fd5b506110c4613432565b6040518082815260200191505060405180910390f35b60006110e4613438565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615efa602c913960400191505060405180910390fd5b600061119483613440565b505050505090506111ed81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061124581600a5461349c90919063ffffffff16565b600a8190555061126083600b5461351f90919063ffffffff16565b600b81905550505050565b606060138054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113035780601f106112d857610100808354040283529160200191611303565b820191906000526020600020905b8154815290600101906020018083116112e657829003601f168201915b5050505050905090565b600061132161131a613438565b84846135a7565b6001905092915050565b600d5481565b6000600b54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600954905090565b60105481565b601860009054906101000a900460ff1681565b600061138f84848461379e565b6114508461139b613438565b61144b85604051806060016040528060288152602001615e3f60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611401613438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a799092919063ffffffff16565b6135a7565b600190509392505050565b6000600a548211156114b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615d84602a913960400191505060405180910390fd5b60006114c2613b33565b90506114d78184613b5e90919063ffffffff16565b915050919050565b6000601560009054906101000a900460ff16905090565b6114fe613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60088054905081101561187c578173ffffffffffffffffffffffffffffffffffffffff16600882815481106116b157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561186f5760086001600880549050038154811061170d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061174557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061183557fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561187c565b8080600101915050611680565b5050565b600061192961188d613438565b84611924856005600061189e613438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b6135a7565b6001905092915050565b600061193d613438565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615efa602c913960400191505060405180910390fd5b60006119ed83613440565b50505050509050611a4681600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a9e81600a5461349c90919063ffffffff16565b600a81905550611ab983600b5461351f90919063ffffffff16565b600b81905550505050565b600c60179054906101000a900460ff1681565b6000611aea611ae4613438565b83613be7565b60019050919050565b611afb613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115611c90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611cb0576000611ca084613440565b5050505050905080915050611cc7565b6000611cbb84613440565b50505050915050809150505b92915050565b7f000000000000000000000000e416a5e8203ac3e083d17d27a48201069628f96481565b601860019054906101000a900460ff1681565b611d0c613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f6057611f1c600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461145b565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120bf57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061210a565b612107600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461145b565b90505b919050565b612117613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b60125481565b600c60169054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612361613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612421576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b606060148054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124c35780601f10612498576101008083540402835291602001916124c3565b820191906000526020600020905b8154815290600101906020018083116124a657829003601f168201915b5050505050905090565b6124d5613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612595576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060198190555050565b60006126626125ac613438565b8461265d85604051806060016040528060258152602001615f4960259139600560006125d6613438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a799092919063ffffffff16565b6135a7565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615f266023913960400191505060405180910390fd5b6002544211612789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061289d612896613438565b848461379e565b6001905092915050565b6128af613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461296f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615df66028913960400191505060405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdd6c02f7a126a3a76f947c9fb5d2e7ff8fa954cec25609c44c4fc37745b5ef0881604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b612a8e613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60648311158015612b60575060648111155b8015612b6d575060648511155b612bdf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f546178466565206578636565642031303000000000000000000000000000000081525060200191505060405180910390fd5b81600c60176101000a81548160ff02191690831515021790555080600f8190555083600c60166101000a81548160ff02191690831515021790555082600e8190555085600c60146101000a81548160ff02191690831515021790555084600d819055507f9273371678e747b9b5765dffc4961bbb33fe1ba000734fd0cdb8eaa80e336634600c60149054906101000a900460ff16600d54600c60169054906101000a900460ff16600e54600c60179054906101000a900460ff16600f5460405180871515815260200186815260200185151581526020018481526020018315158152602001828152602001965050505050505060405180910390a1505050505050565b6000600254905090565b612cf4613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612db4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601860016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b600c60149054906101000a900460ff1681565b600e5481565b612e2b613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612eeb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6130a3613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613163576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6131c6613438565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613286576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561330c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615dae6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c60159054906101000a900460ff1681565b60115481565b600033905090565b60008060008060008060008060006134578a613ef9565b92509250925060008060006134758d8686613470613b33565b613f7d565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b600082821115613514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b60008082840190508381101561359d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561362d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615ed66024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615dd46022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613824576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615eb16025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615d3f6023913960400191505060405180910390fd5b60008111613903576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615e676029913960400191505060405180910390fd5b600061390e30612024565b9050600060195482101590508080156139345750601860009054906101000a900460ff16155b801561398c57507f000000000000000000000000e416a5e8203ac3e083d17d27a48201069628f96473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156139a45750601860019054906101000a900460ff165b156139b85760195491506139b782614006565b5b6000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a5b5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613a6557600190505b613a71868686846140e8565b505050505050565b6000838311158290613b26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613aeb578082015181840152602081019050613ad0565b50505050905090810190601f168015613b185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b6000806000613b406143f9565b91509150613b578183613b5e90919063ffffffff16565b9250505090565b6000808211613bd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b818381613bde57fe5b04905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615e906021913960400191505060405180910390fd5b80613c7783612024565b1015613cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615d626022913960400191505060405180910390fd5b6000613cea613cdb613b33565b8361468a90919063ffffffff16565b9050613d018260095461349c90919063ffffffff16565b600981905550613d1c81600a5461349c90919063ffffffff16565b600a81905550613d7481600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e9f57613e5b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b7f8b1897d4e7a3b42570088bb1182eb6518c96a754d44bc9edd4669568bfa983268383604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b600080600080613f07614710565b90506000613f3182613f23606489613b5e90919063ffffffff16565b61468a90919063ffffffff16565b90506000613f3e87614759565b90506000613f6782613f59858b61349c90919063ffffffff16565b61349c90919063ffffffff16565b9050808383965096509650505050509193909250565b600080600080613f96858961468a90919063ffffffff16565b90506000613fad868961468a90919063ffffffff16565b90506000613fc4878961468a90919063ffffffff16565b90506000613fed82613fdf858761349c90919063ffffffff16565b61349c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6001601860006101000a81548160ff0219169083151502179055506000614037600283613b5e90919063ffffffff16565b9050600061404e828461349c90919063ffffffff16565b9050600047905061405e8361478a565b6000614073824761349c90919063ffffffff16565b905061407f8382614a38565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a1505050506000601860006101000a81548160ff02191690831515021790555050565b806140f6576140f5614b89565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156141995750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156141ae576141a9848484614c0a565b6143e5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156142515750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561426657614261848484614f98565b6143e4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561430a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561431f5761431a848484615326565b6143e3565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156143c15750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156143d6576143d184848461561f565b6143e2565b6143e1848484615326565b5b5b5b5b806143f3576143f2615a42565b5b50505050565b6000806000600a5490506000600954905060005b60088054905081101561464d5782600360006008848154811061442c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061451357508160046000600884815481106144ab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561452a57600a5460095494509450505050614686565b6145b3600360006008848154811061453e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461349c90919063ffffffff16565b925061463e60046000600884815481106145c957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361349c90919063ffffffff16565b9150808060010191505061440d565b50614665600954600a54613b5e90919063ffffffff16565b82101561467d57600a54600954935093505050614686565b81819350935050505b9091565b60008083141561469d576000905061470a565b60008284029050828482816146ae57fe5b0414614705576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615e1e6021913960400191505060405180910390fd5b809150505b92915050565b600080600f549050600c60169054906101000a900460ff161561473557600e54810190505b600c60149054906101000a900460ff161561475257600d54810190505b8091505090565b600061478360646147756016548561468a90919063ffffffff16565b613b5e90919063ffffffff16565b9050919050565b6060600267ffffffffffffffff811180156147a457600080fd5b506040519080825280602002602001820160405280156147d35781602001602082028036833780820191505090505b50905030816000815181106147e457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561488457600080fd5b505afa158015614898573d6000803e3d6000fd5b505050506040513d60208110156148ae57600080fd5b8101908080519060200190929190505050816001815181106148cc57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614931307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846135a7565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156149f35780820151818401526020810190506149d8565b505050509050019650505050505050600060405180830381600087803b158015614a1c57600080fd5b505af1158015614a30573d6000803e3d6000fd5b505050505050565b614a63307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846135a7565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614aad612330565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015614b3257600080fd5b505af1158015614b46573d6000803e3d6000fd5b50505050506040513d6060811015614b5d57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b6000600d54148015614b9d57506000601654145b8015614bab57506000600e54145b8015614bb957506000600f54145b15614bc357614c08565b600d54601081905550601654601781905550600e54601181905550600f546012819055506000600d8190555060006016819055506000600e819055506000600f819055505b565b600080600080600080614c1c87613440565b955095509550955095509550614c7a87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d0f86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614da485600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60149054906101000a900460ff1615614ee357614e0788615a68565b9050614e7d8160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b60036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c60169054906101000a900460ff1615614f0257614f0188615ac3565b5b614f0b82615b29565b614f27614f21828761349c90919063ffffffff16565b84615cce565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b600080600080600080614faa87613440565b95509550955095509550955061500886600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061509d83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061513285600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60149054906101000a900460ff16156152715761519588615a68565b905061520b8160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b60036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c60169054906101000a900460ff16156152905761528f88615ac3565b5b61529982615b29565b6152b56152af828761349c90919063ffffffff16565b84615cce565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060008061533887613440565b95509550955095509550955061539686600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061542b85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60149054906101000a900460ff161561556a5761548e88615a68565b90506155048160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b60036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c60169054906101000a900460ff16156155895761558888615ac3565b5b61559282615b29565b6155ae6155a8828761349c90919063ffffffff16565b84615cce565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060008061563187613440565b95509550955095509550955061568f87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061572486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506157b983600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061584e85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60149054906101000a900460ff161561598d576158b188615a68565b90506159278160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b60036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c60169054906101000a900460ff16156159ac576159ab88615ac3565b5b6159b582615b29565b6159d16159cb828761349c90919063ffffffff16565b84615cce565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b601054600d81905550601754601681905550601154600e81905550601254600f81905550565b600080615a73613b33565b90506000615a9f600d54615a91606487613b5e90919063ffffffff16565b61468a90919063ffffffff16565b90506000615ab6838361468a90919063ffffffff16565b9050809350505050919050565b6000615ace82615d08565b90506000615aec615add613b33565b8361468a90919063ffffffff16565b9050615b038260095461349c90919063ffffffff16565b600981905550615b1e81600a5461349c90919063ffffffff16565b600a81905550505050565b6000615b33613b33565b90506000615b4a828461468a90919063ffffffff16565b9050615b9e81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615cc957615c8583600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351f90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b615ce382600a5461349c90919063ffffffff16565b600a81905550615cfe81600b5461351f90919063ffffffff16565b600b819055505050565b600080615d33600e54615d25606486613b5e90919063ffffffff16565b61468a90919063ffffffff16565b90508091505091905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736e6577206d61726b6574696e672057616c6c657420697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204ba4d0543e955a530789fbf98ebbaca79b71e22b25c9ace5e892d1915ae56f9c64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000093abe9a5214ea5463200bdc4c613d2ef9b591822
-----Decoded View---------------
Arg [0] : _marketingwallet (address): 0x93ABe9a5214EA5463200BdC4c613d2ef9b591822
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000093abe9a5214ea5463200bdc4c613d2ef9b591822
Deployed Bytecode Sourcemap
17705:23651:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23431:370;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21133:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22070:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18642:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23329:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19774:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21410:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18808:65;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19883:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22239:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;41098:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21319:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;40167:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22560:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23811:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18601:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23067:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24200:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40654:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19832:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19918:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;39825:333;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19116:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21513:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8564:148;;;;;;;;;;;;;:::i;:::-;;18419:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18751:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18943:48;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18564:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23201:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8350:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24446:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21224:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24578:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22786:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9432:293;;;;;;;;;;;;;:::i;:::-;;21744:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;38467:279;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37772:683;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8972:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24723:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18474:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18696:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9142:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21919:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24321:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8720:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25546:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18522:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18882:44;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23431:370;23484:14;23501:12;:10;:12::i;:::-;23484:29;;23532:11;:19;23544:6;23532:19;;;;;;;;;;;;;;;;;;;;;;;;;23531:20;23523:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23610:15;23634:19;23645:7;23634:10;:19::i;:::-;23609:44;;;;;;;23680:28;23700:7;23680;:15;23688:6;23680:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23662:7;:15;23670:6;23662:15;;;;;;;;;;;;;;;:46;;;;23728:20;23740:7;23728;;:11;;:20;;;;:::i;:::-;23718:7;:30;;;;23771:23;23786:7;23771:10;;:14;;:23;;;;:::i;:::-;23758:10;:36;;;;23431:370;;;:::o;21133:83::-;21170:13;21203:5;21196:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21133:83;:::o;22070:161::-;22145:4;22162:39;22171:12;:10;:12::i;:::-;22185:7;22194:6;22162:8;:39::i;:::-;22219:4;22212:11;;22070:161;;;;:::o;18642:41::-;;;;:::o;23329:87::-;23371:7;23398:10;;23391:17;;23329:87;:::o;19774:51::-;;;:::o;21410:95::-;21463:7;21490;;21483:14;;21410:95;:::o;18808:65::-;;;;:::o;19883:28::-;;;;;;;;;;;;;:::o;22239:313::-;22337:4;22354:36;22364:6;22372:9;22383:6;22354:9;:36::i;:::-;22401:121;22410:6;22418:12;:10;:12::i;:::-;22432:89;22470:6;22432:89;;;;;;;;;;;;;;;;;:11;:19;22444:6;22432:19;;;;;;;;;;;;;;;:33;22452:12;:10;:12::i;:::-;22432:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22401:8;:121::i;:::-;22540:4;22533:11;;22239:313;;;;;:::o;41098:253::-;41164:7;41203;;41192;:18;;41184:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41268:19;41291:10;:8;:10::i;:::-;41268:33;;41319:24;41331:11;41319:7;:11;;:24;;;;:::i;:::-;41312:31;;;41098:253;;;:::o;21319:83::-;21360:5;21385:9;;;;;;;;;;;21378:16;;21319:83;:::o;40167:479::-;8487:12;:10;:12::i;:::-;8477:22;;:6;;;;;;;;;;:22;;;8469:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40249:11:::1;:20;40261:7;40249:20;;;;;;;;;;;;;;;;;;;;;;;;;40241:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;40317:9;40312:327;40336:9;:16;;;;40332:1;:20;40312:327;;;40394:7;40378:23;;:9;40388:1;40378:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;40374:254;;;40437:9;40466:1;40447:9;:16;;;;:20;40437:31;;;;;;;;;;;;;;;;;;;;;;;;;40422:9;40432:1;40422:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;40506:1;40487:7;:16;40495:7;40487:16;;;;;;;;;;;;;;;:20;;;;40549:5;40526:11;:20;40538:7;40526:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;40573:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40607:5;;40374:254;40354:3;;;;;;;40312:327;;;;40167:479:::0;:::o;22560:218::-;22648:4;22665:83;22674:12;:10;:12::i;:::-;22688:7;22697:50;22736:10;22697:11;:25;22709:12;:10;:12::i;:::-;22697:25;;;;;;;;;;;;;;;:34;22723:7;22697:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;22665:8;:83::i;:::-;22766:4;22759:11;;22560:218;;;;:::o;23811:377::-;23863:14;23880:12;:10;:12::i;:::-;23863:29;;23912:11;:19;23924:6;23912:19;;;;;;;;;;;;;;;;;;;;;;;;;23911:20;23903:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23992:15;24016:19;24027:7;24016:10;:19::i;:::-;23991:44;;;;;;;24064:28;24084:7;24064;:15;24072:6;24064:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24046:7;:15;24054:6;24046:15;;;;;;;;;;;;;;;:46;;;;24113:20;24125:7;24113;;:11;;:20;;;;:::i;:::-;24103:7;:30;;;;24157:23;24172:7;24157:10;;:14;;:23;;;;:::i;:::-;24144:10;:36;;;;23811:377;;;:::o;18601:32::-;;;;;;;;;;;;;:::o;23067:122::-;23115:4;23132:27;23138:12;:10;:12::i;:::-;23152:6;23132:5;:27::i;:::-;23177:4;23170:11;;23067:122;;;:::o;24200:109::-;8487:12;:10;:12::i;:::-;8477:22;;:6;;;;;;;;;;:22;;;8469:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24296:5:::1;24268:16;:25;24285:7;24268:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24200:109:::0;:::o;40654:436::-;40744:7;40783;;40772;:18;;40764:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40842:17;40837:246;;40877:15;40901:19;40912:7;40901:10;:19::i;:::-;40876:44;;;;;;;40942:7;40935:14;;;;;40837:246;40984:23;41015:19;41026:7;41015:10;:19::i;:::-;40982:52;;;;;;;41056:15;41049:22;;;40654:436;;;;;:::o;19832:38::-;;;:::o;19918:40::-;;;;;;;;;;;;;:::o;39825:333::-;8487:12;:10;:12::i;:::-;8477:22;;:6;;;;;;;;;;:22;;;8469:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39908:11:::1;:20;39920:7;39908:20;;;;;;;;;;;;;;;;;;;;;;;;;39907:21;39899:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;39993:1;39974:7;:16;39982:7;39974:16;;;;;;;;;;;;;;;;:20;39971:108;;;40030:37;40050:7;:16;40058:7;40050:16;;;;;;;;;;;;;;;;40030:19;:37::i;:::-;40011:7;:16;40019:7;40011:16;;;;;;;;;;;;;;;:56;;;;39971:108;40112:4;40089:11;:20;40101:7;40089:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;40127:9;40142:7;40127:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39825:333:::0;:::o;19116:32::-;;;;:::o;21513:223::-;21579:7;21603:11;:20;21615:7;21603:20;;;;;;;;;;;;;;;;;;;;;;;;;21599:49;;;21632:7;:16;21640:7;21632:16;;;;;;;;;;;;;;;;21625:23;;;;21599:49;21691:37;21711:7;:16;21719:7;21711:16;;;;;;;;;;;;;;;;21691:19;:37::i;:::-;21684:44;;21513:223;;;;:::o;8564:148::-;8487:12;:10;:12::i;:::-;8477:22;;:6;;;;;;;;;;:22;;;8469:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8671:1:::1;8634:40;;8655:6;::::0;::::1;;;;;;;;8634:40;;;;;;;;;;;;8702:1;8685:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8564:148::o:0;18419:30::-;;;;;;;;;;;;;:::o;18751:32::-;;;;:::o;18943:48::-;;;;:::o;18564:30::-;;;;;;;;;;;;;:::o;23201:120::-;23269:4;23293:11;:20;23305:7;23293:20;;;;;;;;;;;;;;;;;;;;;;;;;23286:27;;23201:120;;;:::o;8350:79::-;8388:7;8415:6;;;;;;;;;;;8408:13;;8350:79;:::o;24446:120::-;8487:12;:10;:12::i;:::-;8477:22;;:6;;;;;;;;;;:22;;;8469:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24546:12:::1;24530:13;:28;;;;24446:120:::0;:::o;21224:87::-;21263:13;21296:7;21289:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21224:87;:::o;24578:125::-;8487:12;:10;:12::i;:::-;8477:22;;:6;;;;;;;;;;:22;;;8469:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24690:5:::1;24658:29;:37;;;;24578:125:::0;:::o;22786:269::-;22879:4;22896:129;22905:12;:10;:12::i;:::-;22919:7;22928:96;22967:15;22928:96;;;;;;;;;;;;;;;;;:11;:25;22940:12;:10;:12::i;:::-;22928:25;;;;;;;;;;;;;;;:34;22954:7;22928:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;22896:8;:129::i;:::-;23043:4;23036:11;;22786:269;;;;:::o;9432:293::-;9502:10;9484:28;;:14;;;;;;;;;;;:28;;;9476:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9577:9;;9571:3;:15;9563:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9668:14;;;;;;;;;;;9639:44;;9660:6;;;;;;;;;;9639:44;;;;;;;;;;;;9703:14;;;;;;;;;;;9694:6;;:23;;;;;;;;;;;;;;;;;;9432:293::o;21744:167::-;21822:4;21839:42;21849:12;:10;:12::i;:::-;21863:9;21874:6;21839:9;:42::i;:::-;21899:4;21892:11;;21744:167;;;;:::o;38467:279::-;8487:12;:10;:12::i;:::-;8477:22;;:6;;;;;;;;;;:22;;;8469:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38590:1:::1;38562:30;;:16;:30;;;;38554:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38666:16;38648:15;;:34;;;;;;;;;;;;;;;;;;38698:40;38721:16;38698:40;;;;;;;;;;;;;;;;;;;;38467:279:::0;:::o;37772:683::-;8487:12;:10;:12::i;:::-;8477:22;;:6;;;;;;;;;;:22;;;8469:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37978:3:::1;37965:9;:16;;:39;;;;;38001:3;37985:12;:19;;37965:39;:57;;;;;38019:3;38008:9;:14;;37965:57;37957:88;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;38073:20;38057:13;;:36;;;;;;;;;;;;;;;;;;38120:12;38104:13;:28;;;;38157:12;38143:11;;:26;;;;;;;;;;;;;;;;;;38194:9;38180:11;:23;;;;38239;38214:22;;:48;;;;;;;;;;;;;;;;;;38298:9;38273:22;:34;;;;38333:114;38349:22;;;;;;;;;;;38372;;38395:11;;;;;;;;;;;38407;;38419:13;;;;;;;;;;;38433;;38333:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37772:683:::0;;;;;;:::o;8972:89::-;9017:7;9044:9;;9037:16;;8972:89;:::o;24723:171::-;8487:12;:10;:12::i;:::-;8477:22;;:6;;;;;;;;;;:22;;;8469:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24824:8:::1;24800:21;;:32;;;;;;;;;;;;;;;;;;24848:38;24877:8;24848:38;;;;;;;;;;;;;;;;;;;;24723:171:::0;:::o;18474:41::-;;;;;;;;;;;;;:::o;18696:30::-;;;;:::o;9142:214::-;8487:12;:10;:12::i;:::-;8477:22;;:6;;;;;;;;;;:22;;;8469:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9223:6:::1;::::0;::::1;;;;;;;;9206:14;;:23;;;;;;;;;;;;;;;;;;9257:1;9240:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;9288:4;9282:3;:10;9270:9;:22;;;;9345:1;9308:40;;9329:6;::::0;::::1;;;;;;;;9308:40;;;;;;;;;;;;9142:214:::0;:::o;21919:143::-;22000:7;22027:11;:18;22039:5;22027:18;;;;;;;;;;;;;;;:27;22046:7;22027:27;;;;;;;;;;;;;;;;22020:34;;21919:143;;;;:::o;24321:107::-;8487:12;:10;:12::i;:::-;8477:22;;:6;;;;;;;;;;:22;;;8469:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24416:4:::1;24388:16;:25;24405:7;24388:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;24321:107:::0;:::o;8720:244::-;8487:12;:10;:12::i;:::-;8477:22;;:6;;;;;;;;;;:22;;;8469:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8829:1:::1;8809:22;;:8;:22;;;;8801:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8919:8;8890:38;;8911:6;::::0;::::1;;;;;;;;8890:38;;;;;;;;;;;;8948:8;8939:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8720:244:::0;:::o;25546:119::-;25608:4;25632:16;:25;25649:7;25632:25;;;;;;;;;;;;;;;;;;;;;;;;;25625:32;;25546:119;;;:::o;18522:35::-;;;;;;;;;;;;;:::o;18882:44::-;;;;:::o;171:106::-;224:15;259:10;252:17;;171:106;:::o;35767:421::-;35826:7;35835;35844;35853;35862;35871;35892:23;35917:12;35931:18;35953:20;35965:7;35953:11;:20::i;:::-;35891:82;;;;;;35985:15;36002:23;36027:12;36043:50;36055:7;36064:4;36070:10;36082;:8;:10::i;:::-;36043:11;:50::i;:::-;35984:109;;;;;;36112:7;36121:15;36138:4;36144:15;36161:4;36167:10;36104:74;;;;;;;;;;;;;;;;;;35767:421;;;;;;;:::o;6687:158::-;6745:7;6778:1;6773;:6;;6765:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6836:1;6832;:5;6825:12;;6687:158;;;;:::o;6499:179::-;6557:7;6577:9;6593:1;6589;:5;6577:17;;6618:1;6613;:6;;6605:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6669:1;6662:8;;;6499:179;;;;:::o;25673:337::-;25783:1;25766:19;;:5;:19;;;;25758:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25864:1;25845:21;;:7;:21;;;;25837:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25948:6;25918:11;:18;25930:5;25918:18;;;;;;;;;;;;;;;:27;25937:7;25918:27;;;;;;;;;;;;;;;:36;;;;25986:7;25970:32;;25979:5;25970:32;;;25995:6;25970:32;;;;;;;;;;;;;;;;;;25673:337;;;:::o;26018:1567::-;26156:1;26140:18;;:4;:18;;;;26132:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26233:1;26219:16;;:2;:16;;;;26211:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26303:1;26294:6;:10;26286:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26653:28;26684:24;26702:4;26684:9;:24::i;:::-;26653:55;;26747:24;26798:29;;26774:20;:53;;26747:80;;26856:19;:53;;;;;26893:16;;;;;;;;;;;26892:17;26856:53;:91;;;;;26934:13;26926:21;;:4;:21;;;;26856:91;:129;;;;;26964:21;;;;;;;;;;;26856:129;26838:318;;;27035:29;;27012:52;;27108:36;27123:20;27108:14;:36::i;:::-;26838:318;27237:12;27365:16;:22;27382:4;27365:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;27391:16;:20;27408:2;27391:20;;;;;;;;;;;;;;;;;;;;;;;;;27365:46;27362:91;;;27437:4;27427:14;;27362:91;27539:38;27554:4;27559:2;27562:6;27569:7;27539:14;:38::i;:::-;26018:1567;;;;;;:::o;7424:166::-;7510:7;7543:1;7538;:6;;7546:12;7530:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7581:1;7577;:5;7570:12;;7424:166;;;;;:::o;37021:163::-;37062:7;37083:15;37100;37119:19;:17;:19::i;:::-;37082:56;;;;37156:20;37168:7;37156;:11;;:20;;;;:::i;:::-;37149:27;;;;37021:163;:::o;7094:153::-;7152:7;7184:1;7180;:5;7172:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7238:1;7234;:5;;;;;;7227:12;;7094:153;;;;:::o;29898:579::-;29993:1;29974:21;;:7;:21;;;;29966:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30074:6;30052:18;30062:7;30052:9;:18::i;:::-;:28;;30044:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30131:16;30148:22;30159:10;:8;:10::i;:::-;30148:6;:10;;:22;;;;:::i;:::-;30131:39;;30192:19;30204:6;30192:7;;:11;;:19;;;;:::i;:::-;30182:7;:29;;;;30232:21;30244:8;30232:7;;:11;;:21;;;;:::i;:::-;30222:7;:31;;;;30283:30;30304:8;30283:7;:16;30291:7;30283:16;;;;;;;;;;;;;;;;:20;;:30;;;;:::i;:::-;30264:7;:16;30272:7;30264:16;;;;;;;;;;;;;;;:49;;;;30327:11;:20;30339:7;30327:20;;;;;;;;;;;;;;;;;;;;;;;;;30324:108;;;30392:28;30413:6;30392:7;:16;30400:7;30392:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;30373:7;:16;30381:7;30373:16;;;;;;;;;;;;;;;:47;;;;30324:108;30447:22;30454:7;30462:6;30447:22;;;;;;;;;;;;;;;;;;;;;;;;;;29898:579;;;:::o;36196:380::-;36256:7;36265;36274;36294:16;36313:14;:12;:14::i;:::-;36294:33;;36338:12;36353:30;36374:8;36353:16;36365:3;36353:7;:11;;:16;;;;:::i;:::-;:20;;:30;;;;:::i;:::-;36338:45;;36394:18;36415:30;36437:7;36415:21;:30::i;:::-;36394:51;;36456:23;36482:33;36504:10;36482:17;36494:4;36482:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;36456:59;;36534:15;36551:4;36557:10;36526:42;;;;;;;;;;36196:380;;;;;:::o;36584:429::-;36699:7;36708;36717;36737:15;36755:24;36767:11;36755:7;:11;;:24;;;;:::i;:::-;36737:42;;36790:12;36805:21;36814:11;36805:4;:8;;:21;;;;:::i;:::-;36790:36;;36837:18;36858:27;36873:11;36858:10;:14;;:27;;;;:::i;:::-;36837:48;;36896:23;36922:33;36944:10;36922:17;36934:4;36922:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;36896:59;;36974:7;36983:15;37000:4;36966:39;;;;;;;;;;36584:429;;;;;;;;:::o;27593:916::-;20364:4;20345:16;;:23;;;;;;;;;;;;;;;;;;27729:12:::1;27744:27;27769:1;27744:20;:24;;:27;;;;:::i;:::-;27729:42;;27782:17;27802:30;27827:4;27802:20;:24;;:30;;;;:::i;:::-;27782:50;;28110:22;28135:21;28110:46;;28201:22;28218:4;28201:16;:22::i;:::-;28285:18;28306:41;28332:14;28306:21;:25;;:41;;;;:::i;:::-;28285:62;;28397:35;28410:9;28421:10;28397:12;:35::i;:::-;28458:43;28473:4;28479:10;28491:9;28458:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20379:1;;;;20410:5:::0;20391:16;;:24;;;;;;;;;;;;;;;;;;27593:916;:::o;30558:840::-;30669:7;30665:43;;30694:14;:12;:14::i;:::-;30665:43;30733:11;:19;30745:6;30733:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;30757:11;:22;30769:9;30757:22;;;;;;;;;;;;;;;;;;;;;;;;;30756:23;30733:46;30729:597;;;30796:48;30818:6;30826:9;30837:6;30796:21;:48::i;:::-;30729:597;;;30867:11;:19;30879:6;30867:19;;;;;;;;;;;;;;;;;;;;;;;;;30866:20;:46;;;;;30890:11;:22;30902:9;30890:22;;;;;;;;;;;;;;;;;;;;;;;;;30866:46;30862:464;;;30929:46;30949:6;30957:9;30968:6;30929:19;:46::i;:::-;30862:464;;;30998:11;:19;31010:6;30998:19;;;;;;;;;;;;;;;;;;;;;;;;;30997:20;:47;;;;;31022:11;:22;31034:9;31022:22;;;;;;;;;;;;;;;;;;;;;;;;;31021:23;30997:47;30993:333;;;31061:44;31079:6;31087:9;31098:6;31061:17;:44::i;:::-;30993:333;;;31127:11;:19;31139:6;31127:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;31150:11;:22;31162:9;31150:22;;;;;;;;;;;;;;;;;;;;;;;;;31127:45;31123:203;;;31189:48;31211:6;31219:9;31230:6;31189:21;:48::i;:::-;31123:203;;;31270:44;31288:6;31296:9;31307:6;31270:17;:44::i;:::-;31123:203;30993:333;30862:464;30729:597;31350:7;31346:44;;31375:15;:13;:15::i;:::-;31346:44;30558:840;;;;:::o;37192:561::-;37242:7;37251;37271:15;37289:7;;37271:25;;37307:15;37325:7;;37307:25;;37354:9;37349:289;37373:9;:16;;;;37369:1;:20;37349:289;;;37439:7;37415;:21;37423:9;37433:1;37423:12;;;;;;;;;;;;;;;;;;;;;;;;;37415:21;;;;;;;;;;;;;;;;:31;:66;;;;37474:7;37450;:21;37458:9;37468:1;37458:12;;;;;;;;;;;;;;;;;;;;;;;;;37450:21;;;;;;;;;;;;;;;;:31;37415:66;37411:97;;;37491:7;;37500;;37483:25;;;;;;;;;37411:97;37533:34;37545:7;:21;37553:9;37563:1;37553:12;;;;;;;;;;;;;;;;;;;;;;;;;37545:21;;;;;;;;;;;;;;;;37533:7;:11;;:34;;;;:::i;:::-;37523:44;;37592:34;37604:7;:21;37612:9;37622:1;37612:12;;;;;;;;;;;;;;;;;;;;;;;;;37604:21;;;;;;;;;;;;;;;;37592:7;:11;;:34;;;;:::i;:::-;37582:44;;37391:3;;;;;;;37349:289;;;;37662:20;37674:7;;37662;;:11;;:20;;;;:::i;:::-;37652:7;:30;37648:61;;;37692:7;;37701;;37684:25;;;;;;;;37648:61;37728:7;37737;37720:25;;;;;;37192:561;;;:::o;6859:220::-;6917:7;6946:1;6941;:6;6937:20;;;6956:1;6949:8;;;;6937:20;6968:9;6984:1;6980;:5;6968:17;;7013:1;7008;7004;:5;;;;;;:10;6996:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7070:1;7063:8;;;6859:220;;;;;:::o;38758:273::-;38803:7;38823:16;38842:13;;38823:32;;38869:11;;;;;;;;;;;38866:48;;;38903:11;;38891:23;;;;38866:48;38928:22;;;;;;;;;;;38925:70;;;38973:22;;38961:34;;;;38925:70;39014:8;39006:17;;;38758:273;:::o;25372:166::-;25442:7;25469:61;25514:5;25469:26;25481:13;;25469:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;25462:68;;25372:166;;;:::o;28517:589::-;28643:21;28681:1;28667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28643:40;;28712:4;28694;28699:1;28694:7;;;;;;;;;;;;;:23;;;;;;;;;;;28738:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28728:4;28733:1;28728:7;;;;;;;;;;;;;:32;;;;;;;;;;;28773:62;28790:4;28805:15;28823:11;28773:8;:62::i;:::-;28874:15;:66;;;28955:11;28981:1;29025:4;29052;29072:15;28874:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28517:589;;:::o;29377:513::-;29525:62;29542:4;29557:15;29575:11;29525:8;:62::i;:::-;29630:15;:31;;;29669:9;29702:4;29722:11;29748:1;29791;29834:7;:5;:7::i;:::-;29856:15;29630:252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29377:513;;:::o;39039:480::-;39109:1;39085:22;;:25;:45;;;;;39129:1;39114:13;;:16;39085:45;:63;;;;;39147:1;39134:11;;:14;39085:63;:83;;;;;39167:1;39152:13;;:16;39085:83;39082:96;;;39171:7;;39082:96;39228:22;;39199:26;:51;;;;39285:13;;39261:21;:37;;;;39327:11;;39309:15;:29;;;;39369:13;;39349:17;:33;;;;39428:1;39403:22;:26;;;;39456:1;39440:13;:17;;;;39482:1;39468:11;:15;;;;39510:1;39494:13;:17;;;;39039:480;:::o;33180:904::-;33283:15;33300:23;33325:12;33339:23;33364:12;33378:18;33400:19;33411:7;33400:10;:19::i;:::-;33282:137;;;;;;;;;;;;33448:28;33468:7;33448;:15;33456:6;33448:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33430:7;:15;33438:6;33430:15;;;;;;;;;;;;;;;:46;;;;33505:28;33525:7;33505;:15;33513:6;33505:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33487:7;:15;33495:6;33487:15;;;;;;;;;;;;;;;:46;;;;33565:39;33588:15;33565:7;:18;33573:9;33565:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33544:7;:18;33552:9;33544:18;;;;;;;;;;;;;;;:60;;;;33618:18;33654:22;;;;;;;;;;;33651:190;;;33720:25;33737:7;33720:16;:25::i;:::-;33705:40;;33787;33816:10;33787:7;:24;33795:15;;;;;;;;;;;33787:24;;;;;;;;;;;;;;;;:28;;:40;;;;:::i;:::-;33760:7;:24;33768:15;;;;;;;;;;;33760:24;;;;;;;;;;;;;;;:67;;;;33651:190;33854:11;;;;;;;;;;;33851:77;;;33892:24;33908:7;33892:15;:24::i;:::-;33851:77;33939:26;33954:10;33939:14;:26::i;:::-;33976:39;33988:20;33997:10;33988:4;:8;;:20;;;;:::i;:::-;34010:4;33976:11;:39::i;:::-;34049:9;34032:44;;34041:6;34032:44;;;34060:15;34032:44;;;;;;;;;;;;;;;;;;33180:904;;;;;;;;;;:::o;32254:918::-;32355:15;32372:23;32397:12;32411:23;32436:12;32450:18;32472:19;32483:7;32472:10;:19::i;:::-;32354:137;;;;;;;;;;;;32520:28;32540:7;32520;:15;32528:6;32520:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32502:7;:15;32510:6;32502:15;;;;;;;;;;;;;;;:46;;;;32580:39;32603:15;32580:7;:18;32588:9;32580:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32559:7;:18;32567:9;32559:18;;;;;;;;;;;;;;;:60;;;;32651:39;32674:15;32651:7;:18;32659:9;32651:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32630:7;:18;32638:9;32630:18;;;;;;;;;;;;;;;:60;;;;32704:18;32740:22;;;;;;;;;;;32737:190;;;32806:25;32823:7;32806:16;:25::i;:::-;32791:40;;32873;32902:10;32873:7;:24;32881:15;;;;;;;;;;;32873:24;;;;;;;;;;;;;;;;:28;;:40;;;;:::i;:::-;32846:7;:24;32854:15;;;;;;;;;;;32846:24;;;;;;;;;;;;;;;:67;;;;32737:190;32940:11;;;;;;;;;;;32937:76;;;32977:24;32993:7;32977:15;:24::i;:::-;32937:76;33027:26;33042:10;33027:14;:26::i;:::-;33064:39;33076:20;33085:10;33076:4;:8;;:20;;;;:::i;:::-;33098:4;33064:11;:39::i;:::-;33137:9;33120:44;;33129:6;33120:44;;;33148:15;33120:44;;;;;;;;;;;;;;;;;;32254:918;;;;;;;;;;:::o;31406:840::-;31505:15;31522:23;31547:12;31561:23;31586:12;31600:18;31622:19;31633:7;31622:10;:19::i;:::-;31504:137;;;;;;;;;;;;31670:28;31690:7;31670;:15;31678:6;31670:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31652:7;:15;31660:6;31652:15;;;;;;;;;;;;;;;:46;;;;31730:39;31753:15;31730:7;:18;31738:9;31730:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31709:7;:18;31717:9;31709:18;;;;;;;;;;;;;;;:60;;;;31780:18;31816:22;;;;;;;;;;;31813:190;;;31882:25;31899:7;31882:16;:25::i;:::-;31867:40;;31949;31978:10;31949:7;:24;31957:15;;;;;;;;;;;31949:24;;;;;;;;;;;;;;;;:28;;:40;;;;:::i;:::-;31922:7;:24;31930:15;;;;;;;;;;;31922:24;;;;;;;;;;;;;;;:67;;;;31813:190;32016:11;;;;;;;;;;;32013:74;;;32051:24;32067:7;32051:15;:24::i;:::-;32013:74;32097:26;32112:10;32097:14;:26::i;:::-;32134:39;32146:20;32155:10;32146:4;:8;;:20;;;;:::i;:::-;32168:4;32134:11;:39::i;:::-;32211:9;32194:44;;32203:6;32194:44;;;32222:15;32194:44;;;;;;;;;;;;;;;;;;31406:840;;;;;;;;;;:::o;34096:981::-;34199:15;34216:23;34241:12;34255:23;34280:12;34294:18;34316:19;34327:7;34316:10;:19::i;:::-;34198:137;;;;;;;;;;;;34364:28;34384:7;34364;:15;34372:6;34364:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;34346:7;:15;34354:6;34346:15;;;;;;;;;;;;;;;:46;;;;34421:28;34441:7;34421;:15;34429:6;34421:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;34403:7;:15;34411:6;34403:15;;;;;;;;;;;;;;;:46;;;;34481:39;34504:15;34481:7;:18;34489:9;34481:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;34460:7;:18;34468:9;34460:18;;;;;;;;;;;;;;;:60;;;;34552:39;34575:15;34552:7;:18;34560:9;34552:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;34531:7;:18;34539:9;34531:18;;;;;;;;;;;;;;;:60;;;;34604:18;34640:22;;;;;;;;;;;34637:190;;;34706:25;34723:7;34706:16;:25::i;:::-;34691:40;;34773;34802:10;34773:7;:24;34781:15;;;;;;;;;;;34773:24;;;;;;;;;;;;;;;;:28;;:40;;;;:::i;:::-;34746:7;:24;34754:15;;;;;;;;;;;34746:24;;;;;;;;;;;;;;;:67;;;;34637:190;34840:11;;;;;;;;;;;34837:77;;;34878:24;34894:7;34878:15;:24::i;:::-;34837:77;34933:26;34948:10;34933:14;:26::i;:::-;34970:39;34982:20;34991:10;34982:4;:8;;:20;;;;:::i;:::-;35004:4;34970:11;:39::i;:::-;35042:9;35025:44;;35034:6;35025:44;;;35053:15;35025:44;;;;;;;;;;;;;;;;;;34096:981;;;;;;;;;;:::o;39532:258::-;39601:26;;39576:22;:51;;;;39658:21;;39642:13;:37;;;;39704:15;;39690:11;:29;;;;39750:17;;39734:13;:33;;;;39532:258::o;35087:316::-;35153:7;35173:19;35195:10;:8;:10::i;:::-;35173:32;;35241:18;35262:44;35283:22;;35262:16;35274:3;35262:7;:11;;:16;;;;:::i;:::-;:20;;:44;;;;:::i;:::-;35241:65;;35318:18;35338:27;35353:11;35338:10;:14;;:27;;;;:::i;:::-;35318:47;;35384:10;35376:19;;;;;35087:316;;;:::o;29109:258::-;29167:13;29194:23;29209:7;29194:14;:23::i;:::-;29184:33;;29234:16;29253:21;29263:10;:8;:10::i;:::-;29253:5;:9;;:21;;;;:::i;:::-;29234:40;;29302:18;29314:5;29302:7;;:11;;:18;;;;:::i;:::-;29292:7;:28;;;;29341:21;29353:8;29341:7;;:11;;:21;;;;:::i;:::-;29331:7;:31;;;;29109:258;;;:::o;25005:355::-;25068:19;25091:10;:8;:10::i;:::-;25068:33;;25112:18;25133:27;25148:11;25133:10;:14;;:27;;;;:::i;:::-;25112:48;;25196:38;25223:10;25196:7;:22;25212:4;25196:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;25171:7;:22;25187:4;25171:22;;;;;;;;;;;;;;;:63;;;;25248:11;:26;25268:4;25248:26;;;;;;;;;;;;;;;;;;;;;;;;;25245:107;;;25314:38;25341:10;25314:7;:22;25330:4;25314:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;25289:7;:22;25305:4;25289:22;;;;;;;;;;;;;;;:63;;;;25245:107;25005:355;;;:::o;35612:147::-;35690:17;35702:4;35690:7;;:11;;:17;;;;:::i;:::-;35680:7;:27;;;;35731:20;35746:4;35731:10;;:14;;:20;;;;:::i;:::-;35718:10;:33;;;;35612:147;;:::o;35411:188::-;35474:7;35517:13;35533:33;35554:11;;35533:16;35545:3;35533:7;:11;;:16;;;;:::i;:::-;:20;;:33;;;;:::i;:::-;35517:49;;35585:5;35577:14;;;35411:188;;;:::o
Swarm Source
ipfs://4ba4d0543e955a530789fbf98ebbaca79b71e22b25c9ace5e892d1915ae56f9c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.