Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 203 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 18910916 | 394 days ago | IN | 0 ETH | 0.00100711 | ||||
Transfer | 18909756 | 394 days ago | IN | 0 ETH | 0.00154063 | ||||
Approve | 18446770 | 459 days ago | IN | 0 ETH | 0.00022865 | ||||
Approve | 18446765 | 459 days ago | IN | 0 ETH | 0.00021092 | ||||
Withdraw Dev ETH | 17020497 | 659 days ago | IN | 0 ETH | 0.00079467 | ||||
Approve | 17020492 | 659 days ago | IN | 0 ETH | 0.00108853 | ||||
Withdraw Dev ETH | 17020490 | 659 days ago | IN | 0 ETH | 0.00084907 | ||||
Approve | 16536483 | 727 days ago | IN | 0 ETH | 0.00257602 | ||||
Approve | 16520529 | 730 days ago | IN | 0 ETH | 0.00093544 | ||||
Withdraw Dev ETH | 15239557 | 914 days ago | IN | 0 ETH | 0.00029748 | ||||
Approve | 15154511 | 928 days ago | IN | 0 ETH | 0.00173701 | ||||
Approve | 14790412 | 988 days ago | IN | 0 ETH | 0.00110462 | ||||
Approve | 14746373 | 995 days ago | IN | 0 ETH | 0.00132143 | ||||
Approve | 14577184 | 1022 days ago | IN | 0 ETH | 0.0019024 | ||||
Approve | 14461267 | 1040 days ago | IN | 0 ETH | 0.00046512 | ||||
Approve | 14413809 | 1047 days ago | IN | 0 ETH | 0.00232626 | ||||
Approve | 14375389 | 1053 days ago | IN | 0 ETH | 0.00122022 | ||||
Approve | 14367934 | 1054 days ago | IN | 0 ETH | 0.00184967 | ||||
Approve | 14363675 | 1055 days ago | IN | 0 ETH | 0.00124216 | ||||
Approve | 14363030 | 1055 days ago | IN | 0 ETH | 0.00110206 | ||||
Approve | 14360610 | 1055 days ago | IN | 0 ETH | 0.00196868 | ||||
Approve | 14360591 | 1055 days ago | IN | 0 ETH | 0.0026664 | ||||
Approve | 14358475 | 1056 days ago | IN | 0 ETH | 0.00104746 | ||||
Approve | 14355901 | 1056 days ago | IN | 0 ETH | 0.00135699 | ||||
Approve | 14355672 | 1056 days ago | IN | 0 ETH | 0.00087483 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
17020490 | 659 days ago | 0.04503639 ETH | ||||
16948848 | 669 days ago | 0.04503639 ETH | ||||
16948848 | 669 days ago | 0.06382339 ETH | ||||
16948848 | 669 days ago | 0.04254892 ETH | ||||
16948848 | 669 days ago | 0.17019571 ETH | ||||
16948848 | 669 days ago | 0.27656804 ETH | ||||
15239557 | 914 days ago | 0.15614614 ETH | ||||
14439530 | 1043 days ago | 0.00034261 ETH | ||||
14439530 | 1043 days ago | 0.00079041 ETH | ||||
14439530 | 1043 days ago | 0.00052694 ETH | ||||
14439530 | 1043 days ago | 0.00210777 ETH | ||||
14439530 | 1043 days ago | 0.00342513 ETH | ||||
14410847 | 1048 days ago | 0.00068517 ETH | ||||
14410847 | 1048 days ago | 0.00157937 ETH | ||||
14410847 | 1048 days ago | 0.00105291 ETH | ||||
14410847 | 1048 days ago | 0.00421165 ETH | ||||
14410847 | 1048 days ago | 0.00684394 ETH | ||||
14403095 | 1049 days ago | 0.00057188 ETH | ||||
14403095 | 1049 days ago | 0.00131863 ETH | ||||
14403095 | 1049 days ago | 0.00087908 ETH | ||||
14403095 | 1049 days ago | 0.00351635 ETH | ||||
14403095 | 1049 days ago | 0.00571407 ETH | ||||
14384443 | 1052 days ago | 0.00066983 ETH | ||||
14384443 | 1052 days ago | 0.00154412 ETH | ||||
14384443 | 1052 days ago | 0.00102941 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Konsato
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-09 */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.7; contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract ERC20Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "ERC20Ownable: 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), "ERC20Ownable: new owner is the zero address"); _owner = newOwner; } } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view 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); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; 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 swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 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 (uint256); function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to); event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } 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 Konsato is Context, ERC20Ownable, IERC20 { using SafeMath for uint256; using Address for address; string private constant _nomenclature = "KONSATO"; string private constant _sym = "KONSATO"; uint8 private constant _deci = 18; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; mapping(address => bool) private _isMaxWalletExclude; mapping (address => bool) private _isExcludedMaxTransactionAmount; mapping(address => bool) private _isExcludeContracts; mapping(address => bool) private _whiteListAddrRewards; mapping (address => bool) public isBot; mapping(address => bool) public isBoughtEarly; address payable private MWaddress; address payable private PWaddress; address payable private BBaddress; address payable private DWaddress; address dead = address(0xdead); IUniswapV2Router02 public uniV2Router; address public uniV2Pair; address public uniV3Router; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1e13 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _maxWallet; uint256 private taxTokensMin; uint256 private LiqTokens; uint256 private MwTokens; uint256 private PbTokens; uint256 public ethForBuyBack; uint256 public totalBurnedTokens; uint256 private constant BUY = 1; uint256 private constant SELL = 2; uint256 private constant TRANSFER = 3; uint256 private buyOrSellSwitch; uint256 private gasPriceLimit = 498 * 1 gwei; uint256 private _marketingTax = 8; uint256 private _previousMarketingTax = _marketingTax; uint256 private _plotTax = 2; uint256 private _previousPlotTax = _plotTax; uint256 private _reflectionsTax = 0; uint256 private _previousReflectionsTax = _reflectionsTax; uint256 private _liquidityTax = 3; uint256 private _previousLiquidityTax = _liquidityTax; uint256 private _liqDiv = _marketingTax + _plotTax + _liquidityTax; uint256 public taxBuyMarketing = 8; uint256 public taxBuyPlot = 2; uint256 public taxBuyReflections = 0; uint256 public taxBuyLiquidity = 3; uint256 public taxSellMarketing = 8; uint256 public taxSellPlot = 2; uint256 public taxSellReflections = 0; uint256 public taxSellLiquidity = 3; uint256 public tradingActiveBlock = 0; uint256 public earlyBuyPenaltyStart; uint256 public earlyBuyPenaltyEnd; uint256 public maxTransactionAmount; uint256 private totalTax = _liqDiv + _reflectionsTax; bool public transferDelayEnabled = false; bool public limitsInEffect = false; bool public gasLimitActive = false; bool public contractBlocker = false; bool private collectBuyBackEth = false; bool private holdToMax = false; bool private _addLiq = true; bool public maxWalletOn = false; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity); event SwapETHForTokens(uint256 amountIn, address[] path); event SwapTokensForETH(uint256 amountIn, address[] path); event ExcludeFromFee(address excludedAddress); event IncludeInFee(address includedAddress); event OwnerForcedSwapBack(uint256 timestamp); event BoughtEarly(address indexed sniper); event RemovedSniper(address indexed notsnipersupposedly); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() payable { _rOwned[_msgSender()] = _rTotal; maxTransactionAmount = _tTotal / 100; _maxWallet = _tTotal * 3 / 100; taxTokensMin = _tTotal * 5 / 10000; MWaddress = payable(0x3d537Fd469B3578354b093988988A01c6E0e2616); PWaddress = payable(0x6AF047Fceb38034e905F3067cdb25f92bD9e63Bb); BBaddress = payable(0x3d537Fd469B3578354b093988988A01c6E0e2616); DWaddress = payable(0x4629D224c10773fAa4EFa96D9302c800C358e0c5); _isExcluded[dead] = true; _isExcludedFromFee[_msgSender()] = true; _isExcludedFromFee[dead] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[MWaddress] = true; _isExcludedFromFee[PWaddress] = true; _isExcludedFromFee[DWaddress] = true; _isExcludeContracts[address(this)] = true; _isMaxWalletExclude[address(this)] = true; _isMaxWalletExclude[_msgSender()] = true; _isMaxWalletExclude[dead] = true; _isMaxWalletExclude[MWaddress] = true; _isMaxWalletExclude[PWaddress] = true; _isMaxWalletExclude[DWaddress] = true; _isExcludedMaxTransactionAmount[_msgSender()] = true; _isExcludedMaxTransactionAmount[address(this)] = true; _isExcludedMaxTransactionAmount[dead] = true; _isExcludedMaxTransactionAmount[MWaddress] = true; _isExcludedMaxTransactionAmount[PWaddress] = true; _isExcludedMaxTransactionAmount[DWaddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } receive() external payable {} function name() public pure override returns (string memory) { return _nomenclature; } function symbol() public pure override returns (string memory) { return _sym; } function decimals() public pure override returns (uint8) { return _deci; } function totalSupply() public pure 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 reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amt 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, "Amt must be less than tot refl"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } 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 { if(buyOrSellSwitch == BUY){ MwTokens += tLiquidity * taxBuyMarketing / _liqDiv; PbTokens += tLiquidity * taxBuyPlot / _liqDiv; LiqTokens += tLiquidity * taxBuyLiquidity / _liqDiv; } else if(buyOrSellSwitch == SELL){ MwTokens += tLiquidity * taxSellMarketing / _liqDiv; PbTokens += tLiquidity * taxSellPlot / _liqDiv; LiqTokens += tLiquidity * taxSellLiquidity / _liqDiv; } 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(_reflectionsTax).div(10**2); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityTax + _marketingTax + _plotTax).div(10**2); } function _approve(address owner,address spender,uint256 amount) private { require(owner != address(0), "ERC20: approve from zero address"); require(spender != address(0), "ERC20: approve to 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(!isBot[from]); if (maxWalletOn == true && ! _isMaxWalletExclude[to]) { require(balanceOf(to) + amount <= _maxWallet, "Max amount of tokens for wallet reached"); } if(_addLiq == true) { IUniswapV2Router02 _uniV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniV3Router = 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45; // only Used to not block router uniV2Router = _uniV2Router; uniV2Pair = IUniswapV2Factory(_uniV2Router.factory()).getPair(address(this), _uniV2Router.WETH()); tradingActiveBlock = block.number; earlyBuyPenaltyStart = block.timestamp; earlyBuyPenaltyEnd = block.timestamp + 96 hours; _isMaxWalletExclude[address(uniV2Pair)] = true; _isMaxWalletExclude[address(uniV2Router)] = true; _isExcludedMaxTransactionAmount[address(uniV2Router)] = true; _isExcludedMaxTransactionAmount[address(uniV2Pair)] = true; _isExcludeContracts[address(uniV2Pair)] = true; _isExcludeContracts[address(uniV2Router)] = true; _isExcludeContracts[address(uniV3Router)] = true; limitsInEffect = true; maxWalletOn = true; swapAndLiquifyEnabled = true; transferDelayEnabled = true; _addLiq = false; } if(limitsInEffect){ if (from != owner() && to != owner() && to != address(0) && to != dead && !inSwapAndLiquify) { if(from != owner() && to != uniV2Pair) { for (uint x = 0; x < 2; x++) { if(block.number == tradingActiveBlock + x) { isBoughtEarly[to] = true; emit BoughtEarly(to); } } } if (gasLimitActive && from == uniV2Pair) { require(tx.gasprice <= gasPriceLimit, "Gas price exceeds limit."); } if (transferDelayEnabled){ if (to != owner() && to != address(uniV2Router) && to != address(uniV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (from == uniV2Pair && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); } } } uint256 totalTokensToSwap = LiqTokens.add(MwTokens).add(PbTokens); uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= taxTokensMin; if (!inSwapAndLiquify && swapAndLiquifyEnabled && balanceOf(uniV2Pair) > 0 && totalTokensToSwap > 0 && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && to == uniV2Pair && overMinimumTokenBalance) { swapTokens(); } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; buyOrSellSwitch = TRANSFER; } else { if (from == uniV2Pair) { if(contractBlocker == true){ require(isContract(to) == false && _isExcludeContracts[from]); } removeAllFee(); _marketingTax = taxBuyMarketing; _plotTax = taxBuyPlot; _reflectionsTax = taxBuyReflections; _liquidityTax = taxBuyLiquidity; buyOrSellSwitch = BUY; } else if (to == uniV2Pair) { if(contractBlocker == true){ require(isContract(from) == false && _isExcludeContracts[to]); } removeAllFee(); _marketingTax = taxSellMarketing; _plotTax = taxSellPlot; _reflectionsTax = taxSellReflections; _liquidityTax = taxSellLiquidity; buyOrSellSwitch = SELL; if(isBoughtEarly[from] && earlyBuyPenaltyEnd >= block.timestamp){ _marketingTax = _marketingTax * 9; _plotTax = _plotTax * 3; _liquidityTax = _liquidityTax * 5; } } else { require(!isBoughtEarly[from], "Snipers can't transfer tokens to sell cheaper. DM a Mod."); if(contractBlocker == true) { require(isContract(to) == false); } removeAllFee(); buyOrSellSwitch = TRANSFER; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokens() private lockTheSwap { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = MwTokens + PbTokens + LiqTokens; uint256 tokensForLiquidity = LiqTokens.div(2); uint256 amountToSwapForETH = contractBalance.sub(tokensForLiquidity); uint256 initialETHBalance = address(this).balance; swapTokensForETH(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(MwTokens).div(totalTokensToSwap); uint256 ethForMetaPlot = ethBalance.mul(PbTokens).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance.sub(ethForMarketing).sub(ethForMetaPlot); MwTokens = 0; PbTokens = 0; LiqTokens = 0; (bool success,) = address(MWaddress).call{value: ethForMarketing}(""); (success,) = address(PWaddress).call{value: ethForMetaPlot}(""); addLiquidity(tokensForLiquidity, ethForLiquidity); if(address(this).balance > 5 * 10**17){ uint256 initalBuyBackEth = ethForBuyBack; uint256 afterEthBalance = address(this).balance.sub(initalBuyBackEth); if(collectBuyBackEth == true){ ethForBuyBack += afterEthBalance * 5 / 10**2; uint256 ethForDevs = afterEthBalance - afterEthBalance * 5 / 10**2; (success,) = address(DWaddress).call{value: ethForDevs}(""); } else { uint256 ethForDevs = afterEthBalance; (success,) = address(DWaddress).call{value: ethForDevs}(""); } } } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniV2Router.WETH(); _approve(address(this), address(uniV2Router), tokenAmount); uniV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniV2Router), tokenAmount); uniV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable dead, block.timestamp ); } function removeAllFee() private { if (_reflectionsTax == 0 && _liquidityTax == 0 && _marketingTax == 0 && _plotTax == 0) return; _previousMarketingTax = _marketingTax; _previousLiquidityTax = _liquidityTax; _previousReflectionsTax = _reflectionsTax; _previousLiquidityTax = _liquidityTax; _marketingTax = 0; _plotTax = 0; _reflectionsTax = 0; _liquidityTax = 0; } function restoreAllFee() private { _marketingTax = _previousMarketingTax; _plotTax = _previousPlotTax; _reflectionsTax = _previousReflectionsTax; _liquidityTax = _previousLiquidityTax; } function buyBackTokens(uint256 amount) public onlyOwner lockTheSwap { require(amount <= ethForBuyBack); swapETHForTokens(amount); ethForBuyBack = ethForBuyBack.sub(amount); } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = uniV2Router.WETH(); path[1] = address(this); // make the swap uniV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, BBaddress, // Burn address block.timestamp.add(300) ); } function excludeContract(address account) external onlyOwner { _isExcludeContracts[account] = true; } function includeContract(address account) external onlyOwner { _isExcludeContracts[account] = false; } function isExcludedContract(address account) public view returns (bool) { return _isExcludeContracts[account]; } function excludeFromFee(address account) external onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) external onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function excludeFromMaxWallet(address account) external onlyOwner { _isMaxWalletExclude[account] = true; } function includeInMaxWallet(address account) external onlyOwner { _isMaxWalletExclude[account] = false; } function isExcludedFromMaxWallet(address account) public view returns (bool) { return _isMaxWalletExclude[account]; } function excludeFromMaxTransaction(address account) external onlyOwner { _isExcludedMaxTransactionAmount[account] = true; } function includeInMaxTransaction(address account) external onlyOwner { _isExcludedMaxTransactionAmount[account] = false; } function isExcludedFromMaxTransaction(address account) public view returns (bool) { return _isExcludedMaxTransactionAmount[account]; } function excludeFromReward(address account) external onlyOwner { _isExcluded[account] = true; } function includeInReward(address account) external onlyOwner { _isExcluded[account] = false; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function addBot(address _user) public onlyOwner { require(!isBot[_user]); isBot[_user] = true; } function removeBot(address _user) public onlyOwner { require(isBot[_user]); isBot[_user] = false; } function removeSniper(address account) external onlyOwner { isBoughtEarly[account] = false; } function setGasPriceLimit(uint256 gas) external onlyOwner { require(gas >= 30); gasPriceLimit = gas * 1 gwei; } function enableLimits() external onlyOwner { limitsInEffect = true; transferDelayEnabled = true; } function disableLimits() external onlyOwner { limitsInEffect = false; transferDelayEnabled = false; } function StartLiqAdd() external onlyOwner { _addLiq = true; } function StopLiqAdd() external onlyOwner { _addLiq = false; } function TaxSwapEnable() external onlyOwner { swapAndLiquifyEnabled = true; } function TaxSwapDisable() external onlyOwner { swapAndLiquifyEnabled = false; } function enableTransferDelay() external onlyOwner { transferDelayEnabled = true; } function disableTransferDelay() external onlyOwner { transferDelayEnabled = false; } function enableGasLimit() external onlyOwner { gasLimitActive = true; } function disableGasLimit() external onlyOwner { gasLimitActive = false; } function enableMaxWallet() external onlyOwner { maxWalletOn = true; } function disableMaxWallet() external onlyOwner { maxWalletOn = false; } function disableContractBlocker() external onlyOwner { contractBlocker = false; } function enableContractBlocker() external onlyOwner { contractBlocker = true; } function enableDevEthHold() external onlyOwner { holdToMax = true; } function disableDevEthHold() external onlyOwner { holdToMax = false; } function enableCollectBuyBack() external onlyOwner { collectBuyBackEth = true; } function disableCollectBuyBack() external onlyOwner { collectBuyBackEth = false; } function setBuyTax(uint256 _buyLiquidityTax, uint256 _buyReflectionsTax, uint256 _buyMarketingTax, uint256 _buyPlotTax) external onlyOwner { taxBuyReflections = _buyReflectionsTax; taxBuyMarketing = _buyMarketingTax; taxBuyPlot = _buyPlotTax; taxBuyLiquidity = _buyLiquidityTax; require(taxBuyLiquidity + taxBuyReflections + taxBuyMarketing + taxBuyPlot <= 20, "Must keep buy taxes below 20%"); } function setSellTax(uint256 _sellLiquidityTax, uint256 _sellReflectionsTax, uint256 _sellMarketingTax, uint256 _sellPlotTax) external onlyOwner { taxSellReflections = _sellReflectionsTax; taxSellMarketing = _sellMarketingTax; taxSellPlot = _sellPlotTax; taxSellLiquidity = _sellLiquidityTax; require(taxSellLiquidity + taxSellReflections + taxSellMarketing + taxSellPlot <= 20, "Must keep sell taxes below 20%"); } function setMarketingAddress(address _marketingAddress) external onlyOwner { require(_marketingAddress != address(0), "address cannot be 0"); _isExcludedFromFee[MWaddress] = false; MWaddress = payable(_marketingAddress); _isExcludedFromFee[MWaddress] = true; } function setMetaPlotAddress(address _metaPlotAddress) public onlyOwner { require(_metaPlotAddress != address(0), "address cannot be 0"); PWaddress = payable(_metaPlotAddress); } function setBuyBackEth(uint256 EthValueInPointOnes) external onlyOwner { uint256 contBal = address(this).balance; ethForBuyBack = EthValueInPointOnes; require(ethForBuyBack <= contBal, "Can not set value for more eth than contract has"); } function forceSwapBack() external onlyOwner { uint256 contractBalance = balanceOf(address(this)); require(contractBalance >= _tTotal * 5 / 10000, "Can only swap back if more than 0.05% of tokens stuck on contract"); swapTokens(); emit OwnerForcedSwapBack(block.timestamp); } function withdrawDevETH(bool takeBuyBackEth) public onlyOwner { if(holdToMax == true) { require(address(this).balance >= 1*10**18); } if(takeBuyBackEth == true) { ethForBuyBack = 0*10**18; } uint256 initalBuyBackEth = ethForBuyBack; uint256 afterEthBalance = address(this).balance.sub(initalBuyBackEth); bool success; if(collectBuyBackEth == true){ ethForBuyBack += afterEthBalance * 5 / 10**2; uint256 ethForDevs = afterEthBalance - afterEthBalance * 5 / 10**2; (success,) = address(DWaddress).call{value: ethForDevs}(""); } else { uint256 ethForDevs = afterEthBalance; (success,) = address(DWaddress).call{value: ethForDevs}(""); } } function manualBurnTokens(uint256 percent) external onlyOwner returns (bool){ require(percent <= 10, "May not nuke more than 10% of tokens in LP"); uint256 liquidityPairBalance = this.balanceOf(uniV2Pair); uint256 amountToBurn = liquidityPairBalance * percent / 10**2; if (amountToBurn > 0){ _transfer(uniV2Pair, dead, amountToBurn); } totalBurnedTokens = balanceOf(dead); require(totalBurnedTokens <= _tTotal * 50 / 10**2, "Can not burn more then 50% of supply"); IUniswapV2Pair pair = IUniswapV2Pair(uniV2Pair); pair.sync(); return true; } function isContract(address account) public view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _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 _tokenTransferNoFee(address sender,address recipient,uint256 amount) private { _rOwned[sender] = _rOwned[sender].sub(amount); _rOwned[recipient] = _rOwned[recipient].add(amount); if (_isExcluded[sender]) { _tOwned[sender] = _tOwned[sender].sub(amount); } if (_isExcluded[recipient]) { _tOwned[recipient] = _tOwned[recipient].add(amount); } emit Transfer(sender, recipient, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","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":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"excludedAddress","type":"address"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"includedAddress","type":"address"}],"name":"IncludeInFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"notsnipersupposedly","type":"address"}],"name":"RemovedSniper","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"StartLiqAdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"StopLiqAdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractBlocker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableCollectBuyBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableContractBlocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableDevEthHold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableGasLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableCollectBuyBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableContractBlocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableDevEthHold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableGasLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethForBuyBack","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeContract","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":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gasLimitActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeContract","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":"includeInMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBoughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedContract","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":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"_user","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"EthValueInPointOnes","type":"uint256"}],"name":"setBuyBackEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"_buyReflectionsTax","type":"uint256"},{"internalType":"uint256","name":"_buyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"_buyPlotTax","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_metaPlotAddress","type":"address"}],"name":"setMetaPlotAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"_sellReflectionsTax","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"_sellPlotTax","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxBuyLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyPlot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellPlot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"totalBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uniV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV3Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"takeBuyBackEth","type":"bool"}],"name":"withdrawDevETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052601180546001600160a01b03191661dead179055620000336c7e37be2022c0914b268000000060001962000528565b62000041906000196200050e565b6016556473f31cf40060205560086021556021546022556002602355602354602455600060255560255460265560036027556027546028556027546023546021546200008e9190620004ba565b6200009a9190620004ba565b6029556008602a556002602b556000602c556003602d556008602e556002602f55600060305560036031556000603255602554602954620000dc9190620004ba565b60365560378054600161ff0160401b03191666010000000000001790556000620001033390565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601654336000908152600160205260409020556200017a60646c7e37be2022c0914b2680000000620004d5565b6035556064620001996c7e37be2022c0914b26800000006003620004ec565b620001a59190620004d5565b601855612710620001c56c7e37be2022c0914b26800000006005620004ec565b620001d19190620004d5565b601955600d80546001600160a01b0319908116733d537fd469b3578354b093988988a01c6e0e2616908117909255600e80548216736af047fceb38034e905f3067cdb25f92bd9e63bb179055600f8054821690921790915560108054909116734629d224c10773faa4efa96d9302c800c358e0c51790556011546001600160a01b03166000908152600660205260408120805460ff19166001908117909155906005906200027c3390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556011548216815260058452828120805486166001908117909155308083528483208054881683179055600d54841683528483208054881683179055600e548416835284832080548816831790556010549093168252838220805487168217905591815260098452828120805486168317905560079384905291822080549094168117909355620003373390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601154821681526007909352818320805485166001908117909155600d54821684528284208054861682179055600e54821684528284208054861682179055601054909116835290822080549093168117909255600890620003c43390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526008909352818320805485166001908117909155601154821684528284208054861682179055600d54821684528284208054861682179055600e54821684528284208054861682179055601054909116835291208054909216179055620004593390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6c7e37be2022c0914b2680000000604051620004ac91815260200190565b60405180910390a36200056b565b60008219821115620004d057620004d06200053f565b500190565b600082620004e757620004e762000555565b500490565b60008160001904831182151516156200050957620005096200053f565b500290565b6000828210156200052357620005236200053f565b500390565b6000826200053a576200053a62000555565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b614657806200057b6000396000f3fe6080604052600436106104cf5760003560e01c8063715018a611610276578063a9059cbb1161014f578063e884f260116100c1578063f2f8ff2a11610085578063f2f8ff2a14610eb3578063f2fde38b14610ec9578063f901796614610ee9578063f928364c14610f09578063fc155d1d14610f1e578063ffecf51614610f3e57600080fd5b8063e884f26014610e3e578063ea2f0b3714610e53578063eb8fa2b014610e73578063ee40166e14610e88578063f22857a814610e9e57600080fd5b8063c8c8ebe411610113578063c8c8ebe414610d82578063cee180e714610d98578063d3f6b79d14610dad578063dd62ed3e14610dc3578063e056364714610e09578063e0a7241014610e1e57600080fd5b8063a9059cbb14610d08578063a94ac71214610d28578063a98a934a14610d3d578063c8144b2214610d52578063c876d0b914610d6857600080fd5b80638ea00c85116101e857806395d89b41116101ac57806395d89b41146104db57806396c9b44214610c59578063a20d961514610c7a578063a27de25014610cb3578063a457c2d714610cc8578063a82cfe8b14610ce857600080fd5b80638ea00c8514610bd8578063906e9dd014610bee578063907c4fd014610c0e57806393165dbb14610c23578063958c2e5214610c3957600080fd5b806384666b081161023a57806384666b0814610b0157806384c865af14610b2157806388f8202014610b415780638a66358414610b7a5780638bcea93914610b9a5780638da5cb5b14610bba57600080fd5b8063715018a614610a76578063745d032f14610a8b5780637460148c14610aac5780637cf1402414610acc5780637f7fe7c214610aec57600080fd5b80634a62bb65116103a85780635fecd9261161031a5780636adf6818116102de5780636adf6818146109a85780636bf9a69d146109c85780636d61ce65146109e85780636dd3d39f14610a085780636e86ea8b14610a4157806370a0823114610a5657600080fd5b80635fecd92614610933578063603dbe061461095357806360a512f114610969578063620b4bfc1461097e5780636902ca611461099357600080fd5b8063555f323a1161036c578063555f323a1461088357806357b7ce5c146108995780635b700d91146108af5780635bec94e4146108cf5780635f12509d146108e55780635fafa589146108fb57600080fd5b80634a62bb65146107d55780634a74bb02146107f457806351f205e41461081557806352390c021461082a5780635342acb41461084a57600080fd5b806323b872dd116104415780633950935111610405578063395093511461070f5780633af50e571461072f5780633bbac579146107455780633f33e90914610775578063437823ec146107955780634549b039146107b557600080fd5b806323b872dd146106735780632d83811914610693578063313ce567146106b357806333251a0b146106cf5780633685d419146106ef57600080fd5b806314d620871161049357806314d62087146105b157806316279055146105c657806318160ddd146105e657806318d9ceae1461060f5780631fc851bd1461064857806322e78b6a1461065e57600080fd5b806306fdde03146104db578063076252e21461051a578063092316021461055a578063095ea7b31461057c57806311f876011461059c57600080fd5b366104d657005b600080fd5b3480156104e757600080fd5b5060408051808201825260078152664b4f4e5341544f60c81b60208201529051610511919061442f565b60405180910390f35b34801561052657600080fd5b5061054a6105353660046141fd565b600c6020526000908152604090205460ff1681565b6040519015158152602001610511565b34801561056657600080fd5b5061057a6105753660046142f8565b610f5e565b005b34801561058857600080fd5b5061054a6105973660046142b1565b610fb3565b3480156105a857600080fd5b5061057a610fca565b3480156105bd57600080fd5b5061057a611007565b3480156105d257600080fd5b5061054a6105e13660046141fd565b61103f565b3480156105f257600080fd5b5068fc6f7c40458122964d601f1b5b604051908152602001610511565b34801561061b57600080fd5b5061054a61062a3660046141fd565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561065457600080fd5b5061060160345481565b34801561066a57600080fd5b5061057a61107b565b34801561067f57600080fd5b5061054a61068e366004614270565b6110b4565b34801561069f57600080fd5b506106016106ae3660046142f8565b61111d565b3480156106bf57600080fd5b5060405160128152602001610511565b3480156106db57600080fd5b5061057a6106ea3660046141fd565b61118e565b3480156106fb57600080fd5b5061057a61070a3660046141fd565b6111d9565b34801561071b57600080fd5b5061054a61072a3660046142b1565b611224565b34801561073b57600080fd5b50610601602e5481565b34801561075157600080fd5b5061054a6107603660046141fd565b600b6020526000908152604090205460ff1681565b34801561078157600080fd5b5061057a6107903660046141fd565b61125a565b3480156107a157600080fd5b5061057a6107b03660046141fd565b6112a5565b3480156107c157600080fd5b506106016107d036600461432a565b6112f3565b3480156107e157600080fd5b5060375461054a90610100900460ff1681565b34801561080057600080fd5b5060375461054a90600160481b900460ff1681565b34801561082157600080fd5b5061057a61138a565b34801561083657600080fd5b5061057a6108453660046141fd565b6114a2565b34801561085657600080fd5b5061054a6108653660046141fd565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561088f57600080fd5b50610601601e5481565b3480156108a557600080fd5b50610601602f5481565b3480156108bb57600080fd5b5061057a6108ca3660046141fd565b6114f0565b3480156108db57600080fd5b5061060160315481565b3480156108f157600080fd5b5061060160305481565b34801561090757600080fd5b5060145461091b906001600160a01b031681565b6040516001600160a01b039091168152602001610511565b34801561093f57600080fd5b5061057a61094e3660046141fd565b61153e565b34801561095f57600080fd5b50610601602d5481565b34801561097557600080fd5b5061057a6115ae565b34801561098a57600080fd5b5061057a6115e8565b34801561099f57600080fd5b5061057a611621565b3480156109b457600080fd5b5061057a6109c33660046141fd565b61165c565b3480156109d457600080fd5b5061057a6109e33660046141fd565b6116a7565b3480156109f457600080fd5b5061054a610a033660046142f8565b6116f2565b348015610a1457600080fd5b5061054a610a233660046141fd565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610a4d57600080fd5b5061057a611945565b348015610a6257600080fd5b50610601610a713660046141fd565b611984565b348015610a8257600080fd5b5061057a6119e3565b348015610a9757600080fd5b5060375461054a90600160381b900460ff1681565b348015610ab857600080fd5b5061057a610ac73660046142f8565b611a57565b348015610ad857600080fd5b5061057a610ae73660046141fd565b611af4565b348015610af857600080fd5b5061057a611b42565b348015610b0d57600080fd5b5061057a610b1c366004614384565b611b81565b348015610b2d57600080fd5b5061057a610b3c3660046141fd565b611c35565b348015610b4d57600080fd5b5061054a610b5c3660046141fd565b6001600160a01b031660009081526006602052604090205460ff1690565b348015610b8657600080fd5b5061057a610b953660046141fd565b611ccd565b348015610ba657600080fd5b5060135461091b906001600160a01b031681565b348015610bc657600080fd5b506000546001600160a01b031661091b565b348015610be457600080fd5b50610601601d5481565b348015610bfa57600080fd5b5061057a610c093660046141fd565b611d1b565b348015610c1a57600080fd5b5061057a611de1565b348015610c2f57600080fd5b50610601602c5481565b348015610c4557600080fd5b5060125461091b906001600160a01b031681565b348015610c6557600080fd5b5060375461054a906301000000900460ff1681565b348015610c8657600080fd5b5061054a610c953660046141fd565b6001600160a01b031660009081526009602052604090205460ff1690565b348015610cbf57600080fd5b5061057a611e24565b348015610cd457600080fd5b5061054a610ce33660046142b1565b611e5f565b348015610cf457600080fd5b5061057a610d03366004614384565b611eae565b348015610d1457600080fd5b5061054a610d233660046142b1565b611f5c565b348015610d3457600080fd5b5061057a611f69565b348015610d4957600080fd5b5061057a611fae565b348015610d5e57600080fd5b50610601602b5481565b348015610d7457600080fd5b5060375461054a9060ff1681565b348015610d8e57600080fd5b5061060160355481565b348015610da457600080fd5b5061057a611fe7565b348015610db957600080fd5b5061060160335481565b348015610dcf57600080fd5b50610601610dde366004614237565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610e1557600080fd5b5061057a612028565b348015610e2a57600080fd5b5061057a610e393660046142dd565b612064565b348015610e4a57600080fd5b5061057a612208565b348015610e5f57600080fd5b5061057a610e6e3660046141fd565b61223e565b348015610e7f57600080fd5b5061057a612289565b348015610e9457600080fd5b5061060160325481565b348015610eaa57600080fd5b5061057a6122c8565b348015610ebf57600080fd5b50610601602a5481565b348015610ed557600080fd5b5061057a610ee43660046141fd565b612301565b348015610ef557600080fd5b5060375461054a9062010000900460ff1681565b348015610f1557600080fd5b5061057a6123b7565b348015610f2a57600080fd5b5061057a610f393660046142f8565b6123ee565b348015610f4a57600080fd5b5061057a610f593660046141fd565b612463565b6000546001600160a01b03163314610f915760405162461bcd60e51b8152600401610f8890614484565b60405180910390fd5b601e811015610f9f57600080fd5b610fad81633b9aca0061453f565b60205550565b6000610fc03384846124d7565b5060015b92915050565b6000546001600160a01b03163314610ff45760405162461bcd60e51b8152600401610f8890614484565b6037805462ff0000191662010000179055565b6000546001600160a01b031633146110315760405162461bcd60e51b8152600401610f8890614484565b6037805462ff000019169055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061107357508115155b949350505050565b6000546001600160a01b031633146110a55760405162461bcd60e51b8152600401610f8890614484565b6037805463ff00000019169055565b60006110c18484846125e4565b611113843361110e856040518060600160405280602881526020016145d5602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906131c1565b6124d7565b5060019392505050565b60006016548211156111715760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c00006044820152606401610f88565b600061117b6131ed565b90506111878382613210565b9392505050565b6000546001600160a01b031633146111b85760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b031633146112035760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600660205260409020805460ff19169055565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610fc091859061110e908661321c565b6000546001600160a01b031633146112845760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146112cf5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b600068fc6f7c40458122964d601f1b8311156113515760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610f88565b8161137057600061136184613228565b50939550610fc4945050505050565b600061137b84613228565b50929550610fc4945050505050565b6000546001600160a01b031633146113b45760405162461bcd60e51b8152600401610f8890614484565b60006113bf30611984565b90506127106113db68fc6f7c40458122964d601f1b600561453f565b6113e5919061451d565b8110156114645760405162461bcd60e51b815260206004820152604160248201527f43616e206f6e6c792073776170206261636b206966206d6f7265207468616e2060448201527f302e303525206f6620746f6b656e7320737475636b206f6e20636f6e747261636064820152601d60fa1b608482015260a401610f88565b61146c613277565b6040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a150565b6000546001600160a01b031633146114cc5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b0316331461151a5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b031633146115685760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b0381166000908152600b602052604090205460ff1661158d57600080fd5b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000546001600160a01b031633146115d85760405162461bcd60e51b8152600401610f8890614484565b6037805464ff0000000019169055565b6000546001600160a01b031633146116125760405162461bcd60e51b8152600401610f8890614484565b6037805460ff60481b19169055565b6000546001600160a01b0316331461164b5760405162461bcd60e51b8152600401610f8890614484565b6037805461ffff1916610101179055565b6000546001600160a01b031633146116865760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146116d15760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600960205260409020805460ff19169055565b600080546001600160a01b0316331461171d5760405162461bcd60e51b8152600401610f8890614484565b600a8211156117815760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610f88565b6013546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b1580156117c757600080fd5b505afa1580156117db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ff9190614311565b90506000606461180f858461453f565b611819919061451d565b9050801561183e5760135460115461183e916001600160a01b039081169116836125e4565b601154611853906001600160a01b0316611984565b601e55606461186f68fc6f7c40458122964d601f1b603261453f565b611879919061451d565b601e5411156118d65760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f74206275726e206d6f7265207468656e20353025206f6620737560448201526370706c7960e01b6064820152608401610f88565b6013546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561192057600080fd5b505af1158015611934573d6000803e3d6000fd5b50505050600193505050505b919050565b6000546001600160a01b0316331461196f5760405162461bcd60e51b8152600401610f8890614484565b6037805460ff60481b1916600160481b179055565b6001600160a01b03811660009081526006602052604081205460ff16156119c157506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610fc49061111d565b6000546001600160a01b03163314611a0d5760405162461bcd60e51b8152600401610f8890614484565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611a815760405162461bcd60e51b8152600401610f8890614484565b601d8190554780821115611af05760405162461bcd60e51b815260206004820152603060248201527f43616e206e6f74207365742076616c756520666f72206d6f726520657468207460448201526f68616e20636f6e74726163742068617360801b6064820152608401610f88565b5050565b6000546001600160a01b03163314611b1e5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b03163314611b6c5760405162461bcd60e51b8152600401610f8890614484565b6037805460ff60381b1916600160381b179055565b6000546001600160a01b03163314611bab5760405162461bcd60e51b8152600401610f8890614484565b6030839055602e829055602f819055603184905560148183611bcd8688614505565b611bd79190614505565b611be19190614505565b1115611c2f5760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772032302500006044820152606401610f88565b50505050565b6000546001600160a01b03163314611c5f5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b038116611cab5760405162461bcd60e51b81526020600482015260136024820152720616464726573732063616e6e6f74206265203606c1b6044820152606401610f88565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611cf75760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000546001600160a01b03163314611d455760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b038116611d915760405162461bcd60e51b81526020600482015260136024820152720616464726573732063616e6e6f74206265203606c1b6044820152606401610f88565b600d80546001600160a01b03908116600090815260056020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b03163314611e0b5760405162461bcd60e51b8152600401610f8890614484565b6037805465ff0000000000191665010000000000179055565b6000546001600160a01b03163314611e4e5760405162461bcd60e51b8152600401610f8890614484565b6037805465ff000000000019169055565b6000610fc0338461110e856040518060600160405280602581526020016145fd602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906131c1565b6000546001600160a01b03163314611ed85760405162461bcd60e51b8152600401610f8890614484565b602c839055602a829055602b819055602d84905560148183611efa8688614505565b611f049190614505565b611f0e9190614505565b1115611c2f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203230250000006044820152606401610f88565b6000610fc03384846125e4565b6000546001600160a01b03163314611f935760405162461bcd60e51b8152600401610f8890614484565b6037805466ff00000000000019166601000000000000179055565b6000546001600160a01b03163314611fd85760405162461bcd60e51b8152600401610f8890614484565b6037805460ff60381b19169055565b6000546001600160a01b031633146120115760405162461bcd60e51b8152600401610f8890614484565b6037805464ff000000001916640100000000179055565b6000546001600160a01b031633146120525760405162461bcd60e51b8152600401610f8890614484565b6037805466ff00000000000019169055565b6000546001600160a01b0316331461208e5760405162461bcd60e51b8152600401610f8890614484565b60375465010000000000900460ff161515600114156120bc57670de0b6b3a76400004710156120bc57600080fd5b600181151514156120cd576000601d555b601d5460006120dc4783613579565b90506000603760049054906101000a900460ff1615156001151514156121ac57606461210983600561453f565b612113919061451d565b601d60008282546121249190614505565b9091555060009050606461213984600561453f565b612143919061451d565b61214d908461455e565b6010546040519192506001600160a01b0316908290600081818185875af1925050503d806000811461219b576040519150601f19603f3d011682016040523d82523d6000602084013e6121a0565b606091505b50508092505050611c2f565b60105460405183916001600160a01b0316908290600081818185875af1925050503d80600081146121f9576040519150601f19603f3d011682016040523d82523d6000602084013e6121fe565b606091505b5050505050505050565b6000546001600160a01b031633146122325760405162461bcd60e51b8152600401610f8890614484565b6037805460ff19169055565b6000546001600160a01b031633146122685760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146122b35760405162461bcd60e51b8152600401610f8890614484565b6037805463ff00000019166301000000179055565b6000546001600160a01b031633146122f25760405162461bcd60e51b8152600401610f8890614484565b6037805460ff19166001179055565b6000546001600160a01b0316331461232b5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b0381166123955760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610f88565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146123e15760405162461bcd60e51b8152600401610f8890614484565b6037805461ffff19169055565b6000546001600160a01b031633146124185760405162461bcd60e51b8152600401610f8890614484565b6037805460ff60401b1916600160401b179055601d5481111561243a57600080fd5b61244381613585565b601d546124509082613579565b601d55506037805460ff60401b19169055565b6000546001600160a01b0316331461248d5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b0381166000908152600b602052604090205460ff16156124b357600080fd5b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6001600160a01b03831661252d5760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610f88565b6001600160a01b0382166125835760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610f88565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166126485760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610f88565b6001600160a01b0382166126aa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610f88565b6000811161270c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610f88565b6001600160a01b0383166000908152600b602052604090205460ff161561273257600080fd5b603754600160381b900460ff161515600114801561276957506001600160a01b03821660009081526007602052604090205460ff16155b156127e3576018548161277b84611984565b6127859190614505565b11156127e35760405162461bcd60e51b815260206004820152602760248201527f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c6574206044820152661c995858da195960ca1b6064820152608401610f88565b6037546601000000000000900460ff16151560011415612ab257601480547368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b03199182161790915560128054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b15801561287c57600080fd5b505afa158015612890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b4919061421a565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128fc57600080fd5b505afa158015612910573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612934919061421a565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561297a57600080fd5b505afa15801561298e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b2919061421a565b601380546001600160a01b0319166001600160a01b0392909216919091179055436032554260338190556129e99062054600614505565b60345550601380546001600160a01b039081166000908152600760209081526040808320805460ff1990811660019081179092556012805487168652838620805483168417905580548716865260088552838620805483168417905587548716865283862080548316841790559654861685526009909352818420805484168217905594548416835280832080548316861790556014549093168252919020805490911690911790556037805469ff00ffff00000000ffff191669010001000000000001011790555b603754610100900460ff1615612e0d576000546001600160a01b03848116911614801590612aee57506000546001600160a01b03838116911614155b8015612b0257506001600160a01b03821615155b8015612b1c57506011546001600160a01b03838116911614155b8015612b325750603754600160401b900460ff16155b15612e0d576000546001600160a01b03848116911614801590612b6357506013546001600160a01b03838116911614155b15612be75760005b6002811015612be55780603254612b829190614505565b431415612bd3576001600160a01b0383166000818152600c6020526040808220805460ff19166001179055517fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e29190a25b80612bdd81614575565b915050612b6b565b505b60375462010000900460ff168015612c0c57506013546001600160a01b038481169116145b15612c63576020543a1115612c635760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610f88565b60375460ff1615612d62576000546001600160a01b03838116911614801590612c9a57506012546001600160a01b03838116911614155b8015612cb457506013546001600160a01b03838116911614155b15612d6257326000908152600460205260409020544311612d4f5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610f88565b3260009081526004602052604090204390555b6013546001600160a01b038481169116148015612d9857506001600160a01b03821660009081526008602052604090205460ff16155b15612e0d57603554811115612e0d5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610f88565b6000612e32601c54612e2c601b54601a5461321c90919063ffffffff16565b9061321c565b90506000612e3f30611984565b60195460375491925082101590600160401b900460ff16158015612e6c5750603754600160481b900460ff165b8015612e8d5750601354600090612e8b906001600160a01b0316611984565b115b8015612e995750600083115b8015612ebe57506001600160a01b03851660009081526005602052604090205460ff16155b8015612ee357506001600160a01b03861660009081526005602052604090205460ff16155b8015612efc57506013546001600160a01b038681169116145b8015612f055750805b15612f1257612f12613277565b6001600160a01b03861660009081526005602052604090205460019060ff1680612f5457506001600160a01b03861660009081526005602052604090205460ff165b15612f6657506003601f5560006131ac565b6013546001600160a01b0388811691161415612ff4576037546301000000900460ff16151560011415612fca57612f9c8661103f565b158015612fc157506001600160a01b03871660009081526009602052604090205460ff165b612fca57600080fd5b612fd26136ef565b602a54602155602b54602355602c54602555602d546027556001601f556131ac565b6013546001600160a01b03878116911614156130e5576037546301000000900460ff161515600114156130585761302a8761103f565b15801561304f57506001600160a01b03861660009081526009602052604090205460ff165b61305857600080fd5b6130606136ef565b602e54602155602f546023556030546025556031546027556002601f556001600160a01b0387166000908152600c602052604090205460ff1680156130a757504260345410155b156130e0576021546130ba90600961453f565b6021556023546130cb90600361453f565b6023556027546130dc90600561453f565b6027555b6131ac565b6001600160a01b0387166000908152600c602052604090205460ff16156131745760405162461bcd60e51b815260206004820152603960248201527f536e69706572732063616e2774207472616e7366657220746f6b656e7320746f60448201527f2073656c6c20636865617065722e2020444d2061204d6f642e000000000000006064820152608401610f88565b6037546301000000900460ff1615156001141561319e576131948661103f565b1561319e57600080fd5b6131a66136ef565b6003601f555b6131b887878784613744565b50505050505050565b600081848411156131e55760405162461bcd60e51b8152600401610f88919061442f565b505050900390565b60008060006131fa6138c7565b90925090506132098282613210565b9250505090565b6000611187828461451d565b60006111878284614505565b600080600080600080600080600061323f8a613a6f565b925092509250600080600061325d8d86866132586131ed565b613aab565b919f909e50909c50959a5093985091965092945050505050565b6037805460ff60401b1916600160401b179055600061329530611984565b90506000601a54601c54601b546132ac9190614505565b6132b69190614505565b905060006132d06002601a5461321090919063ffffffff16565b905060006132de8483613579565b9050476132ea82613afb565b60006132f64783613579565b9050600061331986613313601b5485613c6490919063ffffffff16565b90613210565b9050600061333687613313601c5486613c6490919063ffffffff16565b9050600061334e826133488686613579565b90613579565b6000601b819055601c819055601a819055600d5460405192935090916001600160a01b039091169085908381818185875af1925050503d80600081146133b0576040519150601f19603f3d011682016040523d82523d6000602084013e6133b5565b606091505b5050600e546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114613405576040519150601f19603f3d011682016040523d82523d6000602084013e61340a565b606091505b50508091505061341a8883613c70565b6706f05b59d3b2000047111561356057601d5460006134394783613579565b603754909150640100000000900460ff1615156001141561350457606461346182600561453f565b61346b919061451d565b601d600082825461347c9190614505565b9091555060009050606461349183600561453f565b61349b919061451d565b6134a5908361455e565b6010546040519192506001600160a01b0316908290600081818185875af1925050503d80600081146134f3576040519150601f19603f3d011682016040523d82523d6000602084013e6134f8565b606091505b5050809450505061355d565b60105460405182916001600160a01b0316908290600081818185875af1925050503d8060008114613551576040519150601f19603f3d011682016040523d82523d6000602084013e613556565b606091505b5090945050505b50505b50506037805460ff60401b191690555050505050505050565b6000611187828461455e565b6040805160028082526060820183526000926020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156135ea57600080fd5b505afa1580156135fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613622919061421a565b81600081518110613635576136356145a6565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110613669576136696145a6565b6001600160a01b039283166020918202929092010152601254600f549082169163b6f9de959185916000918691166136a34261012c61321c565b6040518663ffffffff1660e01b81526004016136c294939291906143fa565b6000604051808303818588803b1580156136db57600080fd5b505af11580156131b8573d6000803e3d6000fd5b6025541580156136ff5750602754155b801561370b5750602154155b80156137175750602354155b1561371e57565b602180546022556027805460285560258054602655600092839055602383905582905555565b80613751576137516136ef565b6001600160a01b03841660009081526006602052604090205460ff16801561379257506001600160a01b03831660009081526006602052604090205460ff16155b156137a7576137a2848484613d33565b6138a5565b6001600160a01b03841660009081526006602052604090205460ff161580156137e857506001600160a01b03831660009081526006602052604090205460ff165b156137f8576137a2848484613e59565b6001600160a01b03841660009081526006602052604090205460ff1615801561383a57506001600160a01b03831660009081526006602052604090205460ff16155b1561384a576137a2848484613f02565b6001600160a01b03841660009081526006602052604090205460ff16801561388a57506001600160a01b03831660009081526006602052604090205460ff165b1561389a576137a2848484613f46565b6138a5848484613f02565b80611c2f57611c2f602254602155602454602355602654602555602854602755565b601654600090819068fc6f7c40458122964d601f1b825b601554811015613a2c57826001600060158481548110613900576139006145a6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061396b5750816002600060158481548110613944576139446145a6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561398a5750506016549368fc6f7c40458122964d601f1b9350915050565b6139d060016000601584815481106139a4576139a46145a6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490613579565b9250613a1860026000601584815481106139ec576139ec6145a6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390613579565b915080613a2481614575565b9150506138de565b50601654613a469068fc6f7c40458122964d601f1b613210565b821015613a665750506016549268fc6f7c40458122964d601f1b92509050565b90939092509050565b600080600080613a7e85613fb9565b90506000613a8b86613fd5565b90506000613a9d826133488986613579565b979296509094509092505050565b6000808080613aba8886613c64565b90506000613ac88887613c64565b90506000613ad68888613c64565b90506000613ae8826133488686613579565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613b3057613b306145a6565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613b8457600080fd5b505afa158015613b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bbc919061421a565b81600181518110613bcf57613bcf6145a6565b6001600160a01b039283166020918202929092010152601254613bf591309116846124d7565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790613c2e9085906000908690309042906004016144c9565b600060405180830381600087803b158015613c4857600080fd5b505af1158015613c5c573d6000803e3d6000fd5b505050505050565b6000611187828461453f565b601254613c889030906001600160a01b0316846124d7565b60125460115460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015613cf357600080fd5b505af1158015613d07573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d2c9190614356565b5050505050565b600080600080600080613d4587613228565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150613d779088613579565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054613da69087613579565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054613dd5908661321c565b6001600160a01b038916600090815260016020526040902055613df781614003565b613e0184836141c9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613e4691815260200190565b60405180910390a3505050505050505050565b600080600080600080613e6b87613228565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150613e9d9087613579565b6001600160a01b03808b16600090815260016020908152604080832094909455918b16815260029091522054613ed3908461321c565b6001600160a01b038916600090815260026020908152604080832093909355600190522054613dd5908661321c565b600080600080600080613f1487613228565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150613da69087613579565b600080600080600080613f5887613228565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150613f8a9088613579565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054613e9d9087613579565b6000610fc4606461331360255485613c6490919063ffffffff16565b6000610fc46064613313602354602154602754613ff29190614505565b613ffc9190614505565b8590613c64565b6001601f5414156140a457602954602a5461401e908361453f565b614028919061451d565b601b60008282546140399190614505565b9091555050602954602b5461404e908361453f565b614058919061451d565b601c60008282546140699190614505565b9091555050602954602d5461407e908361453f565b614088919061451d565b601a60008282546140999190614505565b909155506141409050565b6002601f54141561414057602954602e546140bf908361453f565b6140c9919061451d565b601b60008282546140da9190614505565b9091555050602954602f546140ef908361453f565b6140f9919061451d565b601c600082825461410a9190614505565b909155505060295460315461411f908361453f565b614129919061451d565b601a600082825461413a9190614505565b90915550505b600061414a6131ed565b905060006141588383613c64565b30600090815260016020526040902054909150614175908261321c565b3060009081526001602090815260408083209390935560069052205460ff16156141c457306000908152600260205260409020546141b3908461321c565b306000908152600260205260409020555b505050565b6016546141d69083613579565b6016556017546141e6908261321c565b6017555050565b8035801515811461194057600080fd5b60006020828403121561420f57600080fd5b8135611187816145bc565b60006020828403121561422c57600080fd5b8151611187816145bc565b6000806040838503121561424a57600080fd5b8235614255816145bc565b91506020830135614265816145bc565b809150509250929050565b60008060006060848603121561428557600080fd5b8335614290816145bc565b925060208401356142a0816145bc565b929592945050506040919091013590565b600080604083850312156142c457600080fd5b82356142cf816145bc565b946020939093013593505050565b6000602082840312156142ef57600080fd5b611187826141ed565b60006020828403121561430a57600080fd5b5035919050565b60006020828403121561432357600080fd5b5051919050565b6000806040838503121561433d57600080fd5b8235915061434d602084016141ed565b90509250929050565b60008060006060848603121561436b57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561439a57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156143ef5781516001600160a01b0316875295820195908201906001016143ca565b509495945050505050565b84815260806020820152600061441360808301866143b6565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b8181101561445c57858101830151858201604001528201614440565b8181111561446e576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b85815284602082015260a0604082015260006144e860a08301866143b6565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561451857614518614590565b500190565b60008261453a57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561455957614559614590565b500290565b60008282101561457057614570614590565b500390565b600060001982141561458957614589614590565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146145d157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f4382909135980c2dc131d1601b948eedc8a90f1f1f75f269096325ff29731ea64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106104cf5760003560e01c8063715018a611610276578063a9059cbb1161014f578063e884f260116100c1578063f2f8ff2a11610085578063f2f8ff2a14610eb3578063f2fde38b14610ec9578063f901796614610ee9578063f928364c14610f09578063fc155d1d14610f1e578063ffecf51614610f3e57600080fd5b8063e884f26014610e3e578063ea2f0b3714610e53578063eb8fa2b014610e73578063ee40166e14610e88578063f22857a814610e9e57600080fd5b8063c8c8ebe411610113578063c8c8ebe414610d82578063cee180e714610d98578063d3f6b79d14610dad578063dd62ed3e14610dc3578063e056364714610e09578063e0a7241014610e1e57600080fd5b8063a9059cbb14610d08578063a94ac71214610d28578063a98a934a14610d3d578063c8144b2214610d52578063c876d0b914610d6857600080fd5b80638ea00c85116101e857806395d89b41116101ac57806395d89b41146104db57806396c9b44214610c59578063a20d961514610c7a578063a27de25014610cb3578063a457c2d714610cc8578063a82cfe8b14610ce857600080fd5b80638ea00c8514610bd8578063906e9dd014610bee578063907c4fd014610c0e57806393165dbb14610c23578063958c2e5214610c3957600080fd5b806384666b081161023a57806384666b0814610b0157806384c865af14610b2157806388f8202014610b415780638a66358414610b7a5780638bcea93914610b9a5780638da5cb5b14610bba57600080fd5b8063715018a614610a76578063745d032f14610a8b5780637460148c14610aac5780637cf1402414610acc5780637f7fe7c214610aec57600080fd5b80634a62bb65116103a85780635fecd9261161031a5780636adf6818116102de5780636adf6818146109a85780636bf9a69d146109c85780636d61ce65146109e85780636dd3d39f14610a085780636e86ea8b14610a4157806370a0823114610a5657600080fd5b80635fecd92614610933578063603dbe061461095357806360a512f114610969578063620b4bfc1461097e5780636902ca611461099357600080fd5b8063555f323a1161036c578063555f323a1461088357806357b7ce5c146108995780635b700d91146108af5780635bec94e4146108cf5780635f12509d146108e55780635fafa589146108fb57600080fd5b80634a62bb65146107d55780634a74bb02146107f457806351f205e41461081557806352390c021461082a5780635342acb41461084a57600080fd5b806323b872dd116104415780633950935111610405578063395093511461070f5780633af50e571461072f5780633bbac579146107455780633f33e90914610775578063437823ec146107955780634549b039146107b557600080fd5b806323b872dd146106735780632d83811914610693578063313ce567146106b357806333251a0b146106cf5780633685d419146106ef57600080fd5b806314d620871161049357806314d62087146105b157806316279055146105c657806318160ddd146105e657806318d9ceae1461060f5780631fc851bd1461064857806322e78b6a1461065e57600080fd5b806306fdde03146104db578063076252e21461051a578063092316021461055a578063095ea7b31461057c57806311f876011461059c57600080fd5b366104d657005b600080fd5b3480156104e757600080fd5b5060408051808201825260078152664b4f4e5341544f60c81b60208201529051610511919061442f565b60405180910390f35b34801561052657600080fd5b5061054a6105353660046141fd565b600c6020526000908152604090205460ff1681565b6040519015158152602001610511565b34801561056657600080fd5b5061057a6105753660046142f8565b610f5e565b005b34801561058857600080fd5b5061054a6105973660046142b1565b610fb3565b3480156105a857600080fd5b5061057a610fca565b3480156105bd57600080fd5b5061057a611007565b3480156105d257600080fd5b5061054a6105e13660046141fd565b61103f565b3480156105f257600080fd5b5068fc6f7c40458122964d601f1b5b604051908152602001610511565b34801561061b57600080fd5b5061054a61062a3660046141fd565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561065457600080fd5b5061060160345481565b34801561066a57600080fd5b5061057a61107b565b34801561067f57600080fd5b5061054a61068e366004614270565b6110b4565b34801561069f57600080fd5b506106016106ae3660046142f8565b61111d565b3480156106bf57600080fd5b5060405160128152602001610511565b3480156106db57600080fd5b5061057a6106ea3660046141fd565b61118e565b3480156106fb57600080fd5b5061057a61070a3660046141fd565b6111d9565b34801561071b57600080fd5b5061054a61072a3660046142b1565b611224565b34801561073b57600080fd5b50610601602e5481565b34801561075157600080fd5b5061054a6107603660046141fd565b600b6020526000908152604090205460ff1681565b34801561078157600080fd5b5061057a6107903660046141fd565b61125a565b3480156107a157600080fd5b5061057a6107b03660046141fd565b6112a5565b3480156107c157600080fd5b506106016107d036600461432a565b6112f3565b3480156107e157600080fd5b5060375461054a90610100900460ff1681565b34801561080057600080fd5b5060375461054a90600160481b900460ff1681565b34801561082157600080fd5b5061057a61138a565b34801561083657600080fd5b5061057a6108453660046141fd565b6114a2565b34801561085657600080fd5b5061054a6108653660046141fd565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561088f57600080fd5b50610601601e5481565b3480156108a557600080fd5b50610601602f5481565b3480156108bb57600080fd5b5061057a6108ca3660046141fd565b6114f0565b3480156108db57600080fd5b5061060160315481565b3480156108f157600080fd5b5061060160305481565b34801561090757600080fd5b5060145461091b906001600160a01b031681565b6040516001600160a01b039091168152602001610511565b34801561093f57600080fd5b5061057a61094e3660046141fd565b61153e565b34801561095f57600080fd5b50610601602d5481565b34801561097557600080fd5b5061057a6115ae565b34801561098a57600080fd5b5061057a6115e8565b34801561099f57600080fd5b5061057a611621565b3480156109b457600080fd5b5061057a6109c33660046141fd565b61165c565b3480156109d457600080fd5b5061057a6109e33660046141fd565b6116a7565b3480156109f457600080fd5b5061054a610a033660046142f8565b6116f2565b348015610a1457600080fd5b5061054a610a233660046141fd565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610a4d57600080fd5b5061057a611945565b348015610a6257600080fd5b50610601610a713660046141fd565b611984565b348015610a8257600080fd5b5061057a6119e3565b348015610a9757600080fd5b5060375461054a90600160381b900460ff1681565b348015610ab857600080fd5b5061057a610ac73660046142f8565b611a57565b348015610ad857600080fd5b5061057a610ae73660046141fd565b611af4565b348015610af857600080fd5b5061057a611b42565b348015610b0d57600080fd5b5061057a610b1c366004614384565b611b81565b348015610b2d57600080fd5b5061057a610b3c3660046141fd565b611c35565b348015610b4d57600080fd5b5061054a610b5c3660046141fd565b6001600160a01b031660009081526006602052604090205460ff1690565b348015610b8657600080fd5b5061057a610b953660046141fd565b611ccd565b348015610ba657600080fd5b5060135461091b906001600160a01b031681565b348015610bc657600080fd5b506000546001600160a01b031661091b565b348015610be457600080fd5b50610601601d5481565b348015610bfa57600080fd5b5061057a610c093660046141fd565b611d1b565b348015610c1a57600080fd5b5061057a611de1565b348015610c2f57600080fd5b50610601602c5481565b348015610c4557600080fd5b5060125461091b906001600160a01b031681565b348015610c6557600080fd5b5060375461054a906301000000900460ff1681565b348015610c8657600080fd5b5061054a610c953660046141fd565b6001600160a01b031660009081526009602052604090205460ff1690565b348015610cbf57600080fd5b5061057a611e24565b348015610cd457600080fd5b5061054a610ce33660046142b1565b611e5f565b348015610cf457600080fd5b5061057a610d03366004614384565b611eae565b348015610d1457600080fd5b5061054a610d233660046142b1565b611f5c565b348015610d3457600080fd5b5061057a611f69565b348015610d4957600080fd5b5061057a611fae565b348015610d5e57600080fd5b50610601602b5481565b348015610d7457600080fd5b5060375461054a9060ff1681565b348015610d8e57600080fd5b5061060160355481565b348015610da457600080fd5b5061057a611fe7565b348015610db957600080fd5b5061060160335481565b348015610dcf57600080fd5b50610601610dde366004614237565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610e1557600080fd5b5061057a612028565b348015610e2a57600080fd5b5061057a610e393660046142dd565b612064565b348015610e4a57600080fd5b5061057a612208565b348015610e5f57600080fd5b5061057a610e6e3660046141fd565b61223e565b348015610e7f57600080fd5b5061057a612289565b348015610e9457600080fd5b5061060160325481565b348015610eaa57600080fd5b5061057a6122c8565b348015610ebf57600080fd5b50610601602a5481565b348015610ed557600080fd5b5061057a610ee43660046141fd565b612301565b348015610ef557600080fd5b5060375461054a9062010000900460ff1681565b348015610f1557600080fd5b5061057a6123b7565b348015610f2a57600080fd5b5061057a610f393660046142f8565b6123ee565b348015610f4a57600080fd5b5061057a610f593660046141fd565b612463565b6000546001600160a01b03163314610f915760405162461bcd60e51b8152600401610f8890614484565b60405180910390fd5b601e811015610f9f57600080fd5b610fad81633b9aca0061453f565b60205550565b6000610fc03384846124d7565b5060015b92915050565b6000546001600160a01b03163314610ff45760405162461bcd60e51b8152600401610f8890614484565b6037805462ff0000191662010000179055565b6000546001600160a01b031633146110315760405162461bcd60e51b8152600401610f8890614484565b6037805462ff000019169055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061107357508115155b949350505050565b6000546001600160a01b031633146110a55760405162461bcd60e51b8152600401610f8890614484565b6037805463ff00000019169055565b60006110c18484846125e4565b611113843361110e856040518060600160405280602881526020016145d5602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906131c1565b6124d7565b5060019392505050565b60006016548211156111715760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c00006044820152606401610f88565b600061117b6131ed565b90506111878382613210565b9392505050565b6000546001600160a01b031633146111b85760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b031633146112035760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600660205260409020805460ff19169055565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610fc091859061110e908661321c565b6000546001600160a01b031633146112845760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146112cf5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b600068fc6f7c40458122964d601f1b8311156113515760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610f88565b8161137057600061136184613228565b50939550610fc4945050505050565b600061137b84613228565b50929550610fc4945050505050565b6000546001600160a01b031633146113b45760405162461bcd60e51b8152600401610f8890614484565b60006113bf30611984565b90506127106113db68fc6f7c40458122964d601f1b600561453f565b6113e5919061451d565b8110156114645760405162461bcd60e51b815260206004820152604160248201527f43616e206f6e6c792073776170206261636b206966206d6f7265207468616e2060448201527f302e303525206f6620746f6b656e7320737475636b206f6e20636f6e747261636064820152601d60fa1b608482015260a401610f88565b61146c613277565b6040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a150565b6000546001600160a01b031633146114cc5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b0316331461151a5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b031633146115685760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b0381166000908152600b602052604090205460ff1661158d57600080fd5b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000546001600160a01b031633146115d85760405162461bcd60e51b8152600401610f8890614484565b6037805464ff0000000019169055565b6000546001600160a01b031633146116125760405162461bcd60e51b8152600401610f8890614484565b6037805460ff60481b19169055565b6000546001600160a01b0316331461164b5760405162461bcd60e51b8152600401610f8890614484565b6037805461ffff1916610101179055565b6000546001600160a01b031633146116865760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146116d15760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600960205260409020805460ff19169055565b600080546001600160a01b0316331461171d5760405162461bcd60e51b8152600401610f8890614484565b600a8211156117815760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610f88565b6013546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b1580156117c757600080fd5b505afa1580156117db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ff9190614311565b90506000606461180f858461453f565b611819919061451d565b9050801561183e5760135460115461183e916001600160a01b039081169116836125e4565b601154611853906001600160a01b0316611984565b601e55606461186f68fc6f7c40458122964d601f1b603261453f565b611879919061451d565b601e5411156118d65760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f74206275726e206d6f7265207468656e20353025206f6620737560448201526370706c7960e01b6064820152608401610f88565b6013546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561192057600080fd5b505af1158015611934573d6000803e3d6000fd5b50505050600193505050505b919050565b6000546001600160a01b0316331461196f5760405162461bcd60e51b8152600401610f8890614484565b6037805460ff60481b1916600160481b179055565b6001600160a01b03811660009081526006602052604081205460ff16156119c157506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610fc49061111d565b6000546001600160a01b03163314611a0d5760405162461bcd60e51b8152600401610f8890614484565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611a815760405162461bcd60e51b8152600401610f8890614484565b601d8190554780821115611af05760405162461bcd60e51b815260206004820152603060248201527f43616e206e6f74207365742076616c756520666f72206d6f726520657468207460448201526f68616e20636f6e74726163742068617360801b6064820152608401610f88565b5050565b6000546001600160a01b03163314611b1e5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b03163314611b6c5760405162461bcd60e51b8152600401610f8890614484565b6037805460ff60381b1916600160381b179055565b6000546001600160a01b03163314611bab5760405162461bcd60e51b8152600401610f8890614484565b6030839055602e829055602f819055603184905560148183611bcd8688614505565b611bd79190614505565b611be19190614505565b1115611c2f5760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772032302500006044820152606401610f88565b50505050565b6000546001600160a01b03163314611c5f5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b038116611cab5760405162461bcd60e51b81526020600482015260136024820152720616464726573732063616e6e6f74206265203606c1b6044820152606401610f88565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611cf75760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000546001600160a01b03163314611d455760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b038116611d915760405162461bcd60e51b81526020600482015260136024820152720616464726573732063616e6e6f74206265203606c1b6044820152606401610f88565b600d80546001600160a01b03908116600090815260056020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b03163314611e0b5760405162461bcd60e51b8152600401610f8890614484565b6037805465ff0000000000191665010000000000179055565b6000546001600160a01b03163314611e4e5760405162461bcd60e51b8152600401610f8890614484565b6037805465ff000000000019169055565b6000610fc0338461110e856040518060600160405280602581526020016145fd602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906131c1565b6000546001600160a01b03163314611ed85760405162461bcd60e51b8152600401610f8890614484565b602c839055602a829055602b819055602d84905560148183611efa8688614505565b611f049190614505565b611f0e9190614505565b1115611c2f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203230250000006044820152606401610f88565b6000610fc03384846125e4565b6000546001600160a01b03163314611f935760405162461bcd60e51b8152600401610f8890614484565b6037805466ff00000000000019166601000000000000179055565b6000546001600160a01b03163314611fd85760405162461bcd60e51b8152600401610f8890614484565b6037805460ff60381b19169055565b6000546001600160a01b031633146120115760405162461bcd60e51b8152600401610f8890614484565b6037805464ff000000001916640100000000179055565b6000546001600160a01b031633146120525760405162461bcd60e51b8152600401610f8890614484565b6037805466ff00000000000019169055565b6000546001600160a01b0316331461208e5760405162461bcd60e51b8152600401610f8890614484565b60375465010000000000900460ff161515600114156120bc57670de0b6b3a76400004710156120bc57600080fd5b600181151514156120cd576000601d555b601d5460006120dc4783613579565b90506000603760049054906101000a900460ff1615156001151514156121ac57606461210983600561453f565b612113919061451d565b601d60008282546121249190614505565b9091555060009050606461213984600561453f565b612143919061451d565b61214d908461455e565b6010546040519192506001600160a01b0316908290600081818185875af1925050503d806000811461219b576040519150601f19603f3d011682016040523d82523d6000602084013e6121a0565b606091505b50508092505050611c2f565b60105460405183916001600160a01b0316908290600081818185875af1925050503d80600081146121f9576040519150601f19603f3d011682016040523d82523d6000602084013e6121fe565b606091505b5050505050505050565b6000546001600160a01b031633146122325760405162461bcd60e51b8152600401610f8890614484565b6037805460ff19169055565b6000546001600160a01b031633146122685760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146122b35760405162461bcd60e51b8152600401610f8890614484565b6037805463ff00000019166301000000179055565b6000546001600160a01b031633146122f25760405162461bcd60e51b8152600401610f8890614484565b6037805460ff19166001179055565b6000546001600160a01b0316331461232b5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b0381166123955760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610f88565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146123e15760405162461bcd60e51b8152600401610f8890614484565b6037805461ffff19169055565b6000546001600160a01b031633146124185760405162461bcd60e51b8152600401610f8890614484565b6037805460ff60401b1916600160401b179055601d5481111561243a57600080fd5b61244381613585565b601d546124509082613579565b601d55506037805460ff60401b19169055565b6000546001600160a01b0316331461248d5760405162461bcd60e51b8152600401610f8890614484565b6001600160a01b0381166000908152600b602052604090205460ff16156124b357600080fd5b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6001600160a01b03831661252d5760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610f88565b6001600160a01b0382166125835760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610f88565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166126485760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610f88565b6001600160a01b0382166126aa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610f88565b6000811161270c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610f88565b6001600160a01b0383166000908152600b602052604090205460ff161561273257600080fd5b603754600160381b900460ff161515600114801561276957506001600160a01b03821660009081526007602052604090205460ff16155b156127e3576018548161277b84611984565b6127859190614505565b11156127e35760405162461bcd60e51b815260206004820152602760248201527f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c6574206044820152661c995858da195960ca1b6064820152608401610f88565b6037546601000000000000900460ff16151560011415612ab257601480547368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b03199182161790915560128054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b15801561287c57600080fd5b505afa158015612890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b4919061421a565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128fc57600080fd5b505afa158015612910573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612934919061421a565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561297a57600080fd5b505afa15801561298e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b2919061421a565b601380546001600160a01b0319166001600160a01b0392909216919091179055436032554260338190556129e99062054600614505565b60345550601380546001600160a01b039081166000908152600760209081526040808320805460ff1990811660019081179092556012805487168652838620805483168417905580548716865260088552838620805483168417905587548716865283862080548316841790559654861685526009909352818420805484168217905594548416835280832080548316861790556014549093168252919020805490911690911790556037805469ff00ffff00000000ffff191669010001000000000001011790555b603754610100900460ff1615612e0d576000546001600160a01b03848116911614801590612aee57506000546001600160a01b03838116911614155b8015612b0257506001600160a01b03821615155b8015612b1c57506011546001600160a01b03838116911614155b8015612b325750603754600160401b900460ff16155b15612e0d576000546001600160a01b03848116911614801590612b6357506013546001600160a01b03838116911614155b15612be75760005b6002811015612be55780603254612b829190614505565b431415612bd3576001600160a01b0383166000818152600c6020526040808220805460ff19166001179055517fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e29190a25b80612bdd81614575565b915050612b6b565b505b60375462010000900460ff168015612c0c57506013546001600160a01b038481169116145b15612c63576020543a1115612c635760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610f88565b60375460ff1615612d62576000546001600160a01b03838116911614801590612c9a57506012546001600160a01b03838116911614155b8015612cb457506013546001600160a01b03838116911614155b15612d6257326000908152600460205260409020544311612d4f5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610f88565b3260009081526004602052604090204390555b6013546001600160a01b038481169116148015612d9857506001600160a01b03821660009081526008602052604090205460ff16155b15612e0d57603554811115612e0d5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610f88565b6000612e32601c54612e2c601b54601a5461321c90919063ffffffff16565b9061321c565b90506000612e3f30611984565b60195460375491925082101590600160401b900460ff16158015612e6c5750603754600160481b900460ff165b8015612e8d5750601354600090612e8b906001600160a01b0316611984565b115b8015612e995750600083115b8015612ebe57506001600160a01b03851660009081526005602052604090205460ff16155b8015612ee357506001600160a01b03861660009081526005602052604090205460ff16155b8015612efc57506013546001600160a01b038681169116145b8015612f055750805b15612f1257612f12613277565b6001600160a01b03861660009081526005602052604090205460019060ff1680612f5457506001600160a01b03861660009081526005602052604090205460ff165b15612f6657506003601f5560006131ac565b6013546001600160a01b0388811691161415612ff4576037546301000000900460ff16151560011415612fca57612f9c8661103f565b158015612fc157506001600160a01b03871660009081526009602052604090205460ff165b612fca57600080fd5b612fd26136ef565b602a54602155602b54602355602c54602555602d546027556001601f556131ac565b6013546001600160a01b03878116911614156130e5576037546301000000900460ff161515600114156130585761302a8761103f565b15801561304f57506001600160a01b03861660009081526009602052604090205460ff165b61305857600080fd5b6130606136ef565b602e54602155602f546023556030546025556031546027556002601f556001600160a01b0387166000908152600c602052604090205460ff1680156130a757504260345410155b156130e0576021546130ba90600961453f565b6021556023546130cb90600361453f565b6023556027546130dc90600561453f565b6027555b6131ac565b6001600160a01b0387166000908152600c602052604090205460ff16156131745760405162461bcd60e51b815260206004820152603960248201527f536e69706572732063616e2774207472616e7366657220746f6b656e7320746f60448201527f2073656c6c20636865617065722e2020444d2061204d6f642e000000000000006064820152608401610f88565b6037546301000000900460ff1615156001141561319e576131948661103f565b1561319e57600080fd5b6131a66136ef565b6003601f555b6131b887878784613744565b50505050505050565b600081848411156131e55760405162461bcd60e51b8152600401610f88919061442f565b505050900390565b60008060006131fa6138c7565b90925090506132098282613210565b9250505090565b6000611187828461451d565b60006111878284614505565b600080600080600080600080600061323f8a613a6f565b925092509250600080600061325d8d86866132586131ed565b613aab565b919f909e50909c50959a5093985091965092945050505050565b6037805460ff60401b1916600160401b179055600061329530611984565b90506000601a54601c54601b546132ac9190614505565b6132b69190614505565b905060006132d06002601a5461321090919063ffffffff16565b905060006132de8483613579565b9050476132ea82613afb565b60006132f64783613579565b9050600061331986613313601b5485613c6490919063ffffffff16565b90613210565b9050600061333687613313601c5486613c6490919063ffffffff16565b9050600061334e826133488686613579565b90613579565b6000601b819055601c819055601a819055600d5460405192935090916001600160a01b039091169085908381818185875af1925050503d80600081146133b0576040519150601f19603f3d011682016040523d82523d6000602084013e6133b5565b606091505b5050600e546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114613405576040519150601f19603f3d011682016040523d82523d6000602084013e61340a565b606091505b50508091505061341a8883613c70565b6706f05b59d3b2000047111561356057601d5460006134394783613579565b603754909150640100000000900460ff1615156001141561350457606461346182600561453f565b61346b919061451d565b601d600082825461347c9190614505565b9091555060009050606461349183600561453f565b61349b919061451d565b6134a5908361455e565b6010546040519192506001600160a01b0316908290600081818185875af1925050503d80600081146134f3576040519150601f19603f3d011682016040523d82523d6000602084013e6134f8565b606091505b5050809450505061355d565b60105460405182916001600160a01b0316908290600081818185875af1925050503d8060008114613551576040519150601f19603f3d011682016040523d82523d6000602084013e613556565b606091505b5090945050505b50505b50506037805460ff60401b191690555050505050505050565b6000611187828461455e565b6040805160028082526060820183526000926020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156135ea57600080fd5b505afa1580156135fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613622919061421a565b81600081518110613635576136356145a6565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110613669576136696145a6565b6001600160a01b039283166020918202929092010152601254600f549082169163b6f9de959185916000918691166136a34261012c61321c565b6040518663ffffffff1660e01b81526004016136c294939291906143fa565b6000604051808303818588803b1580156136db57600080fd5b505af11580156131b8573d6000803e3d6000fd5b6025541580156136ff5750602754155b801561370b5750602154155b80156137175750602354155b1561371e57565b602180546022556027805460285560258054602655600092839055602383905582905555565b80613751576137516136ef565b6001600160a01b03841660009081526006602052604090205460ff16801561379257506001600160a01b03831660009081526006602052604090205460ff16155b156137a7576137a2848484613d33565b6138a5565b6001600160a01b03841660009081526006602052604090205460ff161580156137e857506001600160a01b03831660009081526006602052604090205460ff165b156137f8576137a2848484613e59565b6001600160a01b03841660009081526006602052604090205460ff1615801561383a57506001600160a01b03831660009081526006602052604090205460ff16155b1561384a576137a2848484613f02565b6001600160a01b03841660009081526006602052604090205460ff16801561388a57506001600160a01b03831660009081526006602052604090205460ff165b1561389a576137a2848484613f46565b6138a5848484613f02565b80611c2f57611c2f602254602155602454602355602654602555602854602755565b601654600090819068fc6f7c40458122964d601f1b825b601554811015613a2c57826001600060158481548110613900576139006145a6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061396b5750816002600060158481548110613944576139446145a6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561398a5750506016549368fc6f7c40458122964d601f1b9350915050565b6139d060016000601584815481106139a4576139a46145a6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490613579565b9250613a1860026000601584815481106139ec576139ec6145a6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390613579565b915080613a2481614575565b9150506138de565b50601654613a469068fc6f7c40458122964d601f1b613210565b821015613a665750506016549268fc6f7c40458122964d601f1b92509050565b90939092509050565b600080600080613a7e85613fb9565b90506000613a8b86613fd5565b90506000613a9d826133488986613579565b979296509094509092505050565b6000808080613aba8886613c64565b90506000613ac88887613c64565b90506000613ad68888613c64565b90506000613ae8826133488686613579565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613b3057613b306145a6565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613b8457600080fd5b505afa158015613b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bbc919061421a565b81600181518110613bcf57613bcf6145a6565b6001600160a01b039283166020918202929092010152601254613bf591309116846124d7565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790613c2e9085906000908690309042906004016144c9565b600060405180830381600087803b158015613c4857600080fd5b505af1158015613c5c573d6000803e3d6000fd5b505050505050565b6000611187828461453f565b601254613c889030906001600160a01b0316846124d7565b60125460115460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015613cf357600080fd5b505af1158015613d07573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d2c9190614356565b5050505050565b600080600080600080613d4587613228565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150613d779088613579565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054613da69087613579565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054613dd5908661321c565b6001600160a01b038916600090815260016020526040902055613df781614003565b613e0184836141c9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613e4691815260200190565b60405180910390a3505050505050505050565b600080600080600080613e6b87613228565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150613e9d9087613579565b6001600160a01b03808b16600090815260016020908152604080832094909455918b16815260029091522054613ed3908461321c565b6001600160a01b038916600090815260026020908152604080832093909355600190522054613dd5908661321c565b600080600080600080613f1487613228565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150613da69087613579565b600080600080600080613f5887613228565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150613f8a9088613579565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054613e9d9087613579565b6000610fc4606461331360255485613c6490919063ffffffff16565b6000610fc46064613313602354602154602754613ff29190614505565b613ffc9190614505565b8590613c64565b6001601f5414156140a457602954602a5461401e908361453f565b614028919061451d565b601b60008282546140399190614505565b9091555050602954602b5461404e908361453f565b614058919061451d565b601c60008282546140699190614505565b9091555050602954602d5461407e908361453f565b614088919061451d565b601a60008282546140999190614505565b909155506141409050565b6002601f54141561414057602954602e546140bf908361453f565b6140c9919061451d565b601b60008282546140da9190614505565b9091555050602954602f546140ef908361453f565b6140f9919061451d565b601c600082825461410a9190614505565b909155505060295460315461411f908361453f565b614129919061451d565b601a600082825461413a9190614505565b90915550505b600061414a6131ed565b905060006141588383613c64565b30600090815260016020526040902054909150614175908261321c565b3060009081526001602090815260408083209390935560069052205460ff16156141c457306000908152600260205260409020546141b3908461321c565b306000908152600260205260409020555b505050565b6016546141d69083613579565b6016556017546141e6908261321c565b6017555050565b8035801515811461194057600080fd5b60006020828403121561420f57600080fd5b8135611187816145bc565b60006020828403121561422c57600080fd5b8151611187816145bc565b6000806040838503121561424a57600080fd5b8235614255816145bc565b91506020830135614265816145bc565b809150509250929050565b60008060006060848603121561428557600080fd5b8335614290816145bc565b925060208401356142a0816145bc565b929592945050506040919091013590565b600080604083850312156142c457600080fd5b82356142cf816145bc565b946020939093013593505050565b6000602082840312156142ef57600080fd5b611187826141ed565b60006020828403121561430a57600080fd5b5035919050565b60006020828403121561432357600080fd5b5051919050565b6000806040838503121561433d57600080fd5b8235915061434d602084016141ed565b90509250929050565b60008060006060848603121561436b57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561439a57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156143ef5781516001600160a01b0316875295820195908201906001016143ca565b509495945050505050565b84815260806020820152600061441360808301866143b6565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b8181101561445c57858101830151858201604001528201614440565b8181111561446e576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b85815284602082015260a0604082015260006144e860a08301866143b6565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561451857614518614590565b500190565b60008261453a57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561455957614559614590565b500290565b60008282101561457057614570614590565b500390565b600060001982141561458957614589614590565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146145d157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f4382909135980c2dc131d1601b948eedc8a90f1f1f75f269096325ff29731ea64736f6c63430008070033
Deployed Bytecode Sourcemap
18060:33228:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23761:100;;;;;;;;;;-1:-1:-1;23840:13:0;;;;;;;;;;;-1:-1:-1;;;23840:13:0;;;;23761:100;;;;23840:13;23761:100;:::i;:::-;;;;;;;;19010:45;;;;;;;;;;-1:-1:-1;19010:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5344:14:1;;5337:22;5319:41;;5307:2;5292:18;19010:45:0;5179:187:1;41615:134:0;;;;;;;;;;-1:-1:-1;41615:134:0;;;;;:::i;:::-;;:::i;:::-;;24687:161;;;;;;;;;;-1:-1:-1;24687:161:0;;;;;:::i;:::-;;:::i;42555:85::-;;;;;;;;;;;;;:::i;42646:87::-;;;;;;;;;;;;;:::i;47014:337::-;;;;;;;;;;-1:-1:-1;47014:337:0;;;;;:::i;:::-;;:::i;24060:95::-;;;;;;;;;;-1:-1:-1;;;;24060:95:0;;;15214:25:1;;;15202:2;15187:18;24060:95:0;15068:177:1;40746:148:0;;;;;;;;;;-1:-1:-1;40746:148:0;;;;;:::i;:::-;-1:-1:-1;;;;;40846:40:0;40822:4;40846:40;;;:31;:40;;;;;;;;;40746:148;20918:33;;;;;;;;;;;;;;;;42919:95;;;;;;;;;;;;;:::i;24854:329::-;;;;;;;;;;-1:-1:-1;24854:329:0;;;;;:::i;:::-;;:::i;26188:241::-;;;;;;;;;;-1:-1:-1;26188:241:0;;;;;:::i;:::-;;:::i;23966:88::-;;;;;;;;;;-1:-1:-1;23966:88:0;;18316:2;15979:36:1;;15967:2;15952:18;23966:88:0;15837:184:1;41502:107:0;;;;;;;;;;-1:-1:-1;41502:107:0;;;;;:::i;:::-;;:::i;41015:108::-;;;;;;;;;;-1:-1:-1;41015:108:0;;;;;:::i;:::-;;:::i;25189:218::-;;;;;;;;;;-1:-1:-1;25189:218:0;;;;;:::i;:::-;;:::i;20667:35::-;;;;;;;;;;;;;;;;18968:38;;;;;;;;;;-1:-1:-1;18968:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;40199:119;;;;;;;;;;-1:-1:-1;40199:119:0;;;;;:::i;:::-;;:::i;39706:113::-;;;;;;;;;;-1:-1:-1;39706:113:0;;;;;:::i;:::-;;:::i;25738:444::-;;;;;;;;;;-1:-1:-1;25738:444:0;;;;;:::i;:::-;;:::i;21106:34::-;;;;;;;;;;-1:-1:-1;21106:34:0;;;;;;;;;;;21412:41;;;;;;;;;;-1:-1:-1;21412:41:0;;;;-1:-1:-1;;;21412:41:0;;;;;;45211:315;;;;;;;;;;;;;:::i;40900:109::-;;;;;;;;;;-1:-1:-1;40900:109:0;;;;;:::i;:::-;;:::i;39943:124::-;;;;;;;;;;-1:-1:-1;39943:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;40032:27:0;40008:4;40032:27;;;:18;:27;;;;;;;;;39943:124;19791:32;;;;;;;;;;;;;;;;20709:30;;;;;;;;;;;;;;;;40073:120;;;;;;;;;;-1:-1:-1;40073:120:0;;;;;:::i;:::-;;:::i;20790:35::-;;;;;;;;;;;;;;;;20746:37;;;;;;;;;;;;;;;;19334:26;;;;;;;;;;-1:-1:-1;19334:26:0;;;;-1:-1:-1;;;;;19334:26:0;;;;;;-1:-1:-1;;;;;4214:32:1;;;4196:51;;4184:2;4169:18;19334:26:0;4050:203:1;41377:122:0;;;;;;;;;;-1:-1:-1;41377:122:0;;;;;:::i;:::-;;:::i;20626:34::-;;;;;;;;;;;;;;;;43397:96;;;;;;;;;;;;;:::i;42250:93::-;;;;;;;;;;;;;:::i;41755:121::-;;;;;;;;;;;;;:::i;40604:136::-;;;;;;;;;;-1:-1:-1;40604:136:0;;;;;:::i;:::-;;:::i;39452:116::-;;;;;;;;;;-1:-1:-1;39452:116:0;;;;;:::i;:::-;;:::i;46359:649::-;;;;;;;;;;-1:-1:-1;46359:649:0;;;;;:::i;:::-;;:::i;40324:131::-;;;;;;;;;;-1:-1:-1;40324:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;40419:28:0;40395:4;40419:28;;;:19;:28;;;;;;;;;40324:131;42153:91;;;;;;;;;;;;;:::i;24161:198::-;;;;;;;;;;-1:-1:-1;24161:198:0;;;;;:::i;:::-;;:::i;3250:148::-;;;;;;;;;;;;;:::i;21346:31::-;;;;;;;;;;-1:-1:-1;21346:31:0;;;;-1:-1:-1;;;21346:31:0;;;;;;44934:271;;;;;;;;;;-1:-1:-1;44934:271:0;;;;;:::i;:::-;;:::i;40461:137::-;;;;;;;;;;-1:-1:-1;40461:137:0;;;;;:::i;:::-;;:::i;42739:83::-;;;;;;;;;;;;;:::i;43951:464::-;;;;;;;;;;-1:-1:-1;43951:464:0;;;;;:::i;:::-;;:::i;44728:200::-;;;;;;;;;;-1:-1:-1;44728:200:0;;;;;:::i;:::-;;:::i;41129:120::-;;;;;;;;;;-1:-1:-1;41129:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;41221:20:0;41197:4;41221:20;;;:11;:20;;;;;;;;;41129:120;39331:115;;;;;;;;;;-1:-1:-1;39331:115:0;;;;;:::i;:::-;;:::i;19303:24::-;;;;;;;;;;-1:-1:-1;19303:24:0;;;;-1:-1:-1;;;;;19303:24:0;;;3026:87;;;;;;;;;;-1:-1:-1;3072:7:0;3099:6;-1:-1:-1;;;;;3099:6:0;3026:87;;19756:28;;;;;;;;;;;;;;;;44421:301;;;;;;;;;;-1:-1:-1;44421:301:0;;;;;:::i;:::-;;:::i;43119:82::-;;;;;;;;;;;;;:::i;20583:36::-;;;;;;;;;;;;;;;;19259:37;;;;;;;;;;-1:-1:-1;19259:37:0;;;;-1:-1:-1;;;;;19259:37:0;;;21188:35;;;;;;;;;;-1:-1:-1;21188:35:0;;;;;;;;;;;39574:126;;;;;;;;;;-1:-1:-1;39574:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;39664:28:0;39640:4;39664:28;;;:19;:28;;;;;;;;;39574:126;43207:84;;;;;;;;;;;;;:::i;25413:319::-;;;;;;;;;;-1:-1:-1;25413:319:0;;;;;:::i;:::-;;:::i;43499:446::-;;;;;;;;;;-1:-1:-1;43499:446:0;;;;;:::i;:::-;;:::i;24365:167::-;;;;;;;;;;-1:-1:-1;24365:167:0;;;;;:::i;:::-;;:::i;42012:66::-;;;;;;;;;;;;;:::i;42828:85::-;;;;;;;;;;;;;:::i;20547:29::-;;;;;;;;;;;;;;;;21059:40;;;;;;;;;;-1:-1:-1;21059:40:0;;;;;;;;20958:35;;;;;;;;;;;;;;;;43297:94;;;;;;;;;;;;;:::i;20876:35::-;;;;;;;;;;;;;;;;24538:143;;;;;;;;;;-1:-1:-1;24538:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;24646:18:0;;;24619:7;24646:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;24538:143;42081:66;;;;;;;;;;;;;:::i;45532:821::-;;;;;;;;;;-1:-1:-1;45532:821:0;;;;;:::i;:::-;;:::i;42451:98::-;;;;;;;;;;;;;:::i;39825:112::-;;;;;;;;;;-1:-1:-1;39825:112:0;;;;;:::i;:::-;;:::i;43020:93::-;;;;;;;;;;;;;:::i;20832:37::-;;;;;;;;;;;;;;;;42349:96;;;;;;;;;;;;;:::i;20506:34::-;;;;;;;;;;;;;;;;3404:195;;;;;;;;;;-1:-1:-1;3404:195:0;;;;;:::i;:::-;;:::i;21147:34::-;;;;;;;;;;-1:-1:-1;21147:34:0;;;;;;;;;;;41882:124;;;;;;;;;;;;;:::i;38599:206::-;;;;;;;;;;-1:-1:-1;38599:206:0;;;;;:::i;:::-;;:::i;41255:119::-;;;;;;;;;;-1:-1:-1;41255:119:0;;;;;:::i;:::-;;:::i;41615:134::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;;;;;;;;;41699:2:::1;41692:3;:9;;41684:18;;;::::0;::::1;;41729:12;:3:::0;41735:6:::1;41729:12;:::i;:::-;41713:13;:28:::0;-1:-1:-1;41615:134:0:o;24687:161::-;24762:4;24779:39;169:10;24802:7;24811:6;24779:8;:39::i;:::-;-1:-1:-1;24836:4:0;24687:161;;;;;:::o;42555:85::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;42611:14:::1;:21:::0;;-1:-1:-1;;42611:21:0::1;::::0;::::1;::::0;;42555:85::o;42646:87::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;42703:14:::1;:22:::0;;-1:-1:-1;;42703:22:0::1;::::0;;42646:87::o;47014:337::-;47072:4;47251:20;;47138:66;47300:23;;;;;;:42;;-1:-1:-1;47327:15:0;;;47300:42;47292:51;47014:337;-1:-1:-1;;;;47014:337:0:o;42919:95::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;42983:15:::1;:23:::0;;-1:-1:-1;;42983:23:0::1;::::0;;42919:95::o;24854:329::-;24950:4;24967:36;24977:6;24985:9;24996:6;24967:9;:36::i;:::-;25014:139;25023:6;169:10;25053:89;25091:6;25053:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25053:19:0;;;;;;:11;:19;;;;;;;;169:10;25053:33;;;;;;;;;;:37;:89::i;:::-;25014:8;:139::i;:::-;-1:-1:-1;25171:4:0;24854:329;;;;;:::o;26188:241::-;26255:7;26294;;26283;:18;;26275:61;;;;-1:-1:-1;;;26275:61:0;;9636:2:1;26275:61:0;;;9618:21:1;9675:2;9655:18;;;9648:30;9714:32;9694:18;;;9687:60;9764:18;;26275:61:0;9434:354:1;26275:61:0;26347:19;26369:10;:8;:10::i;:::-;26347:32;-1:-1:-1;26397:24:0;:7;26347:32;26397:11;:24::i;:::-;26390:31;26188:241;-1:-1:-1;;;26188:241:0:o;41502:107::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41571:22:0::1;41596:5;41571:22:::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;41571:30:0::1;::::0;;41502:107::o;41015:108::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41087:20:0::1;41110:5;41087:20:::0;;;:11:::1;:20;::::0;;;;:28;;-1:-1:-1;;41087:28:0::1;::::0;;41015:108::o;25189:218::-;169:10;25277:4;25326:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;25326:34:0;;;;;;;;;;25277:4;;25294:83;;25317:7;;25326:50;;25365:10;25326:38;:50::i;40199:119::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40274:28:0::1;40305:5;40274:28:::0;;;:19:::1;:28;::::0;;;;:36;;-1:-1:-1;;40274:36:0::1;::::0;;40199:119::o;39706:113::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39777:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;39777:34:0::1;39807:4;39777:34;::::0;;39706:113::o;25738:444::-;25829:7;-1:-1:-1;;;25857:7:0;:18;;25849:59;;;;-1:-1:-1;;;25849:59:0;;8044:2:1;25849:59:0;;;8026:21:1;8083:2;8063:18;;;8056:30;8122;8102:18;;;8095:58;8170:18;;25849:59:0;7842:352:1;25849:59:0;25924:17;25919:256;;25959:15;25988:19;25999:7;25988:10;:19::i;:::-;-1:-1:-1;25958:49:0;;-1:-1:-1;26022:14:0;;-1:-1:-1;;;;;26022:14:0;25919:256;26072:23;26107:19;26118:7;26107:10;:19::i;:::-;-1:-1:-1;26069:57:0;;-1:-1:-1;26141:22:0;;-1:-1:-1;;;;;26141:22:0;45211:315;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;45266:23:::1;45292:24;45310:4;45292:9;:24::i;:::-;45266:50:::0;-1:-1:-1;45368:5:0::1;45354:11;-1:-1:-1::0;;;45364:1:0::1;45354:11;:::i;:::-;:19;;;;:::i;:::-;45335:15;:38;;45327:116;;;::::0;-1:-1:-1;;;45327:116:0;;8754:2:1;45327:116:0::1;::::0;::::1;8736:21:1::0;8793:2;8773:18;;;8766:30;8832:34;8812:18;;;8805:62;8903:34;8883:18;;;8876:62;-1:-1:-1;;;8954:19:1;;;8947:32;8996:19;;45327:116:0::1;8552:469:1::0;45327:116:0::1;45454:12;:10;:12::i;:::-;45482:36;::::0;45502:15:::1;15214:25:1::0;;45482:36:0::1;::::0;15202:2:1;15187:18;45482:36:0::1;;;;;;;45255:271;45211:315::o:0;40900:109::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40974:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;40974:27:0::1;40997:4;40974:27;::::0;;40900:109::o;40073:120::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40150:28:0::1;;::::0;;;:19:::1;:28;::::0;;;;:35;;-1:-1:-1;;40150:35:0::1;40181:4;40150:35;::::0;;40073:120::o;41377:122::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41447:12:0;::::1;;::::0;;;:5:::1;:12;::::0;;;;;::::1;;41439:21;;;::::0;::::1;;-1:-1:-1::0;;;;;41471:12:0::1;41486:5;41471:12:::0;;;:5:::1;:12;::::0;;;;:20;;-1:-1:-1;;41471:20:0::1;::::0;;41377:122::o;43397:96::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;43460:17:::1;:25:::0;;-1:-1:-1;;43460:25:0::1;::::0;;43397:96::o;42250:93::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;42306:21:::1;:29:::0;;-1:-1:-1;;;;42306:29:0::1;::::0;;42250:93::o;41755:121::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;41809:14:::1;:21:::0;;-1:-1:-1;;41841:27:0;;;;;41755:121::o;40604:136::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40684:40:0::1;40727:5;40684:40:::0;;;:31:::1;:40;::::0;;;;:48;;-1:-1:-1;;40684:48:0::1;::::0;;40604:136::o;39452:116::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39524:28:0::1;39555:5;39524:28:::0;;;:19:::1;:28;::::0;;;;:36;;-1:-1:-1;;39524:36:0::1;::::0;;39452:116::o;46359:649::-;46430:4;3099:6;;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;46465:2:::1;46454:7;:13;;46446:68;;;::::0;-1:-1:-1;;;46446:68:0;;13375:2:1;46446:68:0::1;::::0;::::1;13357:21:1::0;13414:2;13394:18;;;13387:30;13453:34;13433:18;;;13426:62;-1:-1:-1;;;13504:18:1;;;13497:40;13554:19;;46446:68:0::1;13173:406:1::0;46446:68:0::1;46571:9;::::0;46556:25:::1;::::0;-1:-1:-1;;;46556:25:0;;-1:-1:-1;;;;;46571:9:0;;::::1;46556:25;::::0;::::1;4196:51:1::0;46525:28:0::1;::::0;46556:4:::1;::::0;:14:::1;::::0;4169:18:1;;46556:25:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46525:56:::0;-1:-1:-1;46592:20:0::1;46648:5;46615:30;46638:7:::0;46525:56;46615:30:::1;:::i;:::-;:38;;;;:::i;:::-;46592:61:::0;-1:-1:-1;46668:16:0;;46664:88:::1;;46710:9;::::0;46721:4:::1;::::0;46700:40:::1;::::0;-1:-1:-1;;;;;46710:9:0;;::::1;::::0;46721:4:::1;46727:12:::0;46700:9:::1;:40::i;:::-;46792:4;::::0;46782:15:::1;::::0;-1:-1:-1;;;;;46792:4:0::1;46782:9;:15::i;:::-;46762:17;:35:::0;46852:5:::1;46837:12;-1:-1:-1::0;;;46847:2:0::1;46837:12;:::i;:::-;:20;;;;:::i;:::-;46816:17;;:41;;46808:90;;;::::0;-1:-1:-1;;;46808:90:0;;10407:2:1;46808:90:0::1;::::0;::::1;10389:21:1::0;10446:2;10426:18;;;10419:30;10485:34;10465:18;;;10458:62;-1:-1:-1;;;10536:18:1;;;10529:34;10580:19;;46808:90:0::1;10205:400:1::0;46808:90:0::1;46946:9;::::0;46967:11:::1;::::0;;-1:-1:-1;;;;;;46967:11:0;;;;-1:-1:-1;;;;;46946:9:0;;::::1;::::0;;;46967::::1;::::0;:11:::1;::::0;;::::1;::::0;46909:19:::1;::::0;46967:11;;;;;;;46909:19;46946:9;46967:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;46996:4;46989:11;;;;;3235:1;46359:649:::0;;;:::o;42153:91::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;42208:21:::1;:28:::0;;-1:-1:-1;;;;42208:28:0::1;-1:-1:-1::0;;;42208:28:0::1;::::0;;42153:91::o;24161:198::-;-1:-1:-1;;;;;24251:20:0;;24227:7;24251:20;;;:11;:20;;;;;;;;24247:49;;;-1:-1:-1;;;;;;24280:16:0;;;;;:7;:16;;;;;;;24161:198::o;24247:49::-;-1:-1:-1;;;;;24334:16:0;;;;;;:7;:16;;;;;;24314:37;;:19;:37::i;3250:148::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;3357:1:::1;3341:6:::0;;3320:40:::1;::::0;-1:-1:-1;;;;;3341:6:0;;::::1;::::0;3320:40:::1;::::0;3357:1;;3320:40:::1;3388:1;3371:19:::0;;-1:-1:-1;;;;;;3371:19:0::1;::::0;;3250:148::o;44934:271::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;45066:13:::1;:35:::0;;;45034:21:::1;45120:24:::0;;::::1;;45112:85;;;::::0;-1:-1:-1;;;45112:85:0;;10812:2:1;45112:85:0::1;::::0;::::1;10794:21:1::0;10851:2;10831:18;;;10824:30;10890:34;10870:18;;;10863:62;-1:-1:-1;;;10941:18:1;;;10934:46;10997:19;;45112:85:0::1;10610:412:1::0;45112:85:0::1;45005:200;44934:271:::0;:::o;40461:137::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40543:40:0::1;;::::0;;;:31:::1;:40;::::0;;;;:47;;-1:-1:-1;;40543:47:0::1;40586:4;40543:47;::::0;;40461:137::o;42739:83::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;42796:11:::1;:18:::0;;-1:-1:-1;;;;42796:18:0::1;-1:-1:-1::0;;;42796:18:0::1;::::0;;42739:83::o;43951:464::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;44106:18:::1;:40:::0;;;44157:16:::1;:36:::0;;;44204:11:::1;:26:::0;;;44241:16:::1;:36:::0;;;44370:2:::1;44218:12:::0;44176:17;44296:37:::1;44127:19:::0;44260:17;44296:37:::1;:::i;:::-;:56;;;;:::i;:::-;:70;;;;:::i;:::-;:76;;44288:119;;;::::0;-1:-1:-1;;;44288:119:0;;14911:2:1;44288:119:0::1;::::0;::::1;14893:21:1::0;14950:2;14930:18;;;14923:30;14989:32;14969:18;;;14962:60;15039:18;;44288:119:0::1;14709:354:1::0;44288:119:0::1;43951:464:::0;;;;:::o;44728:200::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44818:30:0;::::1;44810:62;;;::::0;-1:-1:-1;;;44810:62:0;;6933:2:1;44810:62:0::1;::::0;::::1;6915:21:1::0;6972:2;6952:18;;;6945:30;-1:-1:-1;;;6991:18:1;;;6984:49;7050:18;;44810:62:0::1;6731:343:1::0;44810:62:0::1;44883:9;:37:::0;;-1:-1:-1;;;;;;44883:37:0::1;-1:-1:-1::0;;;;;44883:37:0;;;::::1;::::0;;;::::1;::::0;;44728:200::o;39331:115::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39403:28:0::1;;::::0;;;:19:::1;:28;::::0;;;;:35;;-1:-1:-1;;39403:35:0::1;39434:4;39403:35;::::0;;39331:115::o;44421:301::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44515:31:0;::::1;44507:63;;;::::0;-1:-1:-1;;;44507:63:0;;6933:2:1;44507:63:0::1;::::0;::::1;6915:21:1::0;6972:2;6952:18;;;6945:30;-1:-1:-1;;;6991:18:1;;;6984:49;7050:18;;44507:63:0::1;6731:343:1::0;44507:63:0::1;44600:9;::::0;;-1:-1:-1;;;;;44600:9:0;;::::1;44613:5;44581:29:::0;;;:18:::1;:29;::::0;;;;;:37;;-1:-1:-1;;44581:37:0;;::::1;::::0;;;44629:38;;-1:-1:-1;;;;;;44629:38:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;44678:29;;;;;:36;;;;::::1;-1:-1:-1::0;44678:36:0::1;::::0;;44421:301::o;43119:82::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;43177:9:::1;:16:::0;;-1:-1:-1;;43177:16:0::1;::::0;::::1;::::0;;43119:82::o;43207:84::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;43266:9:::1;:17:::0;;-1:-1:-1;;43266:17:0::1;::::0;;43207:84::o;25413:319::-;25506:4;25523:179;169:10;25573:7;25595:96;25634:15;25595:96;;;;;;;;;;;;;;;;;169:10;25595:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;25595:34:0;;;;;;;;;;;;:38;:96::i;43499:446::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;43649:17:::1;:38:::0;;;43698:15:::1;:34:::0;;;43743:10:::1;:24:::0;;;43778:15:::1;:34:::0;;;43901:2:::1;43756:11:::0;43716:16;43831:35:::1;43669:18:::0;43796:16;43831:35:::1;:::i;:::-;:53;;;;:::i;:::-;:66;;;;:::i;:::-;:72;;43823:114;;;::::0;-1:-1:-1;;;43823:114:0;;14192:2:1;43823:114:0::1;::::0;::::1;14174:21:1::0;14231:2;14211:18;;;14204:30;14270:31;14250:18;;;14243:59;14319:18;;43823:114:0::1;13990:353:1::0;24365:167:0;24443:4;24460:42;169:10;24484:9;24495:6;24460:9;:42::i;42012:66::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;42059:7:::1;:14:::0;;-1:-1:-1;;42059:14:0::1;::::0;::::1;::::0;;42012:66::o;42828:85::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;42886:11:::1;:19:::0;;-1:-1:-1;;;;42886:19:0::1;::::0;;42828:85::o;43297:94::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;43359:17:::1;:24:::0;;-1:-1:-1;;43359:24:0::1;::::0;::::1;::::0;;43297:94::o;42081:66::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;42127:7:::1;:15:::0;;-1:-1:-1;;42127:15:0::1;::::0;;42081:66::o;45532:821::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;45608:9:::1;::::0;;;::::1;;;:17;;45621:4;45608:17;45605:91;;;45675:8;45650:21;:33;;45642:42;;;::::0;::::1;;45727:4;45709:22:::0;::::1;;;45706:78;;;45764:8;45748:13;:24:::0;45706:78:::1;45821:13;::::0;45794:24:::1;45871:43;:21;45821:13:::0;45871:25:::1;:43::i;:::-;45845:69;;45925:12;45951:17;;;;;;;;;;;:25;;45972:4;45951:25;;;45948:398;;;46031:5;46009:19;:15:::0;46027:1:::1;46009:19;:::i;:::-;:27;;;;:::i;:::-;45992:13;;:44;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;46051:18:0::1;::::0;-1:-1:-1;46112:5:0::1;46090:19;:15:::0;46108:1:::1;46090:19;:::i;:::-;:27;;;;:::i;:::-;46072:45;::::0;:15;:45:::1;:::i;:::-;46153:9;::::0;46145:46:::1;::::0;46051:66;;-1:-1:-1;;;;;;46153:9:0::1;::::0;46051:66;;46145:46:::1;::::0;;;46051:66;46153:9;46145:46:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46132:59;;;;;45977:226;45948:398;;;46296:9;::::0;46288:46:::1;::::0;46245:15;;-1:-1:-1;;;;;46296:9:0::1;::::0;46245:15;;46288:46:::1;::::0;;;46245:15;46296:9;46288:46:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;45532:821:0:o;42451:98::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;42513:20:::1;:28:::0;;-1:-1:-1;;42513:28:0::1;::::0;;42451:98::o;39825:112::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39894:27:0::1;39924:5;39894:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;39894:35:0::1;::::0;;39825:112::o;43020:93::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;43083:15:::1;:22:::0;;-1:-1:-1;;43083:22:0::1;::::0;::::1;::::0;;43020:93::o;42349:96::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;42410:20:::1;:27:::0;;-1:-1:-1;;42410:27:0::1;42433:4;42410:27;::::0;;42349:96::o;3404:195::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3493:22:0;::::1;3485:78;;;::::0;-1:-1:-1;;;3485:78:0;;9995:2:1;3485:78:0::1;::::0;::::1;9977:21:1::0;10034:2;10014:18;;;10007:30;10073:34;10053:18;;;10046:62;-1:-1:-1;;;10124:18:1;;;10117:41;10175:19;;3485:78:0::1;9793:407:1::0;3485:78:0::1;3574:6;:17:::0;;-1:-1:-1;;;;;;3574:17:0::1;-1:-1:-1::0;;;;;3574:17:0;;;::::1;::::0;;;::::1;::::0;;3404:195::o;41882:124::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;41937:14:::1;:22:::0;;-1:-1:-1;;41970:28:0;;;41882:124::o;38599:206::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;22039:16:::1;:23:::0;;-1:-1:-1;;;;22039:23:0::1;-1:-1:-1::0;;;22039:23:0::1;::::0;;38696:13:::2;::::0;38686:23;::::2;;38678:32;;;::::0;::::2;;38721:24;38738:6;38721:16;:24::i;:::-;38772:13;::::0;:25:::2;::::0;38790:6;38772:17:::2;:25::i;:::-;38756:13;:41:::0;-1:-1:-1;22085:16:0::1;:24:::0;;-1:-1:-1;;;;22085:24:0::1;::::0;;38599:206::o;41255:119::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41323:12:0;::::1;;::::0;;;:5:::1;:12;::::0;;;;;::::1;;41322:13;41314:22;;;::::0;::::1;;-1:-1:-1::0;;;;;41347:12:0::1;;::::0;;;:5:::1;:12;::::0;;;;:19;;-1:-1:-1;;41347:19:0::1;41362:4;41347:19;::::0;;41255:119::o;29661:325::-;-1:-1:-1;;;;;29752:19:0;;29744:64;;;;-1:-1:-1;;;29744:64:0;;14550:2:1;29744:64:0;;;14532:21:1;;;14569:18;;;14562:30;14628:34;14608:18;;;14601:62;14680:18;;29744:64:0;14348:356:1;29744:64:0;-1:-1:-1;;;;;29827:21:0;;29819:64;;;;-1:-1:-1;;;29819:64:0;;7685:2:1;29819:64:0;;;7667:21:1;7724:2;7704:18;;;7697:30;7763:32;7743:18;;;7736:60;7813:18;;29819:64:0;7483:354:1;29819:64:0;-1:-1:-1;;;;;29894:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;29946:32;;15214:25:1;;;29946:32:0;;15187:18:1;29946:32:0;;;;;;;29661:325;;;:::o;29992:5325::-;-1:-1:-1;;;;;30080:18:0;;30072:68;;;;-1:-1:-1;;;30072:68:0;;13786:2:1;30072:68:0;;;13768:21:1;13825:2;13805:18;;;13798:30;13864:34;13844:18;;;13837:62;-1:-1:-1;;;13915:18:1;;;13908:35;13960:19;;30072:68:0;13584:401:1;30072:68:0;-1:-1:-1;;;;;30159:16:0;;30151:64;;;;-1:-1:-1;;;30151:64:0;;7281:2:1;30151:64:0;;;7263:21:1;7320:2;7300:18;;;7293:30;7359:34;7339:18;;;7332:62;-1:-1:-1;;;7410:18:1;;;7403:33;7453:19;;30151:64:0;7079:399:1;30151:64:0;30243:1;30234:6;:10;30226:64;;;;-1:-1:-1;;;30226:64:0;;12965:2:1;30226:64:0;;;12947:21:1;13004:2;12984:18;;;12977:30;13043:34;13023:18;;;13016:62;-1:-1:-1;;;13094:18:1;;;13087:39;13143:19;;30226:64:0;12763:405:1;30226:64:0;-1:-1:-1;;;;;30310:11:0;;;;;;:5;:11;;;;;;;;30309:12;30301:21;;;;;;30337:11;;-1:-1:-1;;;30337:11:0;;;;:19;;30352:4;30337:19;:48;;;;-1:-1:-1;;;;;;30362:23:0;;;;;;:19;:23;;;;;;;;30360:25;30337:48;30333:169;;;30436:10;;30426:6;30410:13;30420:2;30410:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;30402:88;;;;-1:-1:-1;;;30402:88:0;;9228:2:1;30402:88:0;;;9210:21:1;9267:2;9247:18;;;9240:30;9306:34;9286:18;;;9279:62;-1:-1:-1;;;9357:18:1;;;9350:37;9404:19;;30402:88:0;9026:403:1;30402:88:0;30515:7;;;;;;;:15;;30526:4;30515:15;30512:1206;;;30658:11;:56;;30672:42;-1:-1:-1;;;;;;30658:56:0;;;;;;;30762:11;:26;;30600:42;30762:26;;;;;;30833:22;;;-1:-1:-1;;;30833:22:0;;;;30600:42;;30833:20;;:22;;;;;;;;;;;;;;30600:42;30833:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30815:49:0;;30873:4;30880:12;-1:-1:-1;;;;;30880:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30815:85;;-1:-1:-1;;;;;;30815:85:0;;;;;;;-1:-1:-1;;;;;4488:15:1;;;30815:85:0;;;4470:34:1;4540:15;;4520:18;;;4513:43;4405:18;;30815:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30803:9;:97;;-1:-1:-1;;;;;;30803:97:0;-1:-1:-1;;;;;30803:97:0;;;;;;;;;;30936:12;30915:18;:33;30986:15;30963:20;:38;;;31037:26;;31055:8;31037:26;:::i;:::-;31016:18;:47;-1:-1:-1;31106:9:0;;;-1:-1:-1;;;;;31106:9:0;;;31078:39;;;;:19;:39;;;;;;;;:46;;-1:-1:-1;;31078:46:0;;;31120:4;31078:46;;;;;;31167:11;;;;;31139:41;;;;;:48;;;;;;;;31242:11;;;;31202:53;;:31;:53;;;;;:60;;;;;;;;31317:9;;;;31277:51;;;;;:58;;;;;;;;31378:9;;;;31350:39;;:19;:39;;;;;;:46;;;;;;;;31439:11;;;;31411:41;;;;;:48;;;;;;;;31502:11;;;;;31474:41;;;;;:48;;;;;;;;;;31537:14;:21;;-1:-1:-1;;31691:15:0;31649:27;31691:15;;;30512:1206;31731:14;;;;;;;31728:1320;;;3072:7;3099:6;-1:-1:-1;;;;;31765:15:0;;;3099:6;;31765:15;;;;:32;;-1:-1:-1;3072:7:0;3099:6;-1:-1:-1;;;;;31784:13:0;;;3099:6;;31784:13;;31765:32;:52;;;;-1:-1:-1;;;;;;31801:16:0;;;;31765:52;:66;;;;-1:-1:-1;31827:4:0;;-1:-1:-1;;;;;31821:10:0;;;31827:4;;31821:10;;31765:66;:87;;;;-1:-1:-1;31836:16:0;;-1:-1:-1;;;31836:16:0;;;;31835:17;31765:87;31761:1276;;;3072:7;3099:6;-1:-1:-1;;;;;31876:15:0;;;3099:6;;31876:15;;;;:34;;-1:-1:-1;31901:9:0;;-1:-1:-1;;;;;31895:15:0;;;31901:9;;31895:15;;31876:34;31873:325;;;31940:6;31935:244;31956:1;31952;:5;31935:244;;;32027:1;32006:18;;:22;;;;:::i;:::-;31990:12;:38;31987:169;;;-1:-1:-1;;;;;32057:17:0;;;;;;:13;:17;;;;;;:24;;-1:-1:-1;;32057:24:0;32077:4;32057:24;;;32113:15;;;32057:17;32113:15;31987:169;31959:3;;;;:::i;:::-;;;;31935:244;;;;31873:325;32220:14;;;;;;;:35;;;;-1:-1:-1;32246:9:0;;-1:-1:-1;;;;;32238:17:0;;;32246:9;;32238:17;32220:35;32216:149;;;32303:13;;32288:11;:28;;32280:65;;;;-1:-1:-1;;;32280:65:0;;8401:2:1;32280:65:0;;;8383:21:1;8440:2;8420:18;;;8413:30;8479:26;8459:18;;;8452:54;8523:18;;32280:65:0;8199:348:1;32280:65:0;32387:20;;;;32383:415;;;3072:7;3099:6;-1:-1:-1;;;;;32435:13:0;;;3099:6;;32435:13;;;;:43;;-1:-1:-1;32466:11:0;;-1:-1:-1;;;;;32452:26:0;;;32466:11;;32452:26;;32435:43;:71;;;;-1:-1:-1;32496:9:0;;-1:-1:-1;;;;;32482:24:0;;;32496:9;;32482:24;;32435:71;32431:348;;;32571:9;32542:39;;;;:28;:39;;;;;;32584:12;-1:-1:-1;32534:140:0;;;;-1:-1:-1;;;32534:140:0;;12077:2:1;32534:140:0;;;12059:21:1;12116:2;12096:18;;;12089:30;12155:34;12135:18;;;12128:62;12226:34;12206:18;;;12199:62;-1:-1:-1;;;12277:19:1;;;12270:40;12327:19;;32534:140:0;11875:477:1;32534:140:0;32730:9;32701:39;;;;:28;:39;;;;;32743:12;32701:54;;32431:348;32828:9;;-1:-1:-1;;;;;32820:17:0;;;32828:9;;32820:17;:57;;;;-1:-1:-1;;;;;;32842:35:0;;;;;;:31;:35;;;;;;;;32841:36;32820:57;32816:206;;;32924:20;;32914:6;:30;;32906:96;;;;-1:-1:-1;;;32906:96:0;;11655:2:1;32906:96:0;;;11637:21:1;11694:2;11674:18;;;11667:30;11733:34;11713:18;;;11706:62;-1:-1:-1;;;11784:18:1;;;11777:51;11845:19;;32906:96:0;11453:417:1;32906:96:0;33058:25;33086:37;33114:8;;33086:23;33100:8;;33086:9;;:13;;:23;;;;:::i;:::-;:27;;:37::i;:::-;33058:65;;33134:28;33165:24;33183:4;33165:9;:24::i;:::-;33255:12;;33283:16;;33134:55;;-1:-1:-1;33231:36:0;;;;-1:-1:-1;;;33283:16:0;;;;33282:17;:42;;;;-1:-1:-1;33303:21:0;;-1:-1:-1;;;33303:21:0;;;;33282:42;:70;;;;-1:-1:-1;33338:9:0;;33351:1;;33328:20;;-1:-1:-1;;;;;33338:9:0;33328;:20::i;:::-;:24;33282:70;:95;;;;;33376:1;33356:17;:21;33282:95;:122;;;;-1:-1:-1;;;;;;33382:22:0;;;;;;:18;:22;;;;;;;;33381:23;33282:122;:151;;;;-1:-1:-1;;;;;;33409:24:0;;;;;;:18;:24;;;;;;;;33408:25;33282:151;:170;;;;-1:-1:-1;33443:9:0;;-1:-1:-1;;;;;33437:15:0;;;33443:9;;33437:15;33282:170;:197;;;;;33456:23;33282:197;33278:246;;;33496:12;:10;:12::i;:::-;-1:-1:-1;;;;;33568:24:0;;33534:12;33568:24;;;:18;:24;;;;;;33549:4;;33568:24;;;:50;;-1:-1:-1;;;;;;33596:22:0;;;;;;:18;:22;;;;;;;;33568:50;33564:1694;;;-1:-1:-1;19945:1:0;33665:15;:26;33645:5;33564:1694;;;33736:9;;-1:-1:-1;;;;;33728:17:0;;;33736:9;;33728:17;33724:1523;;;33769:15;;;;;;;:23;;33788:4;33769:23;33766:131;;;33824:14;33835:2;33824:10;:14::i;:::-;:23;;;:52;;-1:-1:-1;;;;;;33851:25:0;;;;;;:19;:25;;;;;;;;33824:52;33816:61;;;;;;33915:14;:12;:14::i;:::-;33964:15;;33948:13;:31;34009:10;;33998:8;:21;34056:17;;34038:15;:35;34108:15;;34092:13;:31;19861:1;34142:15;:21;33724:1523;;;34209:9;;-1:-1:-1;;;;;34203:15:0;;;34209:9;;34203:15;34199:1048;;;34242:15;;;;;;;:23;;34261:4;34242:23;34239:131;;;34297:16;34308:4;34297:10;:16::i;:::-;:25;;;:52;;-1:-1:-1;;;;;;34326:23:0;;;;;;:19;:23;;;;;;;;34297:52;34289:61;;;;;;34388:14;:12;:14::i;:::-;34437:16;;34421:13;:32;34483:11;;34472:8;:22;34531:18;;34513:15;:36;34584:16;;34568:13;:32;19901:1;34619:15;:22;-1:-1:-1;;;;;34663:19:0;;-1:-1:-1;34663:19:0;;;-1:-1:-1;34663:19:0;;;;;;;;:60;;;;;34708:15;34686:18;;:37;;34663:60;34660:242;;;34763:13;;:17;;34779:1;34763:17;:::i;:::-;34747:13;:33;34814:8;;:12;;34825:1;34814:12;:::i;:::-;34803:8;:23;34865:13;;:17;;34881:1;34865:17;:::i;:::-;34849:13;:33;34660:242;34199:1048;;;-1:-1:-1;;;;;34951:19:0;;;;;;:13;:19;;;;;;;;34950:20;34942:90;;;;-1:-1:-1;;;34942:90:0;;11229:2:1;34942:90:0;;;11211:21:1;11268:2;11248:18;;;11241:30;11307:34;11287:18;;;11280:62;11378:27;11358:18;;;11351:55;11423:19;;34942:90:0;11027:421:1;34942:90:0;35054:15;;;;;;;:23;;35073:4;35054:23;35051:103;;;35110:14;35121:2;35110:10;:14::i;:::-;:23;35102:32;;;;;;35172:14;:12;:14::i;:::-;19945:1;35205:15;:26;34199:1048;35268:41;35283:4;35289:2;35293:6;35301:7;35268:14;:41::i;:::-;30061:5256;;;;29992:5325;;;:::o;2075:206::-;2161:7;2222:12;2214:6;;;;2206:29;;;;-1:-1:-1;;;2206:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2257:5:0;;;2075:206::o;27771:164::-;27813:7;27834:15;27851;27870:19;:17;:19::i;:::-;27833:56;;-1:-1:-1;27833:56:0;-1:-1:-1;27907:20:0;27833:56;;27907:11;:20::i;:::-;27900:27;;;;27771:164;:::o;1867:98::-;1925:7;1952:5;1956:1;1952;:5;:::i;1555:98::-;1613:7;1640:5;1644:1;1640;:5;:::i;26588:414::-;26647:7;26655;26663;26671;26679;26687;26708:23;26733:12;26747:18;26769:20;26781:7;26769:11;:20::i;:::-;26707:82;;;;;;26801:15;26818:23;26843:12;26859:50;26871:7;26880:4;26886:10;26898;:8;:10::i;:::-;26859:11;:50::i;:::-;26800:109;;;;-1:-1:-1;26800:109:0;;-1:-1:-1;26960:15:0;;-1:-1:-1;26977:4:0;;-1:-1:-1;26983:10:0;;-1:-1:-1;26588:414:0;;-1:-1:-1;;;;;26588:414:0:o;35323:1678::-;22039:16;:23;;-1:-1:-1;;;;22039:23:0;-1:-1:-1;;;22039:23:0;;;;35402:24:::1;35420:4;35402:9;:24::i;:::-;35376:50;;35437:25;35487:9;;35476:8;;35465;;:19;;;;:::i;:::-;:31;;;;:::i;:::-;35437:59;;35507:26;35536:16;35550:1;35536:9;;:13;;:16;;;;:::i;:::-;35507:45:::0;-1:-1:-1;35563:26:0::1;35592:39;:15:::0;35507:45;35592:19:::1;:39::i;:::-;35563:68:::0;-1:-1:-1;35670:21:0::1;35702:36;35563:68:::0;35702:16:::1;:36::i;:::-;35750:18;35771:44;:21;35797:17:::0;35771:25:::1;:44::i;:::-;35750:65;;35826:23;35852:47;35881:17;35852:24;35867:8;;35852:10;:14;;:24;;;;:::i;:::-;:28:::0;::::1;:47::i;:::-;35826:73;;35910:22;35935:47;35964:17;35935:24;35950:8;;35935:10;:14;;:24;;;;:::i;:47::-;35910:72:::0;-1:-1:-1;35993:23:0::1;36019:51;35910:72:::0;36019:31:::1;:10:::0;36034:15;36019:14:::1;:31::i;:::-;:35:::0;::::1;:51::i;:::-;36092:1;36081:8;:12:::0;;;36104:8:::1;:12:::0;;;36127:9:::1;:13:::0;;;36177:9:::1;::::0;36169:51:::1;::::0;35993:77;;-1:-1:-1;36092:1:0;;-1:-1:-1;;;;;36177:9:0;;::::1;::::0;36200:15;;36092:1;36169:51;36092:1;36169:51;36200:15;36177:9;36169:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;36252:9:0::1;::::0;36244:50:::1;::::0;36151:69;;-1:-1:-1;;;;;;36252:9:0::1;::::0;36275:14;;36244:50:::1;::::0;;;36275:14;36252:9;36244:50:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36231:63;;;;;36305:49;36318:18;36338:15;36305:12;:49::i;:::-;36392:10;36368:21;:34;36365:629;;;36445:13;::::0;36418:24:::1;36499:43;:21;36445:13:::0;36499:25:::1;:43::i;:::-;36560:17;::::0;36473:69;;-1:-1:-1;36560:17:0;;::::1;;;:25;;36581:4;36560:25;36557:426;;;36644:5;36622:19;:15:::0;36640:1:::1;36622:19;:::i;:::-;:27;;;;:::i;:::-;36605:13;;:44;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;36668:18:0::1;::::0;-1:-1:-1;36729:5:0::1;36707:19;:15:::0;36725:1:::1;36707:19;:::i;:::-;:27;;;;:::i;:::-;36689:45;::::0;:15;:45:::1;:::i;:::-;36774:9;::::0;36766:46:::1;::::0;36668:66;;-1:-1:-1;;;;;;36774:9:0::1;::::0;36668:66;;36766:46:::1;::::0;;;36668:66;36774:9;36766:46:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36753:59;;;;;36586:242;36557:426;;;36929:9;::::0;36921:46:::1;::::0;36874:15;;-1:-1:-1;;;;;36929:9:0::1;::::0;36874:15;;36921:46:::1;::::0;;;36874:15;36929:9;36921:46:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;36908:59:0;;-1:-1:-1;;;36557:426:0::1;36403:591;;36365:629;-1:-1:-1::0;;22085:16:0;:24;;-1:-1:-1;;;;22085:24:0;;;-1:-1:-1;;;;;;;;35323:1678:0:o;1659:98::-;1717:7;1744:5;1748:1;1744;:5;:::i;38811:514::-;38956:16;;;38970:1;38956:16;;;;;;;;38932:21;;38956:16;;;;;;;;-1:-1:-1;;38993:11:0;;:18;;;-1:-1:-1;;;38993:18:0;;;;38932:40;;-1:-1:-1;;;;;;38993:11:0;;;;:16;;-1:-1:-1;38993:18:0;;;;;;;;;;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38983:4;38988:1;38983:7;;;;;;;;:::i;:::-;;;;;;:28;-1:-1:-1;;;;;38983:28:0;;;-1:-1:-1;;;;;38983:28:0;;;;;39040:4;39022;39027:1;39022:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;39022:23:0;;;:7;;;;;;;;;:23;39084:11;;39242:9;;39084:11;;;;:62;;39154:6;;39084:11;;39223:4;;39242:9;39282:24;:15;39302:3;39282:19;:24::i;:::-;39084:233;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37909:451;37956:15;;:20;:42;;;;-1:-1:-1;37980:13:0;;:18;37956:42;:64;;;;-1:-1:-1;38002:13:0;;:18;37956:64;:81;;;;-1:-1:-1;38024:8:0;;:13;37956:81;37952:94;;;37909:451::o;37952:94::-;38080:13;;;38056:21;:37;38128:13;;;38104:21;:37;38178:15;;;38152:23;:41;-1:-1:-1;38254:17:0;;;;38282:8;:12;;;38305:19;;;38335:17;37909:451::o;47357:788::-;47467:7;47462:28;;47476:14;:12;:14::i;:::-;-1:-1:-1;;;;;47505:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;47529:22:0;;;;;;:11;:22;;;;;;;;47528:23;47505:46;47501:597;;;47568:48;47590:6;47598:9;47609:6;47568:21;:48::i;:::-;47501:597;;;-1:-1:-1;;;;;47639:19:0;;;;;;:11;:19;;;;;;;;47638:20;:46;;;;-1:-1:-1;;;;;;47662:22:0;;;;;;:11;:22;;;;;;;;47638:46;47634:464;;;47701:46;47721:6;47729:9;47740:6;47701:19;:46::i;47634:464::-;-1:-1:-1;;;;;47770:19:0;;;;;;:11;:19;;;;;;;;47769:20;:47;;;;-1:-1:-1;;;;;;47794:22:0;;;;;;:11;:22;;;;;;;;47793:23;47769:47;47765:333;;;47833:44;47851:6;47859:9;47870:6;47833:17;:44::i;47765:333::-;-1:-1:-1;;;;;47899:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;47922:22:0;;;;;;:11;:22;;;;;;;;47899:45;47895:203;;;47961:48;47983:6;47991:9;48002:6;47961:21;:48::i;47895:203::-;48042:44;48060:6;48068:9;48079:6;48042:17;:44::i;:::-;48113:7;48108:29;;48122:15;38426:21;;38410:13;:37;38469:16;;38458:8;:27;38514:23;;38496:15;:41;38564:21;;38548:13;:37;38366:227;27941:556;28039:7;;27992;;;;-1:-1:-1;;;27992:7:0;28093:289;28117:9;:16;28113:20;;28093:289;;;28183:7;28159;:21;28167:9;28177:1;28167:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28167:12:0;28159:21;;;;;;;;;;;;;:31;;:66;;;28218:7;28194;:21;28202:9;28212:1;28202:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28202:12:0;28194:21;;;;;;;;;;;;;:31;28159:66;28155:97;;;-1:-1:-1;;28235:7:0;;;-1:-1:-1;;;19485:13:0;-1:-1:-1;27941:556:0;-1:-1:-1;;27941:556:0:o;28155:97::-;28277:34;28289:7;:21;28297:9;28307:1;28297:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28297:12:0;28289:21;;;;;;;;;;;;;28277:7;;:11;:34::i;:::-;28267:44;;28336:34;28348:7;:21;28356:9;28366:1;28356:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28356:12:0;28348:21;;;;;;;;;;;;;28336:7;;:11;:34::i;:::-;28326:44;-1:-1:-1;28135:3:0;;;;:::i;:::-;;;;28093:289;;;-1:-1:-1;28406:7:0;;:20;;-1:-1:-1;;;28406:11:0;:20::i;:::-;28396:7;:30;28392:61;;;-1:-1:-1;;28436:7:0;;;-1:-1:-1;;;19485:13:0;-1:-1:-1;27941:556:0;-1:-1:-1;27941:556:0:o;28392:61::-;28472:7;;28481;;-1:-1:-1;27941:556:0;-1:-1:-1;27941:556:0:o;27008:327::-;27067:7;27075;27083;27103:12;27118:24;27134:7;27118:15;:24::i;:::-;27103:39;;27153:18;27174:30;27196:7;27174:21;:30::i;:::-;27153:51;-1:-1:-1;27215:23:0;27241:33;27153:51;27241:17;:7;27253:4;27241:11;:17::i;:33::-;27215:59;27310:4;;-1:-1:-1;27316:10:0;;-1:-1:-1;27008:327:0;;-1:-1:-1;;;27008:327:0:o;27341:424::-;27453:7;;;;27507:24;:7;27519:11;27507;:24::i;:::-;27489:42;-1:-1:-1;27542:12:0;27557:21;:4;27566:11;27557:8;:21::i;:::-;27542:36;-1:-1:-1;27589:18:0;27610:27;:10;27625:11;27610:14;:27::i;:::-;27589:48;-1:-1:-1;27648:23:0;27674:33;27589:48;27674:17;:7;27686:4;27674:11;:17::i;:33::-;27726:7;;;;-1:-1:-1;27752:4:0;;-1:-1:-1;27341:424:0;;-1:-1:-1;;;;;;;27341:424:0:o;37007:487::-;37097:16;;;37111:1;37097:16;;;;;;;;37073:21;;37097:16;;;;;;;;;;-1:-1:-1;37097:16:0;37073:40;;37142:4;37124;37129:1;37124:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;37124:23:0;;;:7;;;;;;;;;;:23;;;;37168:11;;:18;;;-1:-1:-1;;;37168:18:0;;;;:11;;;;;:16;;:18;;;;;37124:7;;37168:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37158:4;37163:1;37158:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;37158:28:0;;;:7;;;;;;;;;:28;37229:11;;37197:58;;37214:4;;37229:11;37243;37197:8;:58::i;:::-;37266:11;;:220;;-1:-1:-1;;;37266:220:0;;-1:-1:-1;;;;;37266:11:0;;;;:62;;:220;;37343:11;;37266;;37413:4;;37440;;37460:15;;37266:220;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37062:432;37007:487;:::o;1763:98::-;1821:7;1848:5;1852:1;1848;:5;:::i;37500:403::-;37613:11;;37581:58;;37598:4;;-1:-1:-1;;;;;37613:11:0;37627;37581:8;:58::i;:::-;37650:11;;37850:4;;37650:245;;-1:-1:-1;;;37650:245:0;;37718:4;37650:245;;;4908:34:1;4958:18;;;4951:34;;;37650:11:0;5001:18:1;;;4994:34;;;5044:18;;;5037:34;-1:-1:-1;;;;;37850:4:0;;;5087:19:1;;;5080:44;37869:15:0;5140:19:1;;;5133:35;37650:11:0;;;:27;;37685:9;;4842:19:1;;37650:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;37500:403;;:::o;49414:650::-;49529:15;49559:23;49597:12;49624:23;49662:12;49689:18;49721:19;49732:7;49721:10;:19::i;:::-;-1:-1:-1;;;;;49769:15:0;;;;;;:7;:15;;;;;;49514:226;;-1:-1:-1;49514:226:0;;-1:-1:-1;49514:226:0;;-1:-1:-1;49514:226:0;-1:-1:-1;49514:226:0;-1:-1:-1;49514:226:0;-1:-1:-1;49769:28:0;;49789:7;49769:19;:28::i;:::-;-1:-1:-1;;;;;49751:15:0;;;;;;:7;:15;;;;;;;;:46;;;;49826:7;:15;;;;:28;;49846:7;49826:19;:28::i;:::-;-1:-1:-1;;;;;49808:15:0;;;;;;;:7;:15;;;;;;:46;;;;49886:18;;;;;;;:39;;49909:15;49886:22;:39::i;:::-;-1:-1:-1;;;;;49865:18:0;;;;;;:7;:18;;;;;:60;49936:26;49951:10;49936:14;:26::i;:::-;49973:23;49985:4;49991;49973:11;:23::i;:::-;50029:9;-1:-1:-1;;;;;50012:44:0;50021:6;-1:-1:-1;;;;;50012:44:0;;50040:15;50012:44;;;;15214:25:1;;15202:2;15187:18;;15068:177;50012:44:0;;;;;;;;49503:561;;;;;;49414:650;;;:::o;48746:662::-;48859:15;48889:23;48927:12;48954:23;48992:12;49019:18;49051:19;49062:7;49051:10;:19::i;:::-;-1:-1:-1;;;;;49099:15:0;;;;;;:7;:15;;;;;;48844:226;;-1:-1:-1;48844:226:0;;-1:-1:-1;48844:226:0;;-1:-1:-1;48844:226:0;-1:-1:-1;48844:226:0;-1:-1:-1;48844:226:0;-1:-1:-1;49099:28:0;;48844:226;49099:19;:28::i;:::-;-1:-1:-1;;;;;49081:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;49159:18;;;;;:7;:18;;;;;:39;;49182:15;49159:22;:39::i;:::-;-1:-1:-1;;;;;49138:18:0;;;;;;:7;:18;;;;;;;;:60;;;;49230:7;:18;;;;:39;;49253:15;49230:22;:39::i;48151:589::-;48262:15;48292:23;48330:12;48357:23;48395:12;48422:18;48454:19;48465:7;48454:10;:19::i;:::-;-1:-1:-1;;;;;48502:15:0;;;;;;:7;:15;;;;;;48247:226;;-1:-1:-1;48247:226:0;;-1:-1:-1;48247:226:0;;-1:-1:-1;48247:226:0;-1:-1:-1;48247:226:0;-1:-1:-1;48247:226:0;-1:-1:-1;48502:28:0;;48247:226;48502:19;:28::i;50070:721::-;50185:15;50215:23;50253:12;50280:23;50318:12;50345:18;50377:19;50388:7;50377:10;:19::i;:::-;-1:-1:-1;;;;;50425:15:0;;;;;;:7;:15;;;;;;50170:226;;-1:-1:-1;50170:226:0;;-1:-1:-1;50170:226:0;;-1:-1:-1;50170:226:0;-1:-1:-1;50170:226:0;-1:-1:-1;50170:226:0;-1:-1:-1;50425:28:0;;50445:7;50425:19;:28::i;:::-;-1:-1:-1;;;;;50407:15:0;;;;;;:7;:15;;;;;;;;:46;;;;50482:7;:15;;;;:28;;50502:7;50482:19;:28::i;29342:138::-;29406:7;29433:39;29466:5;29433:28;29445:15;;29433:7;:11;;:28;;;;:::i;29486:169::-;29556:7;29583:64;29641:5;29583:53;29627:8;;29611:13;;29595;;:29;;;;:::i;:::-;:40;;;;:::i;:::-;29583:7;;:11;:53::i;28503:833::-;19861:1;28569:15;;:22;28566:468;;;28650:7;;28632:15;;28619:28;;:10;:28;:::i;:::-;:38;;;;:::i;:::-;28607:8;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;28710:7:0;;28697:10;;28684:23;;:10;:23;:::i;:::-;:33;;;;:::i;:::-;28672:8;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;28776:7:0;;28758:15;;28745:28;;:10;:28;:::i;:::-;:38;;;;:::i;:::-;28732:9;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;28566:468:0;;-1:-1:-1;28566:468:0;;19901:1;28804:15;;:23;28801:233;;;28887:7;;28868:16;;28855:29;;:10;:29;:::i;:::-;:39;;;;:::i;:::-;28843:8;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;28948:7:0;;28934:11;;28921:24;;:10;:24;:::i;:::-;:34;;;;:::i;:::-;28909:8;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;29015:7:0;;28996:16;;28983:29;;:10;:29;:::i;:::-;:39;;;;:::i;:::-;28970:9;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;;28801:233:0;29044:19;29066:10;:8;:10::i;:::-;29044:32;-1:-1:-1;29087:18:0;29108:27;:10;29044:32;29108:14;:27::i;:::-;29187:4;29171:22;;;;:7;:22;;;;;;29087:48;;-1:-1:-1;29171:38:0;;29087:48;29171:26;:38::i;:::-;29162:4;29146:22;;;;:7;:22;;;;;;;;:63;;;;29224:11;:26;;;;;;29220:108;;;29306:4;29290:22;;;;:7;:22;;;;;;:38;;29317:10;29290:26;:38::i;:::-;29281:4;29265:22;;;;:7;:22;;;;;:63;29220:108;28555:781;;28503:833;:::o;26435:147::-;26513:7;;:17;;26525:4;26513:11;:17::i;:::-;26503:7;:27;26554:10;;:20;;26569:4;26554:14;:20::i;:::-;26541:10;:33;-1:-1:-1;;26435:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;179:247;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1609:6;1617;1670:2;1658:9;1649:7;1645:23;1641:32;1638:52;;;1686:1;1683;1676:12;1638:52;1725:9;1712:23;1744:31;1769:5;1744:31;:::i;:::-;1794:5;1846:2;1831:18;;;;1818:32;;-1:-1:-1;;;1541:315:1:o;1861:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2009:26;2025:9;2009:26;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;-1:-1:-1;2197:23:1;;2046:180;-1:-1:-1;2046:180:1:o;2231:184::-;2301:6;2354:2;2342:9;2333:7;2329:23;2325:32;2322:52;;;2370:1;2367;2360:12;2322:52;-1:-1:-1;2393:16:1;;2231:184;-1:-1:-1;2231:184:1:o;2420:248::-;2485:6;2493;2546:2;2534:9;2525:7;2521:23;2517:32;2514:52;;;2562:1;2559;2552:12;2514:52;2598:9;2585:23;2575:33;;2627:35;2658:2;2647:9;2643:18;2627:35;:::i;:::-;2617:45;;2420:248;;;;;:::o;2673:306::-;2761:6;2769;2777;2830:2;2818:9;2809:7;2805:23;2801:32;2798:52;;;2846:1;2843;2836:12;2798:52;2875:9;2869:16;2859:26;;2925:2;2914:9;2910:18;2904:25;2894:35;;2969:2;2958:9;2954:18;2948:25;2938:35;;2673:306;;;;;:::o;2984:385::-;3070:6;3078;3086;3094;3147:3;3135:9;3126:7;3122:23;3118:33;3115:53;;;3164:1;3161;3154:12;3115:53;-1:-1:-1;;3187:23:1;;;3257:2;3242:18;;3229:32;;-1:-1:-1;3308:2:1;3293:18;;3280:32;;3359:2;3344:18;3331:32;;-1:-1:-1;2984:385:1;-1:-1:-1;2984:385:1:o;3374:461::-;3427:3;3465:5;3459:12;3492:6;3487:3;3480:19;3518:4;3547:2;3542:3;3538:12;3531:19;;3584:2;3577:5;3573:14;3605:1;3615:195;3629:6;3626:1;3623:13;3615:195;;;3694:13;;-1:-1:-1;;;;;3690:39:1;3678:52;;3750:12;;;;3785:15;;;;3726:1;3644:9;3615:195;;;-1:-1:-1;3826:3:1;;3374:461;-1:-1:-1;;;;;3374:461:1:o;5606:518::-;5885:6;5874:9;5867:25;5928:3;5923:2;5912:9;5908:18;5901:31;5848:4;5949:57;6001:3;5990:9;5986:19;5978:6;5949:57;:::i;:::-;-1:-1:-1;;;;;6042:32:1;;;;6037:2;6022:18;;6015:60;-1:-1:-1;6106:2:1;6091:18;6084:34;5941:65;5606:518;-1:-1:-1;;5606:518:1:o;6129:597::-;6241:4;6270:2;6299;6288:9;6281:21;6331:6;6325:13;6374:6;6369:2;6358:9;6354:18;6347:34;6399:1;6409:140;6423:6;6420:1;6417:13;6409:140;;;6518:14;;;6514:23;;6508:30;6484:17;;;6503:2;6480:26;6473:66;6438:10;;6409:140;;;6567:6;6564:1;6561:13;6558:91;;;6637:1;6632:2;6623:6;6612:9;6608:22;6604:31;6597:42;6558:91;-1:-1:-1;6710:2:1;6689:15;-1:-1:-1;;6685:29:1;6670:45;;;;6717:2;6666:54;;6129:597;-1:-1:-1;;;6129:597:1:o;12357:401::-;12559:2;12541:21;;;12598:2;12578:18;;;12571:30;12637:34;12632:2;12617:18;;12610:62;-1:-1:-1;;;12703:2:1;12688:18;;12681:35;12748:3;12733:19;;12357:401::o;15250:582::-;15549:6;15538:9;15531:25;15592:6;15587:2;15576:9;15572:18;15565:34;15635:3;15630:2;15619:9;15615:18;15608:31;15512:4;15656:57;15708:3;15697:9;15693:19;15685:6;15656:57;:::i;:::-;-1:-1:-1;;;;;15749:32:1;;;;15744:2;15729:18;;15722:60;-1:-1:-1;15813:3:1;15798:19;15791:35;15648:65;15250:582;-1:-1:-1;;;15250:582:1:o;16026:128::-;16066:3;16097:1;16093:6;16090:1;16087:13;16084:39;;;16103:18;;:::i;:::-;-1:-1:-1;16139:9:1;;16026:128::o;16159:217::-;16199:1;16225;16215:132;;16269:10;16264:3;16260:20;16257:1;16250:31;16304:4;16301:1;16294:15;16332:4;16329:1;16322:15;16215:132;-1:-1:-1;16361:9:1;;16159:217::o;16381:168::-;16421:7;16487:1;16483;16479:6;16475:14;16472:1;16469:21;16464:1;16457:9;16450:17;16446:45;16443:71;;;16494:18;;:::i;:::-;-1:-1:-1;16534:9:1;;16381:168::o;16554:125::-;16594:4;16622:1;16619;16616:8;16613:34;;;16627:18;;:::i;:::-;-1:-1:-1;16664:9:1;;16554:125::o;16684:135::-;16723:3;-1:-1:-1;;16744:17:1;;16741:43;;;16764:18;;:::i;:::-;-1:-1:-1;16811:1:1;16800:13;;16684:135::o;16824:127::-;16885:10;16880:3;16876:20;16873:1;16866:31;16916:4;16913:1;16906:15;16940:4;16937:1;16930:15;16956:127;17017:10;17012:3;17008:20;17005:1;16998:31;17048:4;17045:1;17038:15;17072:4;17069:1;17062:15;17220:131;-1:-1:-1;;;;;17295:31:1;;17285:42;;17275:70;;17341:1;17338;17331:12;17275:70;17220:131;:::o
Swarm Source
ipfs://f4382909135980c2dc131d1601b948eedc8a90f1f1f75f269096325ff29731ea
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.