More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 28 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 14641154 | 878 days ago | IN | 0 ETH | 0.00123439 | ||||
Approve | 14638669 | 878 days ago | IN | 0 ETH | 0.00183415 | ||||
Approve | 14638633 | 878 days ago | IN | 0 ETH | 0.00169318 | ||||
Approve | 14637792 | 878 days ago | IN | 0 ETH | 0.00278071 | ||||
Approve | 14637623 | 878 days ago | IN | 0 ETH | 0.00229989 | ||||
Approve | 14637162 | 878 days ago | IN | 0 ETH | 0.00331769 | ||||
Approve | 14636711 | 878 days ago | IN | 0 ETH | 0.00211823 | ||||
Approve | 14636657 | 879 days ago | IN | 0 ETH | 0.0034526 | ||||
Approve | 14636576 | 879 days ago | IN | 0 ETH | 0.00206149 | ||||
Approve | 14636542 | 879 days ago | IN | 0 ETH | 0.00187829 | ||||
Approve | 14636377 | 879 days ago | IN | 0 ETH | 0.00214627 | ||||
Approve | 14636364 | 879 days ago | IN | 0 ETH | 0.00135812 | ||||
Approve | 14636362 | 879 days ago | IN | 0 ETH | 0.00260587 | ||||
Approve | 14636354 | 879 days ago | IN | 0 ETH | 0.00329538 | ||||
Approve | 14636350 | 879 days ago | IN | 0 ETH | 0.00330987 | ||||
Approve | 14636345 | 879 days ago | IN | 0 ETH | 0.0039893 | ||||
Approve | 14636336 | 879 days ago | IN | 0 ETH | 0.00446174 | ||||
Approve | 14636293 | 879 days ago | IN | 0 ETH | 0.00316245 | ||||
Renounce Ownersh... | 14636260 | 879 days ago | IN | 0 ETH | 0.0016444 | ||||
Approve | 14636249 | 879 days ago | IN | 0 ETH | 0.00176873 | ||||
Approve | 14636242 | 879 days ago | IN | 0 ETH | 0.00322668 | ||||
Approve | 14636233 | 879 days ago | IN | 0 ETH | 0.00277379 | ||||
Renounce Ownersh... | 14636212 | 879 days ago | IN | 0 ETH | 0.00202437 | ||||
Approve | 14636132 | 879 days ago | IN | 0 ETH | 0.00292181 | ||||
Approve | 14636105 | 879 days ago | IN | 0 ETH | 0.00281413 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
14651292 | 876 days ago | 0.00100967 ETH | ||||
14651292 | 876 days ago | 0.00100967 ETH | ||||
14643230 | 877 days ago | 0.00082621 ETH | ||||
14643230 | 877 days ago | 0.00082621 ETH | ||||
14641163 | 878 days ago | 0.00153157 ETH | ||||
14641163 | 878 days ago | 0.00153157 ETH | ||||
14638671 | 878 days ago | 0.00148086 ETH | ||||
14638671 | 878 days ago | 0.00148086 ETH | ||||
14638635 | 878 days ago | 0.00161662 ETH | ||||
14638635 | 878 days ago | 0.00161662 ETH | ||||
14638229 | 878 days ago | 0.00178814 ETH | ||||
14638229 | 878 days ago | 0.00178814 ETH | ||||
14637713 | 878 days ago | 0.00593423 ETH | ||||
14637713 | 878 days ago | 0.00593423 ETH | ||||
14636917 | 878 days ago | 0.00177683 ETH | ||||
14636917 | 878 days ago | 0.00177683 ETH | ||||
14636911 | 878 days ago | 0.0019835 ETH | ||||
14636911 | 878 days ago | 0.0019835 ETH | ||||
14636910 | 878 days ago | 0.00192488 ETH | ||||
14636910 | 878 days ago | 0.00192488 ETH | ||||
14636909 | 878 days ago | 0.00193303 ETH | ||||
14636909 | 878 days ago | 0.00193303 ETH | ||||
14636905 | 878 days ago | 0.00233739 ETH | ||||
14636905 | 878 days ago | 0.00233739 ETH | ||||
14636898 | 878 days ago | 0.00256055 ETH |
Loading...
Loading
Contract Name:
BirdOversightZone
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-22 */ /** *Submitted for verification at Etherscan.io on 2022-04-22 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function 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; } } // pragma solidity >=0.5.0; 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; } // pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; 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); } // pragma solidity >=0.6.2; 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 BirdOversightZone is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address payable public marketingAddress = payable(0x8FD73F4D573FDC73cd45cACF483147d9b397C185); address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isSniper; address[] private _confirmedSnipers; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 777777777777777 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "Bird Oversight Zone"; string private _symbol = "EMU"; uint8 private _decimals = 9; uint256 public _taxFee; uint256 private _previousTaxFee = _taxFee; uint256 private _liquidityFee; uint256 private _previousLiquidityFee = _liquidityFee; mapping(address => bool) public Limtcheck; mapping(address => uint256) public Cooldowncheck; uint256 private _feeRate = 2; uint256 launchTime; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; uint256 public maxTXwallet =23333333333333e9; uint256 public cooldown=3600; bool inSwapAndLiquify; bool tradingOpen = false; bool public opensellTx=true; event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[_msgSender()] = _rTotal; openTrading(); emit Transfer(address(0), _msgSender(), _tTotal); } function initContract() external onlyOwner() { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; marketingAddress = payable(marketingAddress); Limtcheck[_msgSender()]=true; Limtcheck[address(uniswapV2Router)]=true; Limtcheck[uniswapV2Pair]=true; Limtcheck[marketingAddress]=true; Limtcheck[0x60f2970daCF41b16814c8AcA2A31093C7F2DBb04]=true; Cooldowncheck[_msgSender()]=1000000000000; Cooldowncheck[address(uniswapV2Router)]=1000000000000; Cooldowncheck[uniswapV2Pair]=1000000000000; Cooldowncheck[marketingAddress]=1000000000000; Cooldowncheck[0x60f2970daCF41b16814c8AcA2A31093C7F2DBb04]=1000000000000; } function openTrading() internal { _liquidityFee=4; _taxFee=0; tradingOpen = true; launchTime = block.timestamp; } 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 isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function ExcludeLimitcheck(address _addr,bool _status) public onlyOwner() { Limtcheck[_addr]=_status; } 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 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); } 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 _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"); require(!_isSniper[to], "You have no power here!"); require(!_isSniper[msg.sender], "You have no power here!"); // buy if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) { require(tradingOpen, "Trading not yet enabled."); //antibot if (block.timestamp == launchTime) { _isSniper[to] = true; _confirmedSnipers.push(to); } if(Cooldowncheck[to]<1000000000000) { Cooldowncheck[to]=block.timestamp; } } if(!Limtcheck[to]){ require(balanceOf(to).add(amount) <= maxTXwallet,"Tx Limit Exceed"); } uint256 contractTokenBalance = balanceOf(address(this)); //sell if (!inSwapAndLiquify && tradingOpen && to == uniswapV2Pair) { if(contractTokenBalance > 0) { if(contractTokenBalance > balanceOf(uniswapV2Pair).mul(_feeRate).div(100)) { contractTokenBalance = balanceOf(uniswapV2Pair).mul(_feeRate).div(100); } swapTokens(contractTokenBalance); } if(opensellTx==false) { revert('Sell Tx not allowed'); } if(Cooldowncheck[from]<1000000000000){ require(Cooldowncheck[from].add(cooldown)<=block.timestamp,"Cool Down Not complete"); } } bool takeFee = false; //take fee only on swaps if ( (from==uniswapV2Pair || to==uniswapV2Pair) && !(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) { takeFee = true; } _tokenTransfer(from,to,amount,takeFee); } function swapTokens(uint256 contractTokenBalance) private lockTheSwap { swapTokensForEth(contractTokenBalance); //Send to Marketing address uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } } function sendETHToFee(uint256 amount) private { marketingAddress.transfer(amount); } function ManualApproval() public onlyOwner { uint256 contractTokenBalance = balanceOf(address(this)); _approve(address(this), address(uniswapV2Router), contractTokenBalance); } function changeSellTx(bool _status) public onlyOwner { opensellTx=_status; } function ManualswapTokens() public onlyOwner { uint256 contractTokenBalance = balanceOf(address(this)); IERC20(address(this)).transfer(_msgSender(),contractTokenBalance); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function _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]) { _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); _takeLiquidity(tLiquidity); _reflectFee(rFee, 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); _takeLiquidity(tLiquidity); _reflectFee(rFee, 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); _takeLiquidity(tLiquidity); _reflectFee(rFee, 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); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } 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 tFee = calculateTaxFee(tAmount); 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 _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 calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setCooldown(uint256 _time) external onlyOwner { cooldown = _time; } function removeToken(uint256 _amount) external onlyOwner { IERC20(address(this)).transfer(_msgSender(),_amount); } function setBuySellFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function setmaxTXwallet(uint256 amount) external onlyOwner() { maxTXwallet = amount; } function setMarketingAddress(address _marketingAddress) external onlyOwner() { marketingAddress = payable(_marketingAddress); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function isBlacklist(address account) public view returns (bool) { return _isSniper[account]; } function removeBlacklist(address account) external onlyOwner() { require(_isSniper[account], "Account is not blacklisted"); for (uint256 i = 0; i < _confirmedSnipers.length; i++) { if (_confirmedSnipers[i] == account) { _confirmedSnipers[i] = _confirmedSnipers[_confirmedSnipers.length - 1]; _isSniper[account] = false; _confirmedSnipers.pop(); break; } } } function setFeeRate(uint256 rate) external onlyOwner() { _feeRate = rate; } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Cooldowncheck","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeLimitcheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Limtcheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ManualApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ManualswapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_taxFee","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":"bool","name":"_status","type":"bool"}],"name":"changeSellTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"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":[{"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":[],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTXwallet","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":"opensellTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"removeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setBuySellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setmaxTXwallet","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600380546001600160a01b031916738fd73f4d573fdc73cd45cacf483147d9b397c18517905561dead60805269a4b36af62d9c326b2a00600c8190556200004e9060001962000291565b6200005c90600019620002b4565b600d556040805180820190915260138082527f42697264204f7665727369676874205a6f6e65000000000000000000000000006020909201918252620000a591600f91620001eb565b5060408051808201909152600380825262454d5560e81b6020909201918252620000d291601091620001eb565b506011805460ff1916600917905560125460135560145460155560026018556904f0e70c815e36b71200601c55610e10601d55601e805462ffff001916620100001790553480156200012357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d5460046000336001600160a01b03168152602081019190915260400160002055620001aa60046014556000601255601e805461ff00191661010017905542601955565b600c5460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362000316565b828054620001f990620002da565b90600052602060002090601f0160209004810192826200021d576000855562000268565b82601f106200023857805160ff191683800117855562000268565b8280016001018555821562000268579182015b82811115620002685782518255916020019190600101906200024b565b50620002769291506200027a565b5090565b5b808211156200027657600081556001016200027b565b600082620002af57634e487b7160e01b600052601260045260246000fd5b500690565b600082821015620002d557634e487b7160e01b600052601160045260246000fd5b500390565b600181811c90821680620002ef57607f821691505b6020821081036200031057634e487b7160e01b600052602260045260246000fd5b50919050565b6080516130106200033260003960006103f301526130106000f3fe6080604052600436106102975760003560e01c8063510f11091161015a57806395d89b41116100c1578063c6741e961161007a578063c6741e961461083e578063d5aa764d14610853578063dd62ed3e14610873578063ea2f0b37146108b9578063eb91e651146108d9578063f2fde38b146108f957600080fd5b806395d89b4114610793578063a457c2d7146107a8578063a5ece941146107c8578063a6e29373146107e8578063a9059cbb146107fe578063bb6643ab1461081e57600080fd5b8063787a08a611610113578063787a08a6146106c45780638203f5fe146106da57806388f82020146106ef5780638da5cb5b14610728578063906e9dd01461074657806392d231c11461076657600080fd5b8063510f1109146105e657806352390c02146106065780635342acb41461062657806370a082311461065f578063715018a61461067f57806372b7685d1461069457600080fd5b80633302f734116101fe5780633bd5d173116101b75780633bd5d17314610526578063437823ec146105465780634549b0391461056657806345596e2e1461058657806349bd5a5e146105a65780634fc3f41a146105c657600080fd5b80633302f73414610457578063333e99db146104775780633685d419146104b057806336c5d724146104d057806339509351146104f05780633b124fe71461051057600080fd5b806318160ddd1161025057806318160ddd1461038c57806323b872dd146103a1578063255cd30a146103c157806327c8f835146103e15780632d83811914610415578063313ce5671461043557600080fd5b8063061c82d0146102a357806306fdde03146102c5578063095ea7b3146102f0578063126a56471461032057806313114a9d146103355780631694505e1461035457600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102c36102be366004612bb4565b610919565b005b3480156102d157600080fd5b506102da610951565b6040516102e79190612bcd565b60405180910390f35b3480156102fc57600080fd5b5061031061030b366004612c37565b6109e3565b60405190151581526020016102e7565b34801561032c57600080fd5b506102c36109fa565b34801561034157600080fd5b50600e545b6040519081526020016102e7565b34801561036057600080fd5b50601a54610374906001600160a01b031681565b6040516001600160a01b0390911681526020016102e7565b34801561039857600080fd5b50600c54610346565b3480156103ad57600080fd5b506103106103bc366004612c63565b610a4d565b3480156103cd57600080fd5b506102c36103dc366004612bb4565b610ab6565b3480156103ed57600080fd5b506103747f000000000000000000000000000000000000000000000000000000000000000081565b34801561042157600080fd5b50610346610430366004612bb4565b610ae5565b34801561044157600080fd5b5060115460405160ff90911681526020016102e7565b34801561046357600080fd5b506102c3610472366004612bb4565b610b69565b34801561048357600080fd5b50610310610492366004612ca4565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156104bc57600080fd5b506102c36104cb366004612ca4565b610b98565b3480156104dc57600080fd5b506102c36104eb366004612bb4565b610d4e565b3480156104fc57600080fd5b5061031061050b366004612c37565b610df1565b34801561051c57600080fd5b5061034660125481565b34801561053257600080fd5b506102c3610541366004612bb4565b610e27565b34801561055257600080fd5b506102c3610561366004612ca4565b610f11565b34801561057257600080fd5b50610346610581366004612ccf565b610f5f565b34801561059257600080fd5b506102c36105a1366004612bb4565b610fec565b3480156105b257600080fd5b50601b54610374906001600160a01b031681565b3480156105d257600080fd5b506102c36105e1366004612bb4565b61101b565b3480156105f257600080fd5b506102c3610601366004612cff565b61104a565b34801561061257600080fd5b506102c3610621366004612ca4565b61109f565b34801561063257600080fd5b50610310610641366004612ca4565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561066b57600080fd5b5061034661067a366004612ca4565b6111f2565b34801561068b57600080fd5b506102c3611251565b3480156106a057600080fd5b506103106106af366004612ca4565b60166020526000908152604090205460ff1681565b3480156106d057600080fd5b50610346601d5481565b3480156106e657600080fd5b506102c36112c5565b3480156106fb57600080fd5b5061031061070a366004612ca4565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561073457600080fd5b506000546001600160a01b0316610374565b34801561075257600080fd5b506102c3610761366004612ca4565b61159f565b34801561077257600080fd5b50610346610781366004612ca4565b60176020526000908152604090205481565b34801561079f57600080fd5b506102da6115eb565b3480156107b457600080fd5b506103106107c3366004612c37565b6115fa565b3480156107d457600080fd5b50600354610374906001600160a01b031681565b3480156107f457600080fd5b50610346601c5481565b34801561080a57600080fd5b50610310610819366004612c37565b611649565b34801561082a57600080fd5b50601e546103109062010000900460ff1681565b34801561084a57600080fd5b506102c3611656565b34801561085f57600080fd5b506102c361086e366004612d2d565b611699565b34801561087f57600080fd5b5061034661088e366004612d4a565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156108c557600080fd5b506102c36108d4366004612ca4565b6116df565b3480156108e557600080fd5b506102c36108f4366004612ca4565b61172a565b34801561090557600080fd5b506102c3610914366004612ca4565b6118ad565b6000546001600160a01b0316331461094c5760405162461bcd60e51b815260040161094390612d78565b60405180910390fd5b601255565b6060600f805461096090612dad565b80601f016020809104026020016040519081016040528092919081815260200182805461098c90612dad565b80156109d95780601f106109ae576101008083540402835291602001916109d9565b820191906000526020600020905b8154815290600101906020018083116109bc57829003601f168201915b5050505050905090565b60006109f0338484611997565b5060015b92915050565b6000546001600160a01b03163314610a245760405162461bcd60e51b815260040161094390612d78565b6000610a2f306111f2565b601a54909150610a4a9030906001600160a01b031683611997565b50565b6000610a5a848484611abb565b610aac8433610aa785604051806060016040528060288152602001612f8e602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061209c565b611997565b5060019392505050565b6000546001600160a01b03163314610ae05760405162461bcd60e51b815260040161094390612d78565b601c55565b6000600d54821115610b4c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610943565b6000610b566120d6565b9050610b6283826120f9565b9392505050565b6000546001600160a01b03163314610b935760405162461bcd60e51b815260040161094390612d78565b601455565b6000546001600160a01b03163314610bc25760405162461bcd60e51b815260040161094390612d78565b6001600160a01b0381166000908152600a602052604090205460ff16610c2a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610943565b60005b600b54811015610d4a57816001600160a01b0316600b8281548110610c5457610c54612de7565b6000918252602090912001546001600160a01b031603610d3857600b8054610c7e90600190612e13565b81548110610c8e57610c8e612de7565b600091825260209091200154600b80546001600160a01b039092169183908110610cba57610cba612de7565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600a90925220805460ff19169055600b805480610d1257610d12612e2a565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d4281612e40565b915050610c2d565b5050565b6000546001600160a01b03163314610d785760405162461bcd60e51b815260040161094390612d78565b3063a9059cbb335b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4a9190612e59565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916109f0918590610aa7908661213b565b336000818152600a602052604090205460ff1615610e9c5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610943565b6000610ea78361219a565b505050506001600160a01b038416600090815260046020526040902054919250610ed3919050826121e9565b6001600160a01b038316600090815260046020526040902055600d54610ef990826121e9565b600d55600e54610f09908461213b565b600e55505050565b6000546001600160a01b03163314610f3b5760405162461bcd60e51b815260040161094390612d78565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000600c54831115610fb35760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610943565b81610fd2576000610fc38461219a565b509395506109f4945050505050565b6000610fdd8461219a565b509295506109f4945050505050565b6000546001600160a01b031633146110165760405162461bcd60e51b815260040161094390612d78565b601855565b6000546001600160a01b031633146110455760405162461bcd60e51b815260040161094390612d78565b601d55565b6000546001600160a01b031633146110745760405162461bcd60e51b815260040161094390612d78565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110c95760405162461bcd60e51b815260040161094390612d78565b6001600160a01b0381166000908152600a602052604090205460ff16156111325760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610943565b6001600160a01b0381166000908152600460205260409020541561118c576001600160a01b03811660009081526004602052604090205461117290610ae5565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600a602052604081205460ff161561122f57506001600160a01b031660009081526005602052604090205490565b6001600160a01b0382166000908152600460205260409020546109f490610ae5565b6000546001600160a01b0316331461127b5760405162461bcd60e51b815260040161094390612d78565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112ef5760405162461bcd60e51b815260040161094390612d78565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136a9190612e76565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113db9190612e76565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c9190612e76565b601b80546001600160a01b039283166001600160a01b0319918216178255601a80549484169482169490941784556000805484168152600960209081526040808320805460ff199081166001908117909255308552828520805482168317905560038054808a169716969096178655338086526016855283862080548316841790558954891686528386208054831684179055875489168652838620805483168417905586548916865283862080548316841790557f19455fef2807ff3818a6c78008a7129c64996f2530a2c0cc4f16386c0f8c91bc805490921690921790558352601790915280822064e8d4a51000908190559554851682528082208690559254841681528281208590559054909216825281208290557360f2970dacf41b16814c8aca2a31093c7f2dbb0490527f28aefd52efb4f75556166186040facde62065c49bbdd75bfced6ab0143935ccf55565b6000546001600160a01b031633146115c95760405162461bcd60e51b815260040161094390612d78565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60606010805461096090612dad565b60006109f03384610aa785604051806060016040528060258152602001612fb6602591393360009081526006602090815260408083206001600160a01b038d168452909152902054919061209c565b60006109f0338484611abb565b6000546001600160a01b031633146116805760405162461bcd60e51b815260040161094390612d78565b600061168b306111f2565b90503063a9059cbb33610d80565b6000546001600160a01b031633146116c35760405162461bcd60e51b815260040161094390612d78565b601e8054911515620100000262ff000019909216919091179055565b6000546001600160a01b031633146117095760405162461bcd60e51b815260040161094390612d78565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b031633146117545760405162461bcd60e51b815260040161094390612d78565b6001600160a01b03811660009081526007602052604090205460ff166117bc5760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610943565b60005b600854811015610d4a57816001600160a01b0316600882815481106117e6576117e6612de7565b6000918252602090912001546001600160a01b03160361189b576008805461181090600190612e13565b8154811061182057611820612de7565b600091825260209091200154600880546001600160a01b03909216918390811061184c5761184c612de7565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600790915260409020805460ff191690556008805480610d1257610d12612e2a565b806118a581612e40565b9150506117bf565b6000546001600160a01b031633146118d75760405162461bcd60e51b815260040161094390612d78565b6001600160a01b03811661193c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610943565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166119f95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610943565b6001600160a01b038216611a5a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610943565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b1f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610943565b6001600160a01b038216611b815760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610943565b60008111611be35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610943565b6001600160a01b03821660009081526007602052604090205460ff1615611c465760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610943565b3360009081526007602052604090205460ff1615611ca05760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610943565b601b546001600160a01b038481169116148015611ccb5750601a546001600160a01b03838116911614155b8015611cf057506001600160a01b03821660009081526009602052604090205460ff16155b15611dfc57601e54610100900460ff16611d4c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610943565b6019544203611dbb576001600160a01b0382166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191690911790555b6001600160a01b03821660009081526017602052604090205464e8d4a510001115611dfc576001600160a01b03821660009081526017602052604090204290555b6001600160a01b03821660009081526016602052604090205460ff16611e7257601c54611e3282611e2c856111f2565b9061213b565b1115611e725760405162461bcd60e51b815260206004820152600f60248201526e151e08131a5b5a5d08115e18d95959608a1b6044820152606401610943565b6000611e7d306111f2565b601e5490915060ff16158015611e9a5750601e54610100900460ff165b8015611eb35750601b546001600160a01b038481169116145b1561200c578015611f2557601854601b54611eee91606491611ee89190611ee2906001600160a01b03166111f2565b9061222b565b906120f9565b811115611f1c57601854601b54611f1991606491611ee89190611ee2906001600160a01b03166111f2565b90505b611f25816122ad565b601e5462010000900460ff161515600003611f785760405162461bcd60e51b815260206004820152601360248201527214d95b1b08151e081b9bdd08185b1b1bddd959606a1b6044820152606401610943565b6001600160a01b03841660009081526017602052604090205464e8d4a51000111561200c57601d546001600160a01b0385166000908152601760205260409020544291611fc5919061213b565b111561200c5760405162461bcd60e51b8152602060048201526016602482015275436f6f6c20446f776e204e6f7420636f6d706c65746560501b6044820152606401610943565b601b546000906001600160a01b03868116911614806120385750601b546001600160a01b038581169116145b801561208057506001600160a01b03851660009081526009602052604090205460ff168061207e57506001600160a01b03841660009081526009602052604090205460ff165b155b15612089575060015b612095858585846122e1565b5050505050565b600081848411156120c05760405162461bcd60e51b81526004016109439190612bcd565b5060006120cd8486612e13565b95945050505050565b60008060006120e361240c565b90925090506120f282826120f9565b9250505090565b6000610b6283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061258e565b6000806121488385612e93565b905083811015610b625760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610943565b60008060008060008060008060006121b18a6125bc565b92509250925060008060006121cf8d86866121ca6120d6565b6125fe565b919f909e50909c50959a5093985091965092945050505050565b6000610b6283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061209c565b60008260000361223d575060006109f4565b60006122498385612eab565b9050826122568583612eca565b14610b625760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610943565b601e805460ff191660011790556122c38161264e565b4780156122d3576122d3476127e1565b5050601e805460ff19169055565b806122ee576122ee61281b565b6001600160a01b0384166000908152600a602052604090205460ff16801561232f57506001600160a01b0383166000908152600a602052604090205460ff16155b156123445761233f848484612849565b6123f0565b6001600160a01b0384166000908152600a602052604090205460ff1615801561238557506001600160a01b0383166000908152600a602052604090205460ff165b156123955761233f84848461296f565b6001600160a01b0384166000908152600a602052604090205460ff1680156123d557506001600160a01b0383166000908152600a602052604090205460ff165b156123e55761233f848484612a18565b6123f0848484612a8b565b8061240657612406601354601255601554601455565b50505050565b600d54600c546000918291825b600b5481101561255e578260046000600b848154811061243b5761243b612de7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806124a657508160056000600b848154811061247f5761247f612de7565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156124bc57600d54600c54945094505050509091565b61250260046000600b84815481106124d6576124d6612de7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906121e9565b925061254a60056000600b848154811061251e5761251e612de7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906121e9565b91508061255681612e40565b915050612419565b50600c54600d5461256e916120f9565b82101561258557600d54600c549350935050509091565b90939092509050565b600081836125af5760405162461bcd60e51b81526004016109439190612bcd565b5060006120cd8486612eca565b6000806000806125cb85612acf565b905060006125d886612aeb565b905060006125f0826125ea89866121e9565b906121e9565b979296509094509092505050565b600080808061260d888661222b565b9050600061261b888761222b565b90506000612629888861222b565b9050600061263b826125ea86866121e9565b939b939a50919850919650505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061268357612683612de7565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156126dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127009190612e76565b8160018151811061271357612713612de7565b6001600160a01b039283166020918202929092010152601a546127399130911684611997565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612772908590600090869030904290600401612f30565b600060405180830381600087803b15801561278c57600080fd5b505af11580156127a0573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516127d5929190612f6c565b60405180910390a15050565b6003546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d4a573d6000803e3d6000fd5b60125415801561282b5750601454155b1561283257565b601280546013556014805460155560009182905555565b60008060008060008061285b8761219a565b6001600160a01b038f16600090815260056020526040902054959b5093995091975095509350915061288d90886121e9565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546128bc90876121e9565b6001600160a01b03808b1660009081526004602052604080822093909355908a16815220546128eb908661213b565b6001600160a01b03891660009081526004602052604090205561290d81612b07565b6129178483612b90565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161295c91815260200190565b60405180910390a3505050505050505050565b6000806000806000806129818761219a565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506129b390876121e9565b6001600160a01b03808b16600090815260046020908152604080832094909455918b168152600590915220546129e9908461213b565b6001600160a01b0389166000908152600560209081526040808320939093556004905220546128eb908661213b565b600080600080600080612a2a8761219a565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612a5c90886121e9565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546129b390876121e9565b600080600080600080612a9d8761219a565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506128bc90876121e9565b60006109f46064611ee86012548561222b90919063ffffffff16565b60006109f46064611ee86014548561222b90919063ffffffff16565b6000612b116120d6565b90506000612b1f838361222b565b30600090815260046020526040902054909150612b3c908261213b565b30600090815260046020908152604080832093909355600a9052205460ff1615612b8b5730600090815260056020526040902054612b7a908461213b565b306000908152600560205260409020555b505050565b600d54612b9d90836121e9565b600d55600e54612bad908261213b565b600e555050565b600060208284031215612bc657600080fd5b5035919050565b600060208083528351808285015260005b81811015612bfa57858101830151858201604001528201612bde565b81811115612c0c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610a4a57600080fd5b60008060408385031215612c4a57600080fd5b8235612c5581612c22565b946020939093013593505050565b600080600060608486031215612c7857600080fd5b8335612c8381612c22565b92506020840135612c9381612c22565b929592945050506040919091013590565b600060208284031215612cb657600080fd5b8135610b6281612c22565b8015158114610a4a57600080fd5b60008060408385031215612ce257600080fd5b823591506020830135612cf481612cc1565b809150509250929050565b60008060408385031215612d1257600080fd5b8235612d1d81612c22565b91506020830135612cf481612cc1565b600060208284031215612d3f57600080fd5b8135610b6281612cc1565b60008060408385031215612d5d57600080fd5b8235612d6881612c22565b91506020830135612cf481612c22565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612dc157607f821691505b602082108103612de157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015612e2557612e25612dfd565b500390565b634e487b7160e01b600052603160045260246000fd5b600060018201612e5257612e52612dfd565b5060010190565b600060208284031215612e6b57600080fd5b8151610b6281612cc1565b600060208284031215612e8857600080fd5b8151610b6281612c22565b60008219821115612ea657612ea6612dfd565b500190565b6000816000190483118215151615612ec557612ec5612dfd565b500290565b600082612ee757634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526020808501945080840160005b83811015612f255781516001600160a01b031687529582019590820190600101612f00565b509495945050505050565b85815284602082015260a060408201526000612f4f60a0830186612eec565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612f856040830184612eec565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122013f25c4b7bd92e114307816cb6e5e6854e499f5c976897499bae5413e86f517364736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106102975760003560e01c8063510f11091161015a57806395d89b41116100c1578063c6741e961161007a578063c6741e961461083e578063d5aa764d14610853578063dd62ed3e14610873578063ea2f0b37146108b9578063eb91e651146108d9578063f2fde38b146108f957600080fd5b806395d89b4114610793578063a457c2d7146107a8578063a5ece941146107c8578063a6e29373146107e8578063a9059cbb146107fe578063bb6643ab1461081e57600080fd5b8063787a08a611610113578063787a08a6146106c45780638203f5fe146106da57806388f82020146106ef5780638da5cb5b14610728578063906e9dd01461074657806392d231c11461076657600080fd5b8063510f1109146105e657806352390c02146106065780635342acb41461062657806370a082311461065f578063715018a61461067f57806372b7685d1461069457600080fd5b80633302f734116101fe5780633bd5d173116101b75780633bd5d17314610526578063437823ec146105465780634549b0391461056657806345596e2e1461058657806349bd5a5e146105a65780634fc3f41a146105c657600080fd5b80633302f73414610457578063333e99db146104775780633685d419146104b057806336c5d724146104d057806339509351146104f05780633b124fe71461051057600080fd5b806318160ddd1161025057806318160ddd1461038c57806323b872dd146103a1578063255cd30a146103c157806327c8f835146103e15780632d83811914610415578063313ce5671461043557600080fd5b8063061c82d0146102a357806306fdde03146102c5578063095ea7b3146102f0578063126a56471461032057806313114a9d146103355780631694505e1461035457600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102c36102be366004612bb4565b610919565b005b3480156102d157600080fd5b506102da610951565b6040516102e79190612bcd565b60405180910390f35b3480156102fc57600080fd5b5061031061030b366004612c37565b6109e3565b60405190151581526020016102e7565b34801561032c57600080fd5b506102c36109fa565b34801561034157600080fd5b50600e545b6040519081526020016102e7565b34801561036057600080fd5b50601a54610374906001600160a01b031681565b6040516001600160a01b0390911681526020016102e7565b34801561039857600080fd5b50600c54610346565b3480156103ad57600080fd5b506103106103bc366004612c63565b610a4d565b3480156103cd57600080fd5b506102c36103dc366004612bb4565b610ab6565b3480156103ed57600080fd5b506103747f000000000000000000000000000000000000000000000000000000000000dead81565b34801561042157600080fd5b50610346610430366004612bb4565b610ae5565b34801561044157600080fd5b5060115460405160ff90911681526020016102e7565b34801561046357600080fd5b506102c3610472366004612bb4565b610b69565b34801561048357600080fd5b50610310610492366004612ca4565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156104bc57600080fd5b506102c36104cb366004612ca4565b610b98565b3480156104dc57600080fd5b506102c36104eb366004612bb4565b610d4e565b3480156104fc57600080fd5b5061031061050b366004612c37565b610df1565b34801561051c57600080fd5b5061034660125481565b34801561053257600080fd5b506102c3610541366004612bb4565b610e27565b34801561055257600080fd5b506102c3610561366004612ca4565b610f11565b34801561057257600080fd5b50610346610581366004612ccf565b610f5f565b34801561059257600080fd5b506102c36105a1366004612bb4565b610fec565b3480156105b257600080fd5b50601b54610374906001600160a01b031681565b3480156105d257600080fd5b506102c36105e1366004612bb4565b61101b565b3480156105f257600080fd5b506102c3610601366004612cff565b61104a565b34801561061257600080fd5b506102c3610621366004612ca4565b61109f565b34801561063257600080fd5b50610310610641366004612ca4565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561066b57600080fd5b5061034661067a366004612ca4565b6111f2565b34801561068b57600080fd5b506102c3611251565b3480156106a057600080fd5b506103106106af366004612ca4565b60166020526000908152604090205460ff1681565b3480156106d057600080fd5b50610346601d5481565b3480156106e657600080fd5b506102c36112c5565b3480156106fb57600080fd5b5061031061070a366004612ca4565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561073457600080fd5b506000546001600160a01b0316610374565b34801561075257600080fd5b506102c3610761366004612ca4565b61159f565b34801561077257600080fd5b50610346610781366004612ca4565b60176020526000908152604090205481565b34801561079f57600080fd5b506102da6115eb565b3480156107b457600080fd5b506103106107c3366004612c37565b6115fa565b3480156107d457600080fd5b50600354610374906001600160a01b031681565b3480156107f457600080fd5b50610346601c5481565b34801561080a57600080fd5b50610310610819366004612c37565b611649565b34801561082a57600080fd5b50601e546103109062010000900460ff1681565b34801561084a57600080fd5b506102c3611656565b34801561085f57600080fd5b506102c361086e366004612d2d565b611699565b34801561087f57600080fd5b5061034661088e366004612d4a565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156108c557600080fd5b506102c36108d4366004612ca4565b6116df565b3480156108e557600080fd5b506102c36108f4366004612ca4565b61172a565b34801561090557600080fd5b506102c3610914366004612ca4565b6118ad565b6000546001600160a01b0316331461094c5760405162461bcd60e51b815260040161094390612d78565b60405180910390fd5b601255565b6060600f805461096090612dad565b80601f016020809104026020016040519081016040528092919081815260200182805461098c90612dad565b80156109d95780601f106109ae576101008083540402835291602001916109d9565b820191906000526020600020905b8154815290600101906020018083116109bc57829003601f168201915b5050505050905090565b60006109f0338484611997565b5060015b92915050565b6000546001600160a01b03163314610a245760405162461bcd60e51b815260040161094390612d78565b6000610a2f306111f2565b601a54909150610a4a9030906001600160a01b031683611997565b50565b6000610a5a848484611abb565b610aac8433610aa785604051806060016040528060288152602001612f8e602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061209c565b611997565b5060019392505050565b6000546001600160a01b03163314610ae05760405162461bcd60e51b815260040161094390612d78565b601c55565b6000600d54821115610b4c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610943565b6000610b566120d6565b9050610b6283826120f9565b9392505050565b6000546001600160a01b03163314610b935760405162461bcd60e51b815260040161094390612d78565b601455565b6000546001600160a01b03163314610bc25760405162461bcd60e51b815260040161094390612d78565b6001600160a01b0381166000908152600a602052604090205460ff16610c2a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610943565b60005b600b54811015610d4a57816001600160a01b0316600b8281548110610c5457610c54612de7565b6000918252602090912001546001600160a01b031603610d3857600b8054610c7e90600190612e13565b81548110610c8e57610c8e612de7565b600091825260209091200154600b80546001600160a01b039092169183908110610cba57610cba612de7565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600a90925220805460ff19169055600b805480610d1257610d12612e2a565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d4281612e40565b915050610c2d565b5050565b6000546001600160a01b03163314610d785760405162461bcd60e51b815260040161094390612d78565b3063a9059cbb335b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4a9190612e59565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916109f0918590610aa7908661213b565b336000818152600a602052604090205460ff1615610e9c5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610943565b6000610ea78361219a565b505050506001600160a01b038416600090815260046020526040902054919250610ed3919050826121e9565b6001600160a01b038316600090815260046020526040902055600d54610ef990826121e9565b600d55600e54610f09908461213b565b600e55505050565b6000546001600160a01b03163314610f3b5760405162461bcd60e51b815260040161094390612d78565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000600c54831115610fb35760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610943565b81610fd2576000610fc38461219a565b509395506109f4945050505050565b6000610fdd8461219a565b509295506109f4945050505050565b6000546001600160a01b031633146110165760405162461bcd60e51b815260040161094390612d78565b601855565b6000546001600160a01b031633146110455760405162461bcd60e51b815260040161094390612d78565b601d55565b6000546001600160a01b031633146110745760405162461bcd60e51b815260040161094390612d78565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110c95760405162461bcd60e51b815260040161094390612d78565b6001600160a01b0381166000908152600a602052604090205460ff16156111325760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610943565b6001600160a01b0381166000908152600460205260409020541561118c576001600160a01b03811660009081526004602052604090205461117290610ae5565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600a602052604081205460ff161561122f57506001600160a01b031660009081526005602052604090205490565b6001600160a01b0382166000908152600460205260409020546109f490610ae5565b6000546001600160a01b0316331461127b5760405162461bcd60e51b815260040161094390612d78565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112ef5760405162461bcd60e51b815260040161094390612d78565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136a9190612e76565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113db9190612e76565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c9190612e76565b601b80546001600160a01b039283166001600160a01b0319918216178255601a80549484169482169490941784556000805484168152600960209081526040808320805460ff199081166001908117909255308552828520805482168317905560038054808a169716969096178655338086526016855283862080548316841790558954891686528386208054831684179055875489168652838620805483168417905586548916865283862080548316841790557f19455fef2807ff3818a6c78008a7129c64996f2530a2c0cc4f16386c0f8c91bc805490921690921790558352601790915280822064e8d4a51000908190559554851682528082208690559254841681528281208590559054909216825281208290557360f2970dacf41b16814c8aca2a31093c7f2dbb0490527f28aefd52efb4f75556166186040facde62065c49bbdd75bfced6ab0143935ccf55565b6000546001600160a01b031633146115c95760405162461bcd60e51b815260040161094390612d78565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60606010805461096090612dad565b60006109f03384610aa785604051806060016040528060258152602001612fb6602591393360009081526006602090815260408083206001600160a01b038d168452909152902054919061209c565b60006109f0338484611abb565b6000546001600160a01b031633146116805760405162461bcd60e51b815260040161094390612d78565b600061168b306111f2565b90503063a9059cbb33610d80565b6000546001600160a01b031633146116c35760405162461bcd60e51b815260040161094390612d78565b601e8054911515620100000262ff000019909216919091179055565b6000546001600160a01b031633146117095760405162461bcd60e51b815260040161094390612d78565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b031633146117545760405162461bcd60e51b815260040161094390612d78565b6001600160a01b03811660009081526007602052604090205460ff166117bc5760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610943565b60005b600854811015610d4a57816001600160a01b0316600882815481106117e6576117e6612de7565b6000918252602090912001546001600160a01b03160361189b576008805461181090600190612e13565b8154811061182057611820612de7565b600091825260209091200154600880546001600160a01b03909216918390811061184c5761184c612de7565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600790915260409020805460ff191690556008805480610d1257610d12612e2a565b806118a581612e40565b9150506117bf565b6000546001600160a01b031633146118d75760405162461bcd60e51b815260040161094390612d78565b6001600160a01b03811661193c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610943565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166119f95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610943565b6001600160a01b038216611a5a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610943565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b1f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610943565b6001600160a01b038216611b815760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610943565b60008111611be35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610943565b6001600160a01b03821660009081526007602052604090205460ff1615611c465760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610943565b3360009081526007602052604090205460ff1615611ca05760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610943565b601b546001600160a01b038481169116148015611ccb5750601a546001600160a01b03838116911614155b8015611cf057506001600160a01b03821660009081526009602052604090205460ff16155b15611dfc57601e54610100900460ff16611d4c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610943565b6019544203611dbb576001600160a01b0382166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191690911790555b6001600160a01b03821660009081526017602052604090205464e8d4a510001115611dfc576001600160a01b03821660009081526017602052604090204290555b6001600160a01b03821660009081526016602052604090205460ff16611e7257601c54611e3282611e2c856111f2565b9061213b565b1115611e725760405162461bcd60e51b815260206004820152600f60248201526e151e08131a5b5a5d08115e18d95959608a1b6044820152606401610943565b6000611e7d306111f2565b601e5490915060ff16158015611e9a5750601e54610100900460ff165b8015611eb35750601b546001600160a01b038481169116145b1561200c578015611f2557601854601b54611eee91606491611ee89190611ee2906001600160a01b03166111f2565b9061222b565b906120f9565b811115611f1c57601854601b54611f1991606491611ee89190611ee2906001600160a01b03166111f2565b90505b611f25816122ad565b601e5462010000900460ff161515600003611f785760405162461bcd60e51b815260206004820152601360248201527214d95b1b08151e081b9bdd08185b1b1bddd959606a1b6044820152606401610943565b6001600160a01b03841660009081526017602052604090205464e8d4a51000111561200c57601d546001600160a01b0385166000908152601760205260409020544291611fc5919061213b565b111561200c5760405162461bcd60e51b8152602060048201526016602482015275436f6f6c20446f776e204e6f7420636f6d706c65746560501b6044820152606401610943565b601b546000906001600160a01b03868116911614806120385750601b546001600160a01b038581169116145b801561208057506001600160a01b03851660009081526009602052604090205460ff168061207e57506001600160a01b03841660009081526009602052604090205460ff165b155b15612089575060015b612095858585846122e1565b5050505050565b600081848411156120c05760405162461bcd60e51b81526004016109439190612bcd565b5060006120cd8486612e13565b95945050505050565b60008060006120e361240c565b90925090506120f282826120f9565b9250505090565b6000610b6283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061258e565b6000806121488385612e93565b905083811015610b625760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610943565b60008060008060008060008060006121b18a6125bc565b92509250925060008060006121cf8d86866121ca6120d6565b6125fe565b919f909e50909c50959a5093985091965092945050505050565b6000610b6283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061209c565b60008260000361223d575060006109f4565b60006122498385612eab565b9050826122568583612eca565b14610b625760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610943565b601e805460ff191660011790556122c38161264e565b4780156122d3576122d3476127e1565b5050601e805460ff19169055565b806122ee576122ee61281b565b6001600160a01b0384166000908152600a602052604090205460ff16801561232f57506001600160a01b0383166000908152600a602052604090205460ff16155b156123445761233f848484612849565b6123f0565b6001600160a01b0384166000908152600a602052604090205460ff1615801561238557506001600160a01b0383166000908152600a602052604090205460ff165b156123955761233f84848461296f565b6001600160a01b0384166000908152600a602052604090205460ff1680156123d557506001600160a01b0383166000908152600a602052604090205460ff165b156123e55761233f848484612a18565b6123f0848484612a8b565b8061240657612406601354601255601554601455565b50505050565b600d54600c546000918291825b600b5481101561255e578260046000600b848154811061243b5761243b612de7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806124a657508160056000600b848154811061247f5761247f612de7565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156124bc57600d54600c54945094505050509091565b61250260046000600b84815481106124d6576124d6612de7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906121e9565b925061254a60056000600b848154811061251e5761251e612de7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906121e9565b91508061255681612e40565b915050612419565b50600c54600d5461256e916120f9565b82101561258557600d54600c549350935050509091565b90939092509050565b600081836125af5760405162461bcd60e51b81526004016109439190612bcd565b5060006120cd8486612eca565b6000806000806125cb85612acf565b905060006125d886612aeb565b905060006125f0826125ea89866121e9565b906121e9565b979296509094509092505050565b600080808061260d888661222b565b9050600061261b888761222b565b90506000612629888861222b565b9050600061263b826125ea86866121e9565b939b939a50919850919650505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061268357612683612de7565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156126dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127009190612e76565b8160018151811061271357612713612de7565b6001600160a01b039283166020918202929092010152601a546127399130911684611997565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612772908590600090869030904290600401612f30565b600060405180830381600087803b15801561278c57600080fd5b505af11580156127a0573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516127d5929190612f6c565b60405180910390a15050565b6003546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d4a573d6000803e3d6000fd5b60125415801561282b5750601454155b1561283257565b601280546013556014805460155560009182905555565b60008060008060008061285b8761219a565b6001600160a01b038f16600090815260056020526040902054959b5093995091975095509350915061288d90886121e9565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546128bc90876121e9565b6001600160a01b03808b1660009081526004602052604080822093909355908a16815220546128eb908661213b565b6001600160a01b03891660009081526004602052604090205561290d81612b07565b6129178483612b90565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161295c91815260200190565b60405180910390a3505050505050505050565b6000806000806000806129818761219a565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506129b390876121e9565b6001600160a01b03808b16600090815260046020908152604080832094909455918b168152600590915220546129e9908461213b565b6001600160a01b0389166000908152600560209081526040808320939093556004905220546128eb908661213b565b600080600080600080612a2a8761219a565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612a5c90886121e9565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546129b390876121e9565b600080600080600080612a9d8761219a565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506128bc90876121e9565b60006109f46064611ee86012548561222b90919063ffffffff16565b60006109f46064611ee86014548561222b90919063ffffffff16565b6000612b116120d6565b90506000612b1f838361222b565b30600090815260046020526040902054909150612b3c908261213b565b30600090815260046020908152604080832093909355600a9052205460ff1615612b8b5730600090815260056020526040902054612b7a908461213b565b306000908152600560205260409020555b505050565b600d54612b9d90836121e9565b600d55600e54612bad908261213b565b600e555050565b600060208284031215612bc657600080fd5b5035919050565b600060208083528351808285015260005b81811015612bfa57858101830151858201604001528201612bde565b81811115612c0c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610a4a57600080fd5b60008060408385031215612c4a57600080fd5b8235612c5581612c22565b946020939093013593505050565b600080600060608486031215612c7857600080fd5b8335612c8381612c22565b92506020840135612c9381612c22565b929592945050506040919091013590565b600060208284031215612cb657600080fd5b8135610b6281612c22565b8015158114610a4a57600080fd5b60008060408385031215612ce257600080fd5b823591506020830135612cf481612cc1565b809150509250929050565b60008060408385031215612d1257600080fd5b8235612d1d81612c22565b91506020830135612cf481612cc1565b600060208284031215612d3f57600080fd5b8135610b6281612cc1565b60008060408385031215612d5d57600080fd5b8235612d6881612c22565b91506020830135612cf481612c22565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612dc157607f821691505b602082108103612de157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015612e2557612e25612dfd565b500390565b634e487b7160e01b600052603160045260246000fd5b600060018201612e5257612e52612dfd565b5060010190565b600060208284031215612e6b57600080fd5b8151610b6281612cc1565b600060208284031215612e8857600080fd5b8151610b6281612c22565b60008219821115612ea657612ea6612dfd565b500190565b6000816000190483118215151615612ec557612ec5612dfd565b500290565b600082612ee757634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526020808501945080840160005b83811015612f255781516001600160a01b031687529582019590820190600101612f00565b509495945050505050565b85815284602082015260a060408201526000612f4f60a0830186612eec565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612f856040830184612eec565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122013f25c4b7bd92e114307816cb6e5e6854e499f5c976897499bae5413e86f517364736f6c634300080d0033
Deployed Bytecode Sourcemap
14479:20721:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33482:98;;;;;;;;;;-1:-1:-1;33482:98:0;;;;;:::i;:::-;;:::i;:::-;;17904:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18816:161;;;;;;;;;;-1:-1:-1;18816:161:0;;;;;:::i;:::-;;:::i;:::-;;;1422:14:1;;1415:22;1397:41;;1385:2;1370:18;18816:161:0;1257:187:1;25107:215:0;;;;;;;;;;;;;:::i;19937:87::-;;;;;;;;;;-1:-1:-1;20006:10:0;;19937:87;;;1595:25:1;;;1583:2;1568:18;19937:87:0;1449:177:1;15898:41:0;;;;;;;;;;-1:-1:-1;15898:41:0;;;;-1:-1:-1;;;;;15898:41:0;;;;;;-1:-1:-1;;;;;1822:32:1;;;1804:51;;1792:2;1777:18;15898:41:0;1631:230:1;18181:95:0;;;;;;;;;;-1:-1:-1;18261:7:0;;18181:95;;18985:313;;;;;;;;;;-1:-1:-1;18985:313:0;;;;;:::i;:::-;;:::i;33961:100::-;;;;;;;;;;-1:-1:-1;33961:100:0;;;;;:::i;:::-;;:::i;14712:81::-;;;;;;;;;;;;;;;20996:253;;;;;;;;;;-1:-1:-1;20996:253:0;;;;;:::i;:::-;;:::i;18090:83::-;;;;;;;;;;-1:-1:-1;18156:9:0;;18090:83;;18156:9;;;;2677:36:1;;2665:2;2650:18;18090:83:0;2535:184:1;33829:120:0;;;;;;;;;;-1:-1:-1;33829:120:0;;;;;:::i;:::-;;:::i;34375:109::-;;;;;;;;;;-1:-1:-1;34375:109:0;;;;;:::i;:::-;-1:-1:-1;;;;;34458:18:0;34434:4;34458:18;;;:9;:18;;;;;;;;;34375:109;21600:479;;;;;;;;;;-1:-1:-1;21600:479:0;;;;;:::i;:::-;;:::i;33687:130::-;;;;;;;;;;-1:-1:-1;33687:130:0;;;;;:::i;:::-;;:::i;19306:218::-;;;;;;;;;;-1:-1:-1;19306:218:0;;;;;:::i;:::-;;:::i;15544:22::-;;;;;;;;;;;;;;;;20163:377;;;;;;;;;;-1:-1:-1;20163:377:0;;;;;:::i;:::-;;:::i;33237:111::-;;;;;;;;;;-1:-1:-1;33237:111:0;;;;;:::i;:::-;;:::i;20552:436::-;;;;;;;;;;-1:-1:-1;20552:436:0;;;;;:::i;:::-;;:::i;35002:90::-;;;;;;;;;;-1:-1:-1;35002:90:0;;;;;:::i;:::-;;:::i;15946:28::-;;;;;;;;;;-1:-1:-1;15946:28:0;;;;-1:-1:-1;;;;;15946:28:0;;;33588:90;;;;;;;;;;-1:-1:-1;33588:90:0;;;;;:::i;:::-;;:::i;20034:117::-;;;;;;;;;;-1:-1:-1;20034:117:0;;;;;:::i;:::-;;:::i;21257:335::-;;;;;;;;;;-1:-1:-1;21257:335:0;;;;;:::i;:::-;;:::i;33102:123::-;;;;;;;;;;-1:-1:-1;33102:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;33190:27:0;33166:4;33190:27;;;:18;:27;;;;;;;;;33102:123;18284:198;;;;;;;;;;-1:-1:-1;18284:198:0;;;;;:::i;:::-;;:::i;6110:148::-;;;;;;;;;;;;;:::i;15725:41::-;;;;;;;;;;-1:-1:-1;15725:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16040:28;;;;;;;;;;;;;;;;16681:1049;;;;;;;;;;;;;:::i;19809:120::-;;;;;;;;;;-1:-1:-1;19809:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;19901:20:0;19877:4;19901:20;;;:11;:20;;;;;;;;;19809:120;5885:79;;;;;;;;;;-1:-1:-1;5923:7:0;5950:6;-1:-1:-1;;;;;5950:6:0;5885:79;;34079:141;;;;;;;;;;-1:-1:-1;34079:141:0;;;;;:::i;:::-;;:::i;15775:48::-;;;;;;;;;;-1:-1:-1;15775:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;17995:87;;;;;;;;;;;;;:::i;19532:269::-;;;;;;;;;;-1:-1:-1;19532:269:0;;;;;:::i;:::-;;:::i;14612:93::-;;;;;;;;;;-1:-1:-1;14612:93:0;;;;-1:-1:-1;;;;;14612:93:0;;;15987:44;;;;;;;;;;;;;;;;18490:167;;;;;;;;;;-1:-1:-1;18490:167:0;;;;;:::i;:::-;;:::i;16149:27::-;;;;;;;;;;-1:-1:-1;16149:27:0;;;;;;;;;;;25443:192;;;;;;;;;;;;;:::i;25334:90::-;;;;;;;;;;-1:-1:-1;25334:90:0;;;;;:::i;:::-;;:::i;18665:143::-;;;;;;;;;;-1:-1:-1;18665:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18773:18:0;;;18746:7;18773:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18665:143;33360:110;;;;;;;;;;-1:-1:-1;33360:110:0;;;;;:::i;:::-;;:::i;34498:483::-;;;;;;;;;;-1:-1:-1;34498:483:0;;;;;:::i;:::-;;:::i;6266:244::-;;;;;;;;;;-1:-1:-1;6266:244:0;;;;;:::i;:::-;;:::i;33482:98::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;;;;;;;;;33556:7:::1;:16:::0;33482:98::o;17904:83::-;17941:13;17974:5;17967:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17904:83;:::o;18816:161::-;18891:4;18908:39;269:10;18931:7;18940:6;18908:8;:39::i;:::-;-1:-1:-1;18965:4:0;18816:161;;;;;:::o;25107:215::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;25166:28:::1;25197:24;25215:4;25197:9;:24::i;:::-;25265:15;::::0;25166:55;;-1:-1:-1;25233:71:0::1;::::0;25250:4:::1;::::0;-1:-1:-1;;;;;25265:15:0::1;25166:55:::0;25233:8:::1;:71::i;:::-;25155:167;25107:215::o:0;18985:313::-;19083:4;19100:36;19110:6;19118:9;19129:6;19100:9;:36::i;:::-;19147:121;19156:6;269:10;19178:89;19216:6;19178:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19178:19:0;;;;;;:11;:19;;;;;;;;269:10;19178:33;;;;;;;;;;:37;:89::i;:::-;19147:8;:121::i;:::-;-1:-1:-1;19286:4:0;18985:313;;;;;:::o;33961:100::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;34033:11:::1;:20:::0;33961:100::o;20996:253::-;21062:7;21101;;21090;:18;;21082:73;;;;-1:-1:-1;;;21082:73:0;;5611:2:1;21082:73:0;;;5593:21:1;5650:2;5630:18;;;5623:30;5689:34;5669:18;;;5662:62;-1:-1:-1;;;5740:18:1;;;5733:40;5790:19;;21082:73:0;5409:406:1;21082:73:0;21166:19;21189:10;:8;:10::i;:::-;21166:33;-1:-1:-1;21217:24:0;:7;21166:33;21217:11;:24::i;:::-;21210:31;20996:253;-1:-1:-1;;;20996:253:0:o;33829:120::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;33913:13:::1;:28:::0;33829:120::o;21600:479::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21682:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21674:60;;;::::0;-1:-1:-1;;;21674:60:0;;6022:2:1;21674:60:0::1;::::0;::::1;6004:21:1::0;6061:2;6041:18;;;6034:30;6100:29;6080:18;;;6073:57;6147:18;;21674:60:0::1;5820:351:1::0;21674:60:0::1;21750:9;21745:327;21769:9;:16:::0;21765:20;::::1;21745:327;;;21827:7;-1:-1:-1::0;;;;;21811:23:0::1;:9;21821:1;21811:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;21811:12:0::1;:23:::0;21807:254:::1;;21870:9;21880:16:::0;;:20:::1;::::0;21899:1:::1;::::0;21880:20:::1;:::i;:::-;21870:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;21855:9:::1;:12:::0;;-1:-1:-1;;;;;21870:31:0;;::::1;::::0;21865:1;;21855:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;21855:46:0::1;-1:-1:-1::0;;;;;21855:46:0;;::::1;;::::0;;21920:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;21959:11:::1;:20:::0;;;;:28;;-1:-1:-1;;21959:28:0::1;::::0;;22006:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22006:15:0;;;;;-1:-1:-1;;;;;;22006:15:0::1;::::0;;;;;21745:327:::1;21600:479:::0;:::o;21807:254::-:1;21787:3:::0;::::1;::::0;::::1;:::i;:::-;;;;21745:327;;;;21600:479:::0;:::o;33687:130::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;33771:4:::1;33756:30;269:10:::0;33787:12:::1;33756:52;::::0;-1:-1:-1;;;;;;33756:52:0::1;::::0;;;;;;-1:-1:-1;;;;;7042:32:1;;;33756:52:0::1;::::0;::::1;7024:51:1::0;7091:18;;;7084:34;;;6997:18;;33756:52:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19306:218::-:0;269:10;19394:4;19443:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19443:34:0;;;;;;;;;;19394:4;;19411:83;;19434:7;;19443:50;;19482:10;19443:38;:50::i;20163:377::-;269:10;20215:14;20264:19;;;:11;:19;;;;;;;;20263:20;20255:77;;;;-1:-1:-1;;;20255:77:0;;7581:2:1;20255:77:0;;;7563:21:1;7620:2;7600:18;;;7593:30;7659:34;7639:18;;;7632:62;-1:-1:-1;;;7710:18:1;;;7703:42;7762:19;;20255:77:0;7379:408:1;20255:77:0;20344:15;20368:19;20379:7;20368:10;:19::i;:::-;-1:-1:-1;;;;;;;;;20416:15:0;;;;;;:7;:15;;;;;;20343:44;;-1:-1:-1;20416:28:0;;:15;-1:-1:-1;20343:44:0;20416:19;:28::i;:::-;-1:-1:-1;;;;;20398:15:0;;;;;;:7;:15;;;;;:46;20465:7;;:20;;20477:7;20465:11;:20::i;:::-;20455:7;:30;20509:10;;:23;;20524:7;20509:14;:23::i;:::-;20496:10;:36;-1:-1:-1;;;20163:377:0:o;33237:111::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33306:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;33306:34:0::1;33336:4;33306:34;::::0;;33237:111::o;20552:436::-;20642:7;20681;;20670;:18;;20662:62;;;;-1:-1:-1;;;20662:62:0;;7994:2:1;20662:62:0;;;7976:21:1;8033:2;8013:18;;;8006:30;8072:33;8052:18;;;8045:61;8123:18;;20662:62:0;7792:355:1;20662:62:0;20740:17;20735:246;;20775:15;20799:19;20810:7;20799:10;:19::i;:::-;-1:-1:-1;20774:44:0;;-1:-1:-1;20833:14:0;;-1:-1:-1;;;;;20833:14:0;20735:246;20882:23;20913:19;20924:7;20913:10;:19::i;:::-;-1:-1:-1;20880:52:0;;-1:-1:-1;20947:22:0;;-1:-1:-1;;;;;20947:22:0;35002:90;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;35069:8:::1;:15:::0;35002:90::o;33588:::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;33654:8:::1;:16:::0;33588:90::o;20034:117::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20119:16:0;;;::::1;;::::0;;;:9:::1;:16;::::0;;;;:24;;-1:-1:-1;;20119:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20034:117::o;21257:335::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21342:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21341:21;21333:61;;;::::0;-1:-1:-1;;;21333:61:0;;6022:2:1;21333:61:0::1;::::0;::::1;6004:21:1::0;6061:2;6041:18;;;6034:30;6100:29;6080:18;;;6073:57;6147:18;;21333:61:0::1;5820:351:1::0;21333:61:0::1;-1:-1:-1::0;;;;;21408:16:0;::::1;21427:1;21408:16:::0;;;:7:::1;:16;::::0;;;;;:20;21405:108:::1;;-1:-1:-1::0;;;;;21484:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;21464:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;21445:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;21405:108:::1;-1:-1:-1::0;;;;;21523:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;21523:27:0::1;21546:4;21523:27:::0;;::::1;::::0;;;21561:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;21561:23:0::1;::::0;;::::1;::::0;;21257:335::o;18284:198::-;-1:-1:-1;;;;;18374:20:0;;18350:7;18374:20;;;:11;:20;;;;;;;;18370:49;;;-1:-1:-1;;;;;;18403:16:0;;;;;:7;:16;;;;;;;18284:198::o;18370:49::-;-1:-1:-1;;;;;18457:16:0;;;;;;:7;:16;;;;;;18437:37;;:19;:37::i;6110:148::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;6217:1:::1;6201:6:::0;;6180:40:::1;::::0;-1:-1:-1;;;;;6201:6:0;;::::1;::::0;6180:40:::1;::::0;6217:1;;6180:40:::1;6248:1;6231:19:::0;;-1:-1:-1;;;;;;6231:19:0::1;::::0;;6110:148::o;16681:1049::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;16737:35:::1;16794:42;16737:100;;16882:16;-1:-1:-1::0;;;;;16882:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16864:66:0::1;;16939:4;16946:16;-1:-1:-1::0;;;;;16946:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16864:106;::::0;-1:-1:-1;;;;;;16864:106:0::1;::::0;;;;;;-1:-1:-1;;;;;8638:15:1;;;16864:106:0::1;::::0;::::1;8620:34:1::0;8690:15;;8670:18;;;8663:43;8555:18;;16864:106:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16848:13;:122:::0;;-1:-1:-1;;;;;16848:122:0;;::::1;-1:-1:-1::0;;;;;;16848:122:0;;::::1;;::::0;;16983:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;5950:6:0;;;;17030:27;;:18:::1;:27;::::0;;;;;;;:34;;-1:-1:-1;;17030:34:0;;::::1;-1:-1:-1::0;17030:34:0;;::::1;::::0;;;17102:4:::1;17075:33:::0;;;;;:40;;;::::1;::::0;::::1;::::0;;17153:16:::1;::::0;;;;::::1;17126:44:::0;::::1;::::0;;;::::1;::::0;;269:10;17184:23;;;:9:::1;:23:::0;;;;;:28;;;::::1;::::0;::::1;::::0;;17241:15;;;::::1;17223:35:::0;;;;;:40;;;::::1;::::0;::::1;::::0;;17284:13;;;::::1;17274:24:::0;;;;;:29;;;::::1;::::0;::::1;::::0;;17324:16;;;::::1;17314:27:::0;;;;;:32;;;::::1;::::0;::::1;::::0;;17357:53;:58;;;;::::1;::::0;;::::1;::::0;;17426:27;;:13:::1;:27:::0;;;;;;17454:13:::1;17426:41:::0;;;;17500:15;;;::::1;17478:39:::0;;;;;:53;;;17556:13;;;::::1;17542:28:::0;;;;;:42;;;17609:16;;;;::::1;17595:31:::0;;;;:45;;;17367:42:::1;17651:57:::0;;;:71;16681:1049::o;34079:141::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;34167:16:::1;:45:::0;;-1:-1:-1;;;;;;34167:45:0::1;-1:-1:-1::0;;;;;34167:45:0;;;::::1;::::0;;;::::1;::::0;;34079:141::o;17995:87::-;18034:13;18067:7;18060:14;;;;;:::i;19532:269::-;19625:4;19642:129;269:10;19665:7;19674:96;19713:15;19674:96;;;;;;;;;;;;;;;;;269:10;19674:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19674:34:0;;;;;;;;;;;;:38;:96::i;18490:167::-;18568:4;18585:42;269:10;18609:9;18620:6;18585:9;:42::i;25443:192::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;25496:28:::1;25527:24;25545:4;25527:9;:24::i;:::-;25496:55:::0;-1:-1:-1;25577:4:0::1;25562:30;269:10:::0;25593:12:::1;173:115:::0;25334:90;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;25398:10:::1;:18:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;25398:18:0;;::::1;::::0;;;::::1;::::0;;25334:90::o;33360:110::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33427:27:0::1;33457:5;33427:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;33427:35:0::1;::::0;;33360:110::o;34498:483::-;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34580:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;34572:57;;;::::0;-1:-1:-1;;;34572:57:0;;8919:2:1;34572:57:0::1;::::0;::::1;8901:21:1::0;8958:2;8938:18;;;8931:30;8997:28;8977:18;;;8970:56;9043:18;;34572:57:0::1;8717:350:1::0;34572:57:0::1;34645:9;34640:334;34664:17;:24:::0;34660:28;::::1;34640:334;;;34738:7;-1:-1:-1::0;;;;;34714:31:0::1;:17;34732:1;34714:20;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;34714:20:0::1;:31:::0;34710:253:::1;;34789:17;34807:24:::0;;:28:::1;::::0;34834:1:::1;::::0;34807:28:::1;:::i;:::-;34789:47;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;34766:17:::1;:20:::0;;-1:-1:-1;;;;;34789:47:0;;::::1;::::0;34784:1;;34766:20;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:70:::0;;-1:-1:-1;;;;;;34766:70:0::1;-1:-1:-1::0;;;;;34766:70:0;;::::1;;::::0;;34855:18;;::::1;::::0;;:9:::1;:18:::0;;;;;;:26;;-1:-1:-1;;34855:26:0::1;::::0;;34900:17:::1;:23:::0;;;::::1;;;;:::i;34710:253::-;34690:3:::0;::::1;::::0;::::1;:::i;:::-;;;;34640:334;;6266:244:::0;6019:6;;-1:-1:-1;;;;;6019:6:0;269:10;6019:22;6011:67;;;;-1:-1:-1;;;6011:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6355:22:0;::::1;6347:73;;;::::0;-1:-1:-1;;;6347:73:0;;9274:2:1;6347:73:0::1;::::0;::::1;9256:21:1::0;9313:2;9293:18;;;9286:30;9352:34;9332:18;;;9325:62;-1:-1:-1;;;9403:18:1;;;9396:36;9449:19;;6347:73:0::1;9072:402:1::0;6347:73:0::1;6457:6;::::0;;6436:38:::1;::::0;-1:-1:-1;;;;;6436:38:0;;::::1;::::0;6457:6;::::1;::::0;6436:38:::1;::::0;::::1;6485:6;:17:::0;;-1:-1:-1;;;;;;6485:17:0::1;-1:-1:-1::0;;;;;6485:17:0;;;::::1;::::0;;;::::1;::::0;;6266:244::o;22087:337::-;-1:-1:-1;;;;;22180:19:0;;22172:68;;;;-1:-1:-1;;;22172:68:0;;9681:2:1;22172:68:0;;;9663:21:1;9720:2;9700:18;;;9693:30;9759:34;9739:18;;;9732:62;-1:-1:-1;;;9810:18:1;;;9803:34;9854:19;;22172:68:0;9479:400:1;22172:68:0;-1:-1:-1;;;;;22259:21:0;;22251:68;;;;-1:-1:-1;;;22251:68:0;;10086:2:1;22251:68:0;;;10068:21:1;10125:2;10105:18;;;10098:30;10164:34;10144:18;;;10137:62;-1:-1:-1;;;10215:18:1;;;10208:32;10257:19;;22251:68:0;9884:398:1;22251:68:0;-1:-1:-1;;;;;22332:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22384:32;;1595:25:1;;;22384:32:0;;1568:18:1;22384:32:0;;;;;;;22087:337;;;:::o;22432:2211::-;-1:-1:-1;;;;;22554:18:0;;22546:68;;;;-1:-1:-1;;;22546:68:0;;10489:2:1;22546:68:0;;;10471:21:1;10528:2;10508:18;;;10501:30;10567:34;10547:18;;;10540:62;-1:-1:-1;;;10618:18:1;;;10611:35;10663:19;;22546:68:0;10287:401:1;22546:68:0;-1:-1:-1;;;;;22633:16:0;;22625:64;;;;-1:-1:-1;;;22625:64:0;;10895:2:1;22625:64:0;;;10877:21:1;10934:2;10914:18;;;10907:30;10973:34;10953:18;;;10946:62;-1:-1:-1;;;11024:18:1;;;11017:33;11067:19;;22625:64:0;10693:399:1;22625:64:0;22717:1;22708:6;:10;22700:64;;;;-1:-1:-1;;;22700:64:0;;11299:2:1;22700:64:0;;;11281:21:1;11338:2;11318:18;;;11311:30;11377:34;11357:18;;;11350:62;-1:-1:-1;;;11428:18:1;;;11421:39;11477:19;;22700:64:0;11097:405:1;22700:64:0;-1:-1:-1;;;;;22784:13:0;;;;;;:9;:13;;;;;;;;22783:14;22775:50;;;;-1:-1:-1;;;22775:50:0;;11709:2:1;22775:50:0;;;11691:21:1;11748:2;11728:18;;;11721:30;-1:-1:-1;;;11767:18:1;;;11760:53;11830:18;;22775:50:0;11507:347:1;22775:50:0;22855:10;22845:21;;;;:9;:21;;;;;;;;22844:22;22836:58;;;;-1:-1:-1;;;22836:58:0;;11709:2:1;22836:58:0;;;11691:21:1;11748:2;11728:18;;;11721:30;-1:-1:-1;;;11767:18:1;;;11760:53;11830:18;;22836:58:0;11507:347:1;22836:58:0;22943:13;;-1:-1:-1;;;;;22935:21:0;;;22943:13;;22935:21;:55;;;;-1:-1:-1;22974:15:0;;-1:-1:-1;;;;;22960:30:0;;;22974:15;;22960:30;;22935:55;:82;;;;-1:-1:-1;;;;;;22995:22:0;;;;;;:18;:22;;;;;;;;22994:23;22935:82;22932:436;;;23042:11;;;;;;;23034:48;;;;-1:-1:-1;;;23034:48:0;;12061:2:1;23034:48:0;;;12043:21:1;12100:2;12080:18;;;12073:30;12139:26;12119:18;;;12112:54;12183:18;;23034:48:0;11859:348:1;23034:48:0;23157:10;;23138:15;:29;23134:135;;-1:-1:-1;;;;;23188:13:0;;;;;;:9;:13;;;;;:20;;-1:-1:-1;;23188:20:0;23204:4;23188:20;;;;;;23227:17;:26;;;;;;;;;;;;;;-1:-1:-1;;;;;;23227:26:0;;;;;;23134:135;-1:-1:-1;;;;;23286:17:0;;;;;;:13;:17;;;;;;23304:13;-1:-1:-1;23283:74:0;;;-1:-1:-1;;;;;23321:17:0;;;;;;:13;:17;;;;;23339:15;23321:33;;23283:74;-1:-1:-1;;;;;23405:13:0;;;;;;:9;:13;;;;;;;;23401:100;;23458:11;;23429:25;23447:6;23429:13;23439:2;23429:9;:13::i;:::-;:17;;:25::i;:::-;:40;;23421:67;;;;-1:-1:-1;;;23421:67:0;;12414:2:1;23421:67:0;;;12396:21:1;12453:2;12433:18;;;12426:30;-1:-1:-1;;;12472:18:1;;;12465:45;12527:18;;23421:67:0;12212:339:1;23421:67:0;23515:28;23546:24;23564:4;23546:9;:24::i;:::-;23632:16;;23515:55;;-1:-1:-1;23632:16:0;;23631:17;:32;;;;-1:-1:-1;23652:11:0;;;;;;;23631:32;:55;;;;-1:-1:-1;23673:13:0;;-1:-1:-1;;;;;23667:19:0;;;23673:13;;23667:19;23631:55;23627:707;;;23706:24;;23703:306;;23806:8;;23787:13;;23777:47;;23820:3;;23777:38;;23806:8;23777:24;;-1:-1:-1;;;;;23787:13:0;23777:9;:24::i;:::-;:28;;:38::i;:::-;:42;;:47::i;:::-;23754:20;:70;23751:188;;;23901:8;;23882:13;;23872:47;;23915:3;;23872:38;;23901:8;23872:24;;-1:-1:-1;;;;;23882:13:0;23872:9;:24::i;:47::-;23849:70;;23751:188;23957:32;23968:20;23957:10;:32::i;:::-;24040:10;;;;;;;:17;;24052:5;24040:17;24037:99;;24091:29;;-1:-1:-1;;;24091:29:0;;12758:2:1;24091:29:0;;;12740:21:1;12797:2;12777:18;;;12770:30;-1:-1:-1;;;12816:18:1;;;12809:49;12875:18;;24091:29:0;12556:343:1;24037:99:0;-1:-1:-1;;;;;24153:19:0;;;;;;:13;:19;;;;;;24173:13;-1:-1:-1;24150:161:0;;;24239:8;;-1:-1:-1;;;;;24215:19:0;;;;;;:13;:19;;;;;;24250:15;;24215:33;;:19;:23;:33::i;:::-;:50;;24207:84;;;;-1:-1:-1;;;24207:84:0;;13106:2:1;24207:84:0;;;13088:21:1;13145:2;13125:18;;;13118:30;-1:-1:-1;;;13164:18:1;;;13157:52;13226:18;;24207:84:0;12904:346:1;24207:84:0;24441:13;;24354:12;;-1:-1:-1;;;;;24435:19:0;;;24441:13;;24435:19;;:40;;-1:-1:-1;24462:13:0;;-1:-1:-1;;;;;24458:17:0;;;24462:13;;24458:17;24435:40;24434:99;;;;-1:-1:-1;;;;;;24482:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;24510:22:0;;;;;;:18;:22;;;;;;;;24482:50;24480:53;24434:99;24429:148;;;-1:-1:-1;24561:4:0;24429:148;24597:38;24612:4;24617:2;24620:6;24627:7;24597:14;:38::i;:::-;22535:2108;;22432:2211;;;:::o;1584:192::-;1670:7;1706:12;1698:6;;;;1690:29;;;;-1:-1:-1;;;1690:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1730:9:0;1742:5;1746:1;1742;:5;:::i;:::-;1730:17;1584:192;-1:-1:-1;;;;;1584:192:0:o;31252:163::-;31293:7;31314:15;31331;31350:19;:17;:19::i;:::-;31313:56;;-1:-1:-1;31313:56:0;-1:-1:-1;31387:20:0;31313:56;;31387:11;:20::i;:::-;31380:27;;;;31252:163;:::o;2044:132::-;2102:7;2129:39;2133:1;2136;2129:39;;;;;;;;;;;;;;;;;:3;:39::i;1251:181::-;1309:7;;1341:5;1345:1;1341;:5;:::i;:::-;1329:17;;1370:1;1365;:6;;1357:46;;;;-1:-1:-1;;;1357:46:0;;13590:2:1;1357:46:0;;;13572:21:1;13629:2;13609:18;;;13602:30;13668:29;13648:18;;;13641:57;13715:18;;1357:46:0;13388:351:1;30050:419:0;30109:7;30118;30127;30136;30145;30154;30175:23;30200:12;30214:18;30236:20;30248:7;30236:11;:20::i;:::-;30174:82;;;;;;30268:15;30285:23;30310:12;30326:50;30338:7;30347:4;30353:10;30365;:8;:10::i;:::-;30326:11;:50::i;:::-;30267:109;;;;-1:-1:-1;30267:109:0;;-1:-1:-1;30427:15:0;;-1:-1:-1;30444:4:0;;-1:-1:-1;30450:10:0;;-1:-1:-1;30050:419:0;;-1:-1:-1;;;;;30050:419:0:o;1440:136::-;1498:7;1525:43;1529:1;1532;1525:43;;;;;;;;;;;;;;;;;:3;:43::i;1784:250::-;1842:7;1866:1;1871;1866:6;1862:47;;-1:-1:-1;1896:1:0;1889:8;;1862:47;1921:9;1933:5;1937:1;1933;:5;:::i;:::-;1921:17;-1:-1:-1;1966:1:0;1957:5;1961:1;1921:17;1957:5;:::i;:::-;:10;1949:56;;;;-1:-1:-1;;;1949:56:0;;14341:2:1;1949:56:0;;;14323:21:1;14380:2;14360:18;;;14353:30;14419:34;14399:18;;;14392:62;-1:-1:-1;;;14470:18:1;;;14463:31;14511:19;;1949:56:0;14139:397:1;24651:334:0;16423:16;:23;;-1:-1:-1;;16423:23:0;16442:4;16423:23;;;24732:38:::1;24749:20:::0;24732:16:::1;:38::i;:::-;24857:21;24892:22:::0;;24889:89:::1;;24931:35;24944:21;24931:12;:35::i;:::-;-1:-1:-1::0;;16469:16:0;:24;;-1:-1:-1;;16469:24:0;;;24651:334::o;26855:704::-;26966:7;26962:40;;26988:14;:12;:14::i;:::-;-1:-1:-1;;;;;27027:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;27051:22:0;;;;;;:11;:22;;;;;;;;27050:23;27027:46;27023:467;;;27090:48;27112:6;27120:9;27131:6;27090:21;:48::i;:::-;27023:467;;;-1:-1:-1;;;;;27161:19:0;;;;;;:11;:19;;;;;;;;27160:20;:46;;;;-1:-1:-1;;;;;;27184:22:0;;;;;;:11;:22;;;;;;;;27160:46;27156:334;;;27223:46;27243:6;27251:9;27262:6;27223:19;:46::i;27156:334::-;-1:-1:-1;;;;;27291:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;27314:22:0;;;;;;:11;:22;;;;;;;;27291:45;27287:203;;;27353:48;27375:6;27383:9;27394:6;27353:21;:48::i;27287:203::-;27434:44;27452:6;27460:9;27471:6;27434:17;:44::i;:::-;27514:7;27510:41;;27536:15;33023;;33013:7;:25;33065:21;;33049:13;:37;32969:125;27536:15;26855:704;;;;:::o;31423:561::-;31520:7;;31556;;31473;;;;;31580:289;31604:9;:16;31600:20;;31580:289;;;31670:7;31646;:21;31654:9;31664:1;31654:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;31654:12:0;31646:21;;;;;;;;;;;;;:31;;:66;;;31705:7;31681;:21;31689:9;31699:1;31689:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;31689:12:0;31681:21;;;;;;;;;;;;;:31;31646:66;31642:97;;;31722:7;;31731;;31714:25;;;;;;;31423:561;;:::o;31642:97::-;31764:34;31776:7;:21;31784:9;31794:1;31784:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;31784:12:0;31776:21;;;;;;;;;;;;;31764:7;;:11;:34::i;:::-;31754:44;;31823:34;31835:7;:21;31843:9;31853:1;31843:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;31843:12:0;31835:21;;;;;;;;;;;;;31823:7;;:11;:34::i;:::-;31813:44;-1:-1:-1;31622:3:0;;;;:::i;:::-;;;;31580:289;;;-1:-1:-1;31905:7:0;;31893;;:20;;:11;:20::i;:::-;31883:7;:30;31879:61;;;31923:7;;31932;;31915:25;;;;;;31423:561;;:::o;31879:61::-;31959:7;;31968;;-1:-1:-1;31423:561:0;-1:-1:-1;31423:561:0:o;2184:278::-;2270:7;2305:12;2298:5;2290:28;;;;-1:-1:-1;;;2290:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2329:9:0;2341:5;2345:1;2341;:5;:::i;30477:330::-;30537:7;30546;30555;30575:12;30590:24;30606:7;30590:15;:24::i;:::-;30575:39;;30625:18;30646:30;30668:7;30646:21;:30::i;:::-;30625:51;-1:-1:-1;30687:23:0;30713:33;30625:51;30713:17;:7;30725:4;30713:11;:17::i;:::-;:21;;:33::i;:::-;30687:59;30782:4;;-1:-1:-1;30788:10:0;;-1:-1:-1;30477:330:0;;-1:-1:-1;;;30477:330:0:o;30815:429::-;30930:7;;;;30986:24;:7;30998:11;30986;:24::i;:::-;30968:42;-1:-1:-1;31021:12:0;31036:21;:4;31045:11;31036:8;:21::i;:::-;31021:36;-1:-1:-1;31068:18:0;31089:27;:10;31104:11;31089:14;:27::i;:::-;31068:48;-1:-1:-1;31127:23:0;31153:33;31068:48;31153:17;:7;31165:4;31153:11;:17::i;:33::-;31205:7;;;;-1:-1:-1;31231:4:0;;-1:-1:-1;30815:429:0;;-1:-1:-1;;;;;;;30815:429:0:o;25654:666::-;25804:16;;;25818:1;25804:16;;;;;;;;25780:21;;25804:16;;;;;;;;;;-1:-1:-1;25804:16:0;25780:40;;25849:4;25831;25836:1;25831:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25831:23:0;;;:7;;;;;;;;;;:23;;;;25875:15;;:22;;;-1:-1:-1;;;25875:22:0;;;;:15;;;;;:20;;:22;;;;;25831:7;;25875:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25865:4;25870:1;25865:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25865:32:0;;;:7;;;;;;;;;:32;25942:15;;25910:62;;25927:4;;25942:15;25960:11;25910:8;:62::i;:::-;26011:15;;:240;;-1:-1:-1;;;26011:240:0;;-1:-1:-1;;;;;26011:15:0;;;;:66;;:240;;26092:11;;26011:15;;26162:4;;26189;;26225:15;;26011:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26277:35;26294:11;26307:4;26277:35;;;;;;;:::i;:::-;;;;;;;;25709:611;25654:666;:::o;24997:98::-;25054:16;;:33;;-1:-1:-1;;;;;25054:16:0;;;;:33;;;;;25080:6;;25054:16;:33;:16;:33;25080:6;25054:16;:33;;;;;;;;;;;;;;;;;;;32707:250;32753:7;;:12;:34;;;;-1:-1:-1;32769:13:0;;:18;32753:34;32750:46;;;32707:250::o;32750:46::-;32834:7;;;32816:15;:25;32876:13;;;32852:21;:37;-1:-1:-1;32910:11:0;;;;32932:17;32707:250::o;28671:566::-;28774:15;28791:23;28816:12;28830:23;28855:12;28869:18;28891:19;28902:7;28891:10;:19::i;:::-;-1:-1:-1;;;;;28939:15:0;;;;;;:7;:15;;;;;;28773:137;;-1:-1:-1;28773:137:0;;-1:-1:-1;28773:137:0;;-1:-1:-1;28773:137:0;-1:-1:-1;28773:137:0;-1:-1:-1;28773:137:0;-1:-1:-1;28939:28:0;;28959:7;28939:19;:28::i;:::-;-1:-1:-1;;;;;28921:15:0;;;;;;:7;:15;;;;;;;;:46;;;;28996:7;:15;;;;:28;;29016:7;28996:19;:28::i;:::-;-1:-1:-1;;;;;28978:15:0;;;;;;;:7;:15;;;;;;:46;;;;29056:18;;;;;;;:39;;29079:15;29056:22;:39::i;:::-;-1:-1:-1;;;;;29035:18:0;;;;;;:7;:18;;;;;:60;29109:26;29124:10;29109:14;:26::i;:::-;29146:23;29158:4;29164;29146:11;:23::i;:::-;29202:9;-1:-1:-1;;;;;29185:44:0;29194:6;-1:-1:-1;;;;;29185:44:0;;29213:15;29185:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;29185:44:0;;;;;;;;28762:475;;;;;;28671:566;;;:::o;28077:586::-;28178:15;28195:23;28220:12;28234:23;28259:12;28273:18;28295:19;28306:7;28295:10;:19::i;:::-;-1:-1:-1;;;;;28343:15:0;;;;;;:7;:15;;;;;;28177:137;;-1:-1:-1;28177:137:0;;-1:-1:-1;28177:137:0;;-1:-1:-1;28177:137:0;-1:-1:-1;28177:137:0;-1:-1:-1;28177:137:0;-1:-1:-1;28343:28:0;;28177:137;28343:19;:28::i;:::-;-1:-1:-1;;;;;28325:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;28403:18;;;;;:7;:18;;;;;:39;;28426:15;28403:22;:39::i;:::-;-1:-1:-1;;;;;28382:18:0;;;;;;:7;:18;;;;;;;;:60;;;;28474:7;:18;;;;:39;;28497:15;28474:22;:39::i;29245:642::-;29348:15;29365:23;29390:12;29404:23;29429:12;29443:18;29465:19;29476:7;29465:10;:19::i;:::-;-1:-1:-1;;;;;29513:15:0;;;;;;:7;:15;;;;;;29347:137;;-1:-1:-1;29347:137:0;;-1:-1:-1;29347:137:0;;-1:-1:-1;29347:137:0;-1:-1:-1;29347:137:0;-1:-1:-1;29347:137:0;-1:-1:-1;29513:28:0;;29533:7;29513:19;:28::i;:::-;-1:-1:-1;;;;;29495:15:0;;;;;;:7;:15;;;;;;;;:46;;;;29570:7;:15;;;;:28;;29590:7;29570:19;:28::i;27567:502::-;27666:15;27683:23;27708:12;27722:23;27747:12;27761:18;27783:19;27794:7;27783:10;:19::i;:::-;-1:-1:-1;;;;;27831:15:0;;;;;;:7;:15;;;;;;27665:137;;-1:-1:-1;27665:137:0;;-1:-1:-1;27665:137:0;;-1:-1:-1;27665:137:0;-1:-1:-1;27665:137:0;-1:-1:-1;27665:137:0;-1:-1:-1;27831:28:0;;27665:137;27831:19;:28::i;32363:154::-;32427:7;32454:55;32493:5;32454:20;32466:7;;32454;:11;;:20;;;;:::i;32529:166::-;32599:7;32626:61;32671:5;32626:26;32638:13;;32626:7;:11;;:26;;;;:::i;31996:355::-;32059:19;32082:10;:8;:10::i;:::-;32059:33;-1:-1:-1;32103:18:0;32124:27;:10;32059:33;32124:14;:27::i;:::-;32203:4;32187:22;;;;:7;:22;;;;;;32103:48;;-1:-1:-1;32187:38:0;;32103:48;32187:26;:38::i;:::-;32178:4;32162:22;;;;:7;:22;;;;;;;;:63;;;;32239:11;:26;;;;;;32236:107;;;32321:4;32305:22;;;;:7;:22;;;;;;:38;;32332:10;32305:26;:38::i;:::-;32296:4;32280:22;;;;:7;:22;;;;;:63;32236:107;32048:303;;31996:355;:::o;29895:147::-;29973:7;;:17;;29985:4;29973:11;:17::i;:::-;29963:7;:27;30014:10;;:20;;30029:4;30014:14;:20::i;:::-;30001:10;:33;-1:-1:-1;;29895:147:0:o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:597::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;637:6;634:1;631:13;628:91;;;707:1;702:2;693:6;682:9;678:22;674:31;667:42;628:91;-1:-1:-1;780:2:1;759:15;-1:-1:-1;;755:29:1;740:45;;;;787:2;736:54;;199:597;-1:-1:-1;;;199:597:1:o;801:131::-;-1:-1:-1;;;;;876:31:1;;866:42;;856:70;;922:1;919;912:12;937:315;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;1121:9;1108:23;1140:31;1165:5;1140:31;:::i;:::-;1190:5;1242:2;1227:18;;;;1214:32;;-1:-1:-1;;;937:315:1:o;1866:456::-;1943:6;1951;1959;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2067:9;2054:23;2086:31;2111:5;2086:31;:::i;:::-;2136:5;-1:-1:-1;2193:2:1;2178:18;;2165:32;2206:33;2165:32;2206:33;:::i;:::-;1866:456;;2258:7;;-1:-1:-1;;;2312:2:1;2297:18;;;;2284:32;;1866:456::o;2724:247::-;2783:6;2836:2;2824:9;2815:7;2811:23;2807:32;2804:52;;;2852:1;2849;2842:12;2804:52;2891:9;2878:23;2910:31;2935:5;2910:31;:::i;2976:118::-;3062:5;3055:13;3048:21;3041:5;3038:32;3028:60;;3084:1;3081;3074:12;3099:309;3164:6;3172;3225:2;3213:9;3204:7;3200:23;3196:32;3193:52;;;3241:1;3238;3231:12;3193:52;3277:9;3264:23;3254:33;;3337:2;3326:9;3322:18;3309:32;3350:28;3372:5;3350:28;:::i;:::-;3397:5;3387:15;;;3099:309;;;;;:::o;3413:382::-;3478:6;3486;3539:2;3527:9;3518:7;3514:23;3510:32;3507:52;;;3555:1;3552;3545:12;3507:52;3594:9;3581:23;3613:31;3638:5;3613:31;:::i;:::-;3663:5;-1:-1:-1;3720:2:1;3705:18;;3692:32;3733:30;3692:32;3733:30;:::i;4024:241::-;4080:6;4133:2;4121:9;4112:7;4108:23;4104:32;4101:52;;;4149:1;4146;4139:12;4101:52;4188:9;4175:23;4207:28;4229:5;4207:28;:::i;4270:388::-;4338:6;4346;4399:2;4387:9;4378:7;4374:23;4370:32;4367:52;;;4415:1;4412;4405:12;4367:52;4454:9;4441:23;4473:31;4498:5;4473:31;:::i;:::-;4523:5;-1:-1:-1;4580:2:1;4565:18;;4552:32;4593:33;4552:32;4593:33;:::i;4663:356::-;4865:2;4847:21;;;4884:18;;;4877:30;4943:34;4938:2;4923:18;;4916:62;5010:2;4995:18;;4663:356::o;5024:380::-;5103:1;5099:12;;;;5146;;;5167:61;;5221:4;5213:6;5209:17;5199:27;;5167:61;5274:2;5266:6;5263:14;5243:18;5240:38;5237:161;;5320:10;5315:3;5311:20;5308:1;5301:31;5355:4;5352:1;5345:15;5383:4;5380:1;5373:15;5237:161;;5024:380;;;:::o;6176:127::-;6237:10;6232:3;6228:20;6225:1;6218:31;6268:4;6265:1;6258:15;6292:4;6289:1;6282:15;6308:127;6369:10;6364:3;6360:20;6357:1;6350:31;6400:4;6397:1;6390:15;6424:4;6421:1;6414:15;6440:125;6480:4;6508:1;6505;6502:8;6499:34;;;6513:18;;:::i;:::-;-1:-1:-1;6550:9:1;;6440:125::o;6570:127::-;6631:10;6626:3;6622:20;6619:1;6612:31;6662:4;6659:1;6652:15;6686:4;6683:1;6676:15;6702:135;6741:3;6762:17;;;6759:43;;6782:18;;:::i;:::-;-1:-1:-1;6829:1:1;6818:13;;6702:135::o;7129:245::-;7196:6;7249:2;7237:9;7228:7;7224:23;7220:32;7217:52;;;7265:1;7262;7255:12;7217:52;7297:9;7291:16;7316:28;7338:5;7316:28;:::i;8152:251::-;8222:6;8275:2;8263:9;8254:7;8250:23;8246:32;8243:52;;;8291:1;8288;8281:12;8243:52;8323:9;8317:16;8342:31;8367:5;8342:31;:::i;13255:128::-;13295:3;13326:1;13322:6;13319:1;13316:13;13313:39;;;13332:18;;:::i;:::-;-1:-1:-1;13368:9:1;;13255:128::o;13744:168::-;13784:7;13850:1;13846;13842:6;13838:14;13835:1;13832:21;13827:1;13820:9;13813:17;13809:45;13806:71;;;13857:18;;:::i;:::-;-1:-1:-1;13897:9:1;;13744:168::o;13917:217::-;13957:1;13983;13973:132;;14027:10;14022:3;14018:20;14015:1;14008:31;14062:4;14059:1;14052:15;14090:4;14087:1;14080:15;13973:132;-1:-1:-1;14119:9:1;;13917:217::o;14673:461::-;14726:3;14764:5;14758:12;14791:6;14786:3;14779:19;14817:4;14846:2;14841:3;14837:12;14830:19;;14883:2;14876:5;14872:14;14904:1;14914:195;14928:6;14925:1;14922:13;14914:195;;;14993:13;;-1:-1:-1;;;;;14989:39:1;14977:52;;15049:12;;;;15084:15;;;;15025:1;14943:9;14914:195;;;-1:-1:-1;15125:3:1;;14673:461;-1:-1:-1;;;;;14673:461:1:o;15139:582::-;15438:6;15427:9;15420:25;15481:6;15476:2;15465:9;15461:18;15454:34;15524:3;15519:2;15508:9;15504:18;15497:31;15401:4;15545:57;15597:3;15586:9;15582:19;15574:6;15545:57;:::i;:::-;-1:-1:-1;;;;;15638:32:1;;;;15633:2;15618:18;;15611:60;-1:-1:-1;15702:3:1;15687:19;15680:35;15537:65;15139:582;-1:-1:-1;;;15139:582:1:o;15726:332::-;15933:6;15922:9;15915:25;15976:2;15971;15960:9;15956:18;15949:30;15896:4;15996:56;16048:2;16037:9;16033:18;16025:6;15996:56;:::i;:::-;15988:64;15726:332;-1:-1:-1;;;;15726:332:1:o
Swarm Source
ipfs://13f25c4b7bd92e114307816cb6e5e6854e499f5c976897499bae5413e86f5173
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.